JPEG的压缩原理

上传人:ni****g 文档编号:564790264 上传时间:2023-09-27 格式:DOC 页数:8 大小:125KB
返回 下载 相关 举报
JPEG的压缩原理_第1页
第1页 / 共8页
JPEG的压缩原理_第2页
第2页 / 共8页
JPEG的压缩原理_第3页
第3页 / 共8页
JPEG的压缩原理_第4页
第4页 / 共8页
JPEG的压缩原理_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《JPEG的压缩原理》由会员分享,可在线阅读,更多相关《JPEG的压缩原理(8页珍藏版)》请在金锄头文库上搜索。

1、1. JPEG的压缩原理JPEG的压缩原理其实上面介绍的那些原理的综合,博采众家之长,这也正是JPEG有高压缩比的原因。其编码器的流程为:图9.3 JPEG编码器流程解码器基本上为上述过程的逆过程:图9.4 解码器流程88的图象经过DCT变换后,其低频分量都集中在左上角,高频分量分布在右下角(DCT变换实际上是空间域的低通滤波器)。由于该低频分量包含了图象的主要信息(如亮度),而高频与之相比,就不那么重要了,所以我们可以忽略高频分量,从而达到压缩的目的。如何将高频分量去掉,这就要用到量化,它是产生信息损失的根源。这里的量化操作,就是将某一个值除以量化表中对应的值。由于量化表左上角的值较小,右上

2、角的值较大,这样就起到了保持低频分量,抑制高频分量的目的。JPEG使用的颜色是YUV格式。我们提到过,Y分量代表了亮度信息,UV分量代表了色差信息。相比而言,Y分量更重要一些。我们可以对Y采用细量化,对UV采用粗量化,可进一步提高压缩比。所以上面所说的量化表通常有两张,一张是针对Y的;一张是针对UV的。上面讲了,经过DCT变换后,低频分量集中在左上角,其中F(0,0)(即第一行第一列元素)代表了直流(DC)系数,即88子块的平均值,要对它单独编码。由于两个相邻的88子块的DC系数相差很小,所以对它们采用差分编码DPCM,可以提高压缩比,也就是说对相邻的子块DC系数的差值进行编码。88的其它63

3、个元素是交流(AC)系数,采用行程编码。这里出现一个问题:这63个系数应该按照怎么样的顺序排列?为了保证低频分量先出现,高频分量后出现,以增加行程中连续“0”的个数,这63个元素采用了“之”字型(Zig-Zag)的排列方法,如图9.5所示。图9.5 Zig-Zag这63个AC系数行程编码的码字用两个字节表示,如图9.6所示。图9.6 行程编码上面,我们得到了DC码字和 AC行程码字。为了进一步提高压缩比,需要对其再进行熵编码,这里选用Huffman编码,分成两步:(1)熵编码的中间格式表示对于AC系数,有两个符号。符号1为行程和尺寸,即上面的(RunLength,Size)。(0,0)和(15

4、,0)是两个比较特殊的情况。(0,0)表示块结束标志(EOB),(15,0)表示ZRL,当行程长度超过15时,用增加ZRL的个数来解决,所以最多有三个ZRL(316+15=63)。符号2为幅度值(Amplitude)。对于DC系数,也有两个符号。符号1为尺寸(Size);符号2为幅度值(Amplitude)。(2)熵编码对于AC系数,符号1和符号2分别进行编码。零行程长度超过15个时,有一个符号(15,0),块结束时只有一个符号(0,0)。对符号1进行Hufffman编码(亮度,色差的Huffman码表不同)。对符号2进行变长整数VLI编码。举例来说:Size=6时,Amplitude的范围是

5、-63-32,以及3263,对绝对值相同,符号相反的码字之间为反码关系。所以AC系数为32的码字为100000,33的码字为100001,-32的码字为011111,-33的码字为011110。符号2的码字紧接于符号1的码字之后。对于DC系数,Y和UV的Huffman码表也不同。掉了这么半天的书包,你可能已经晕了,呵呵。举个例子来说明上述过程就容易明白了。下面为88的亮度(Y)图象子块经过量化后的系数。15 0 -1 0 0 0 0 0-2 -1 0 0 0 0 0 0-1 -1 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00

6、 0 0 0 0 0 0 00 0 0 0 0 0 0 0可见量化后只有左上角的几个点(低频分量)不为零,这样采用行程编码就很有效。第一步,熵编码的中间格式表示:先看DC系数。假设前一个88子块DC系数的量化值为12,则本块DC系数与它的差为3,根据下表Size Amplitude0 01 1,12 3,-2,2,33 7-4,474 15-8,8155 31-16,16316 63-32,32637 127-64,641278 255-128,1282559 511-256,25651110 1023512,512102311 2047-1024,10242047查表得Size=2,Ampl

7、itude=3,所以DC中间格式为(2)(3)。下面对AC系数编码。经过Zig-Zag扫描后,遇到的第一个非零系数为-2,其中遇到零的个数为1(即RunLength),根据下面这张AC系数表:Size Amplitude1 1,12 3,-2,2,33 7-4,474 15-8,8155 31-16,16316 63-32,32637 127-64,641278 255-128,1282559 511-256,25651110 1023512,5121023查表得Size=2。所以RunLength=1,Size=2,Amplitude=3,所以AC中间格式为(1,2)(-2)。其余的点类似,

8、可以求得这个88子块熵编码的中间格式为(DC)(2)(3),(1,2)(-2),(0,1)(-1),(0,1)(-1),(0,1)(-1),(2,1)(-1),(EOB)(0,0)第二步,熵编码:对于(2)(3):2查DC亮度Huffman表得到11,3经过VLI编码为011;对于(1,2)(-2):(1,2)查AC亮度Huffman表得到11011,-2是2的反码,为01;对于(0,1)(-1):(0,1)查AC亮度Huffman表得到00,-1是1的反码,为0;最后,这一88子块亮度信息压缩后的数据流为11011, 1101101, 000, 000, 000, 111000,1010。总

9、共31比特,其压缩比是648/31=16.5,大约每个象素用半个比特。可以想见,压缩比和图象质量是呈反比的,以下是压缩效率与图象质量之间的大致关系,可以根据你的需要,选择合适的压缩比。表9.1 压缩比与图象质量的关系压缩效率(单位:bits/pixel)图象质量0.250.50中好,可满足某些应用0.500.75好很好,满足多数应用0.751.5极好,满足大多数应用1.52.0与原始图象几乎一样以上我们介绍了JPEG压缩的原理,其中DC系数使用了预测编码DPCM,AC系数使用了变换编码DCT,二者都使用了熵编码Huffman,可见几乎所有传统的压缩方法在这里都用到了。这几种方法的结合正是产生J

10、PEG高压缩比的原因。顺便说一下,该标准是JPEG小组从很多种不同中方案中比较测试得到的,并非空穴来风。上面介绍了JPEG压缩的基本原理,下面介绍一下JPEG的文件格式。2. JPEG的文件格式JPEG文件大体上可以分成以下两个部分:标记码(Tag)加压缩数据。先介绍标记码部分。标记码部分给出了JPEG图象的所有信息(有点类似于BMP中的头信息,但要复杂的多),如图象的宽、高、Huffman表、量化表等等。标记码有很多,但绝大多数的JPEG文件只包含几种。标记码的结构为:SOIDQT DRI SOF0 DHT SOS EOI标记码由两个字节组成,高字节为0XFF,每个标记码之前可以填上个数不限的填充字节0XFF。下面介绍一些常用的标记码的结构及其含义。(1)SOI(Start of Image)标记结构 字节数0XFF 10XD8 1可作为JPEG格式的判据(JFIF还需要APP0的配合)(2)APP0(Application)标记结构 字节数 意义0XFF 10XE0 1Lp 2 APP0标记码长度,不包括前两个字节0XFF,0XE0Identifier 5 JFIF识别码 0X4A,0X46,0X49,0X46,0X00Version 2 JFIF版本号 可为0X0101或者0X0102Units

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号