量化系数输出DCT系数输入图2.7 均匀量化器
色度与亮度在图像的信息中是不相同的,图像信息的低频分量表示亮度,高频分量代表色度。要对图像数据进行量化,就需要分别对色度和亮度进行量化,即所用到的量化表是不同。
色度与亮度量化表如下所示:
表2-1 JPEG压缩色度和亮度量化表
亮度量化表 色度量化表 16 11 10 16 24 40 51 61 17 18 24 47 99 99 99 99 12 12 14 19 26 58 60 55 18 21 26 66 99 99 99 99 14 13 16 24 40 57 69 56 24 26 56 99 99 99 99 99 14 17 22 29 51 87 80 62 47 66 99 99 99 99 99 99 18 22 37 56 68 109 103 77 99 99 99 99 99 99 99 99 24 35 55 64 81 104 113 92 99 99 99 99 99 99 99 99 49 64 78 87 103 121 120 101 99 99 99 99 99 99 99 99 79 92 95 98 112 100 103 99 99 99 99 99 99 99 99 99
量化往往会导致误差,这是不可避免的。上表是科研人员经过大量图像测试后在综合各种情况下所得的结果,该表适用于实际情况下的大部分需求。由上表可知,右下角代表高频分量,它的量化值一般偏大,这样的目的在于将高频部分量化后让它的值尽量去接近于0,方便后期的处理。JPEG格式的灵活设计,让得它可以在图像质量和压缩比之间作取
10
舍。而它的方法也是甚为简单,只要改变量化值即可。在量化值放大一倍的情况下,DCT系数被量化为0的个数会增多,这样就可提高压缩比。
2.2.4 量化系数的处理
图像数据在经过DCT变换,它的低频分量总体趋于集中左上角,变换矩阵的首行首列元素即F(0,0)代表直流(DC)系数,物理意义表示8*8子块的均值,需要对之单独编码。因为一般上两个相邻8*8子块,它们的DC系数相差值是微小的,这样根据该特点可以采用差分编码(DPCM),该方法对提高压缩比有很好的效果,具体是对变换后相邻子块DC系数的差值进行编码。剩余8*8的 63个元素称之为交流(AC)系数,对该系数进行编码,我们采用的是行程编码。
量化后的系数要进行处理,即重新编排。旨在增加 “0”系数的个数,即是“0”的游程长度,处理它的方法是“Z”形编排。
所谓“Z“形编排,是因为图像数据在DCT变换后,图像的低频分量呈圆状辐射,在频谱图上可更为直观的表现为左上角向右下角衰减辐射,这种形状神似”Z”形,所以称之为“Z”字衰减。如果要将8*8系数矩阵转变成1*64的矢量数,只需我们将量化表中的量化系数按“Z”字扫描读数,就能很好的完成这一步。频率较低的系数会保留在矢量的顶部。DCT系数经过量化,它的编排如下:
DC值AC系数开始AC系数结束
图2.8 量化DCT系数的编排
量化DCT系数序号如下表示:
11
表2-2 量化DCT系数的序号
0 2 3 9 10 20 21 35
2.2.5 DC系数的编码
在每一个8×8子块的64个系数经过精心设计的量化表量化后,其量化值直流系数(DC)与交流系数(AC)不同而分两方面去处理。直流系数DC它的坐标是u=v=0,物理意义上即为64个像素平均值。图像块在经过DCT变换之后,得到DC直流系数往往拥有两个特性:一是系数值相比较而言是比较大,二是相邻8×8图像块的DC系数值变的差值却比较小。我们依据如此特点,JPEG算法则采用的是差分脉冲调制编码技术。
差分脉冲编码调制(DPCM,Differential Pulse Code Modulation),它是对模拟信号的一种有效的编码模式。首先利用前一个抽样值来计算一个预测值,将这两个值的差值作编码用。这个差值我们称之为预测误差。抽样值与预测值由于它们的相关性相对较强,这往往导致在数值的大小上会非常接近,又因为抽样值变化的可能取值范围比预测误差范围大,如此我们可用较少的编码比特对预测误差而进行编码,自认而然的降低了比特率。此方法是利用减小冗余度,从而为降低编码比特率带来可能。
1 4 8 11 19 22 34 36 5 7 12 18 23 33 37 48 6 13 17 24 32 38 47 49 14 16 25 31 39 46 50 57 15 26 30 40 45 51 56 58 27 29 41 44 52 55 59 62 28 42 43 53 54 60 61 63 12
2.2.6 AC系数的编码
AC系数量化的特性有1× 64矢量里带有较多的“0”系数,同时“0”系数的出现是相继出现,因此可以利用简单而直观的游程编码(RLE)就可以对它们进行相应的编码。
行程编码亦叫游程编码,通常使用RLE(Run-Length Encoding)表示。RLE技术所拥有的特性之一是直观和经济,它的运算也是非常简单,这些特性也决定了它的解压缩速度同样是非常快速。计算机生成的图形图像对于使用RLE压缩编码是相当契合,这对于计算机存储容量的减少具有明显是效果。
每一小块的AC系数总共有63个,采用行程编码方式对AC系数编码的格式如下图示。系数表示为AC01至AC63,这63个AC系数里面含有一些零值,也有某些歌非零值,找到它的非零值,利用(NN/SS)VV的形式表示出来,其中:AC值前的0的个数用NN来表示。而SS、VV、和DC的定义是相同的。当有15个以上的连续的非0值时,就需要增加一个扩展字节进行匹配:即(15/0)所代表连续16个0。若有AC63的值均为0,则以(0/0)代表结束。
65432107654321两个非零值之间的连续零的个数下一个非零值所占的比特数下一个非零系数的实际值
图2.9 AC编码格式
AC系数包含两个符号:符号1表示为行程和尺寸,上面的(RunLength,Size)。(0,0)和(15,0)是特殊情况。(0,0)代表的是块结束标志(EOB),符号2为幅度值(Amplitude)。
DC系数也是有两个符号:符号1代表Size;符号2代表Amplitude 。
2.2.7 位数据流
JPEG编码的最后是把各种标记代码、编码后的图像数据组成一帧一帧的数据,这样做旨在方便传输、存储和译码器进行译码,这些数据称为JPEG位数据流(JPEG bit stream)。
以下面表的系数为例说明上述的位数据流。
13
相关推荐: