基于DCT变换的JPEG图像压缩原理与JPEG2000编解码原理

目录

参考文章

https://blog.csdn.net/lxj_bsplee/article/details/53215077
https://blog.csdn.net/ytang_/article/details/76571635

基于DCT变换的JPEG图像压缩原理

图像数据压缩

数字图像需要大量数据来表示,因此必须对其进行数据压缩。但在压缩的过程中,也会对传输介质、传输方法和存储介质等提出较高要求。常用的图像数据压缩方法主要有哈夫曼编码、行程编码、算术编码、离散余弦变换编码以及混合编码等,今天我们做的就是其中的一种,离散余弦变换编码

图像处理

图像处理,是指将一幅图像变为另外一幅经过修改的图像,是一个图像到图像的过程。一般图像处理技术分为两类:模拟方式与数字方式。如今普遍采用数字图像处理,包括以下内容:图像复原、图像压缩、图像重建、模式识别等。图像压缩的首要目的就是压缩数据量,提高有效性。

为什么可以进行图像压缩?

因为图像数据具有可压缩性,有大量的所谓统计性质的多余度,从而产生生理视觉上的多余度,去掉这部分图像数据并不影响视觉上的图像质量,甚至去掉一些图像细节对于实际图像的质量也无致命的影响。正因为如此,可以在允许保真度的条件下压缩待存储的图像数据。
###小结
图像压缩是图像处理的一种方式,同时DCT变换是图像压缩的一种方式,因为图像数据具有冗余性,所以进行图像渊薮之后是不会影响视觉效果的,跟原图没有什么太大区别。
下面介绍一种比较常见的编码方式,huffman编码。

颜色空间转换

颜色空间:是针对不同行业而用途来衡量同一个颜色对象

RGB

扫描仪器和显示设备,计算机系统,随着互联网的兴起,这也是我们日常接触较多的一种方式。

CMY

打印机,印刷出版

HSV/HSI/HSB/HSL

图像处理和计算机视觉

YUV/YCbCr

YCbCr或Y’CbCr有的时候会被写作:YCBCR或是Y’CBCR,是色彩空间的一种,通常会用于影片中的影像连续处理,或是数字摄影系统中。Y’为颜色的亮度(luma)成分、而CB和CR则为蓝色和红色的浓度偏移量成份。Y’和Y是不同的,而Y就是所谓的亮度(luminance),表示光的浓度且为非线性,使用伽马修正(gamma correction)编码处理

JPEG 采用YCbCr或者RGB

YCbCr与RGB的相互转换

Y = 0.257R+0.504G+0.098B+16
Cb = -0.148
R-0.291G+0.439B+128
Cr = 0.439R-0.368G-0.071B+128
R = 1.164
(Y-16)+1.596*(Cr-128)
G = 1.164*(Y-16)-0.392*(Cb-128)-0.813*(Cr-128)
B = 1.164*(Y-16)+2.017*(Cb-128)

分块

后续的DCT变换是基于88像素块的,因为图像的分辨率长宽不一定是8的倍数,怎么办呢?对其边缘补成8的倍数,然后进行分块,然后对每个像素点减去2^p(p为采样精度在采样的时候我们对Y采样多于Cb,Cy,因为研究显示人类对于Y的敏感度大于其他两个变量)。这样像素点的值就从正变成了正或者负。
这样一个8
8的像素块就被分成了三张表格,分别是Y,Cb,Cy

离散余弦变换

当分块为8*8的时候,
DCT
基于DCT变换的JPEG图像压缩原理与JPEG2000编解码原理
IDCT
基于DCT变换的JPEG图像压缩原理与JPEG2000编解码原理

基于DCT变换的JPEG图像压缩原理与JPEG2000编解码原理

正交变换

正交变换不会对图形进行拉伸、压缩,它能够使变换后的图形保持原来图形的几何形状,如下图所示,ABC构成的空间正交变换到A’B’C’,其大小和形状都不会改变。

基于DCT变换的JPEG图像压缩原理与JPEG2000编解码原理
上面的正交变换是从变换的结果来进行直观的解释,可以看到这种变换拥有良好的性质——能够保持空间的不变性,保证不会对原空间产生压缩拉伸,往深了说,就是这种变换不会损失信息,因为它保持了原空间的内部结构,这在工程上是很有用的。
二维DCT变换是一种正交变换??

Z字形扫描

经过DCT变换之后,数据变少了,因为抛弃了高频信息,所有矩阵中数据表示的像素点可能是不相邻的,这样每一行的结尾点和下一行的开始点不米奇额,所以就使用Z字形扫描使得在数列里面相邻的点在图片上也是相邻的。

量化

为了进一步提高压缩比,对于不同分辨率的部分采用不用的量化处理,因为Y分量相比Cr,CB分量对于人眼更加重要,所以对Y进行细量化,对Cb,Cr采用粗量化。

JPEG2000的压缩原理

在JPEG2000中用到了DWT,在JPEG2000中不需要将图像强制分为8*8的小块,但是为了降低内存的需求和方便压缩域可以将图像分割为不重叠的矩阵块,分块会对图像的质量有影响,所以应该分块大一点。

有损压缩

采用整数小波变换

无损压缩

采用实数型小波变换

上一篇:YUV与RGB互转各种公式


下一篇:LeetCode 128. 最长连续序列(哈希)