Chapter_8 Image Compression
图像压缩为了减少以下三种冗余的影响:
Coding redundancy 编码冗余 ---采取合适的编码方式,如Huffman Coding 霍夫曼编码
Spatial and temporal redundancy 空间和时间冗余 ---采取映射变换的方式,如利用行程长度或者相邻元素之间的差距来表示
Irrelevant information 无关信息 ---采取量化的方式,去除一定量的无关信息
JPEG is a common standard for Continuous-Tone Still Images(连续色调静止图像). Its lossy(有损) baseline coding system uses quantized discrete cosine transforms(DCT) on 8*8 images blocks, Huffman(霍夫曼编码), and **run-length coding(游程编码) **
霍夫曼编码 Huffman Coding
使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现概率的方法得到的,出现概率高的字母使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。
Run-Length Coding 游程编码(RLE)
使用变动长度的码来取代连续重复出现的原始资料,压缩二值图像时,游程编码特别有效。
Block Transform Coding 块变换编码
把图像分成大小相等且不重叠的小块,用一种可逆线性变换把每个块或子图映射为变换系数的集合,然后对这些变换系数进行量化和编码。
考虑大小为n*n的子图像g(x,y),其离散变换T(u,v)可以表示成:
给定T(u,v),可以用离散反变换得到g(x,y):
r(x,y,u,v) and s(x,y,u,v) are called the forward(正变换核) and inverse transformation kernels(反变换核),respectively.They also referred to as basis functions(基函数) or basis images(基图像).
The T(u,v) for u,v=0,1,2,...,n-1 are called transform coefficients(变换系数).
图像压缩中最常用的一种变换是DCT(离散余弦变换):
DCT的信息携带能力比DFT和WHT的信息携带能力强,在信息携带方面的最佳变换是Karhunen-Loeve变换,对于任何输入图像和任何数量的保留系数,KLT都可以使子图像和近似图像之间的均方误差最小。然而由于KLT是依赖数据的,所以为每幅图像得到KLT基图像的计算量十分巨大,因此很少用KLT来压缩图像。通常使用像DFT、WHT、DCT这样具有固定(与输入图像无关)基图像的变换。正弦变换(DFT or DCT)的信息携带能力更接近最佳KLT的信息携带能力。(一阶马尔科夫图像源的KLT基图像与DCT的基图像非常相似,由于相邻像素间的相关接近1,所以输入相关的KLT基图像就变得与输入无关的DCT基图像相同)因此多数变换编码系统都基于DCT,DCT在信息携带能力和计算复杂性之间取得了良好的折中。
与其他输入独立的变换相比,DCT用单片集成电路就可以实现,可将最多的信息装入最少的系数中,并且在子图像间的边界变的可见时,可使出现的称为块缺陷的块效应最小化,解释如下:
图a中DFT隐含的n点周期性造引起了边界的不连续性,造成了图像高频的变换。当DFT变换系数被截断或者量化时,Gibbs现象会导致边界点出现错误的值,这些错误的值在图像中以块效应的形式出现。图b中DCT减少了这种效应,这种变换隐含的2n点周期性本质上不会产生边界不连续。
子图像尺寸的选择
在n取8或者16时,均方根误差较小。(b图中有明显的块效应)
量化 Quantization
JPEG使用的是均匀量化
以JPEG过程为例详细梳理一遍压缩过程:
1、色彩空间转换。从RGB空间转换到YCbCr空间,Y为颜色的亮度成分、而Cb和Cr则为蓝色和红色的浓度偏移量成分。
2、缩减取样(Downsampling)。减少Cb和Cr的成分(称为"缩减取样"或"色度抽样"chroma subsampling)。在JPEG上这种缩减取样的比例可以是4:4:4(无缩减取样),4:2:2(在水平方向2的倍数中取一个),以及最普遍的4:2:0(在水平和垂直方向2的倍数中取一个)。
3、离散余弦变换。Y、Cb、Cr三个区域,每个区域划分成8*8的子区域,对于每一个子区域,其64个像素通过减去2k-1
进行灰度级移动,其中2k
是灰度级的最大数,然后对该块进行DCT,得到变换后的矩阵。
左上角之相当大的数值称为DC系数,其他的63个值称为AC系数,下面将对所有8×8表格中的DC系数使用差分编码,对AC系数使用游程编码。
4、量化。人类眼睛在一个相对大范围区域,辨别亮度上细微差异是相当的好,但是在一个高频率亮度变动之确切强度的分辨上,却不是如此地好。这个事实让我们能在高频率成分上极佳地降低信息的数量。简单地把频率领域上每个成分,除以一个对于该成分的常数就可完成,且接着舍位取最接近的整数。这是整个过程中的主要有损运算。以这个结果而言,经常会把很多更高频率的成分舍位成为接近0,且剩下很多会变成小的正或负数。使用JPEG标准阵列量化后,结果如下:
5、熵编码技术(entropy coding)。熵编码是无损数据压缩的一个特别形式。它牵涉到将视频成分以Z字体(zigzag)排列,把相似频率组群在一起(矩阵中往左上方向是越低频率之系数,往右下较方向是较高频率之系数),插入长度编码的零,且接着对剩下的使用霍夫曼编码。(当剩下的所有系数都是零,对于过早结束的序列,JPEG有一个特别的霍夫曼编码用词。使用这个特殊的编码用词,EOB)
Predictive Coding 预测编码
无损预测编码
通过消除相邻像素在空间和时间上的冗余来实现,仅对每个像素中的新信息进行提取和编码,一个像素的新信息指该像素实际值与预测值之间的差。
预测是由前m个样值线性组合而成,即:
其中,m是线性预测器的阶,round表示四舍五入的操作,αi
是预测系数。
用于预测每个像素值的m个样本来自当前扫描行称为一维线性预测编码;来自当前行和前几个扫描行称为二维线性预测编码;来自当前图像和前几帧图像称为三维线性预测编码。
有损预测编码
最佳预测器,差分脉冲编码调制(DPCM)
最佳量化,Max-LIoyd Optimal Quantizer Max-Lloyd最优量化器