目 录 前 言... 1 paper51.com 一、JPEG压缩标准... 1 内容来自论文无忧网 www.paper51.com 1.1 JPEG压缩简介... 1 内容来自论文无忧网 www.paper51.com 1.2 JPEG压缩组成... 1 copyright paper51.com
二、JPEG算法的实现... 2 copyright paper51.com 2.1 JPEG算法概述... 2 paper51.com
2.2 离散余弦变换(DCT)... 3 内容来自www.paper51.com
2.3 量化... 4 copyright paper51.com 2.4 DC系数编码和AC系数的之字形编码... 4 paper51.com 2 、交流(AC)系数的之字形编码编码... 5 内容来自论文无忧网 www.paper51.com 2.5 熵编码... 6 内容来自www.paper51.com 2.5.1 熵编码简介... 6 内容来自www.paper51.com 2.5.2 哈夫曼编码... 6 内容来自www.paper51.com
2.5.3 DC码字和 AC行程码字的熵编码... 7 内容来自www.paper51.com 2.5.4 组成位数据流... 8 copyright paper51.com
2.6 JPEG处理例... 11 copyright paper51.com 三、JPEG 2000图像数据压缩... 12 内容来自www.paper51.com 3.1 JPEG 2000系统概述及特点... 12 内容来自www.paper51.com
3.2 小波变换... 12 内容来自论文无忧网 www.paper51.com
四、结 论... 13 paper51.com 附录一... 16 copyright paper51.com
paper51.com 前 言 copyright paper51.com 进入信息时代,人们将越来越来依靠计算机获取和利用信息,这使得多媒体处理迅速发展。多媒体数据处理已经成为工程学、计算机科学、信息科学、医学、刑事侦察、娱乐、视频会议等各学科和个领域的研究对象。在信息社会中,多媒体数据处理无论是在理论上还在实践上都存在着巨大的潜力。数字化后的图象、视频和音频等媒体信息具有数据海量性,与当前的硬件技术所提供的计算机存储资源和网络带宽之间有很大差距。大数据量的图象信息会给存储器的存储容量,通信干线信道的带宽,以及计算机的处理速度增加极大的压力。单纯靠增加存储器容量,提高信道带宽以及计算机的处理速度等方法来解决这个问题是不现实的,这时就要考虑压缩。 copyright paper51.com 压缩的理论基础是信息论。从信息论的角度来看,压缩就是去掉信息中的冗余,也就是用一种更接近信息本质的描述来代替原有冗余的描述。图像数据压缩要求满足一定的图像质量的条件下,用尽可能少的数据量表示图像。像二维图像、灰度图像、彩色图像、视频图像、音频、全运动视频数据这样的数字化对象的压缩技术已经标准化。这些压缩的对象通过LAN(局域网)和WAN(广域网)来存储、检索和传输,并在显示之前解压缩。 内容来自www.paper51.com 随着屏幕的增大和分辨率的提高,高分辨率图像要求越来越高。在实际中传输带宽是很宝贵的,所以压缩和解压缩技术非常重要。数字图像处理及数据压缩在社会各领域越来越显示出重要地位。 http://www.paper51.com JPEG图像压缩是一个使用范围广,压缩比高的静态图像数据压缩标准,可用于灰度图像和彩色图像,也可用于电视图像系列的帧内图像压缩。本小组主要研究JPEG图像压缩算法并对基于小波变换的JPEG2000静态图象压缩进行展望。 http://www.paper51.com 一、JPEG压缩标准 http://www.paper51.com 1.1 JPEG压缩简介 http://www.paper51.com JPEG是联合照片专家组(Joint Photographic ExpertsGroup)的英文缩写,其中“联合”的含义是指国际电信电报咨询委员会(ConsultativeCommittee of the International Telephone and Telegraph,CCITT)和国际标准化组织(International Standardization Organization,ISO)联合组成的一个图片专家小组。JPEG标准被命名为“ISO 10918-1”定义了静态数字图像数据压缩编码标准。JPEG是一个适用范围很广的静态图像数据压缩标准,既可用于灰度图像又可用于彩色图像,还适用于电视图像系列的帧内图像的压缩。图像压缩的目的在于以较少的数据来表示图像以节约存储费用,或者传输时间和费用。JPEG压缩算法可以用失真的压缩方式来处理图像,但失真的程度却是肉眼所无法辨认的。JPEG算法是国际上彩色、灰度、静止的第一个国际标准。它不仅适用静态图像压缩,也适用电视图像系列的帧内图像的压缩。 http://www.paper51.com
JPEG已经作为ISO标准公布,它分为两个部分: paper51.com
第一部分详细规定了操作模式、格式转换和这些模式的编码器/解码器(编码解码器)以及具体的实现指导。 http://www.paper51.com
第二部分描述了符合测试,符合测试可确定编码器或者解码器的实现是否符合第一部分的标准细则,以便确保与遵守JPEG标准的系统互操作性。 http://www.paper51.com 1.2 JPEG压缩组成 内容来自www.paper51.com 1、JPEG实际上定义了三种编码系统: 内容来自论文无忧网 www.paper51.com 其一,基于DCT的有损编码基本系统,适用于绝大多数压缩应用场合,叫做基本系统。 http://www.paper51.com 其二,用高压缩比、高清晰度或者渐进重建应用扩展编码系统,叫扩展系统。 http://www.paper51.com 其三,用于无失真应用场合的无损系统,叫做信息保持系统。 内容来自www.paper51.com 每个编码器必须实现一个必备的基本系统,基本系统必须合理地解压缩彩色图像,保持高压缩率,并能处理4bit/像素到16bit/像素的图像。 内容来自www.paper51.com 扩展系统包括了各种编码方式,如,可变长度编码、渐进编码,以及分层模式的编码。在此,所有的这些编码方法都是基本顺序编码的扩展。 内容来自www.paper51.com
特殊无损系统(也称为预测无损编码法)确保了图像在压缩,解压缩过程中没有造成初始图像(即图像的数字化形式)中任何细节的损失。 paper51.com 2、JPEG标准制定了四种工作模式: 内容来自论文无忧网 www.paper51.com
(1)顺序的基于DCT(SequentialDCT-based )模式 内容来自论文无忧网 www.paper51.com 由DCT(离散余弦变换)系数的形成、量化和熵编码三步组成。从左到右,从上到下扫描信号,为每个图像编码。 copyright paper51.com (2)累进的基于DCT(ProgressiveDCT-based)模式 内容来自论文无忧网 www.paper51.com
生成DCT系数和量化中的关键步骤与基本顺序编码解码器相同。主要的区别在于每个图像部件由多次扫描进行编码而不是仅一次扫描。每次继续的扫描都对图像作了改善,直到达到由量化表建立的图像质量为止。 内容来自www.paper51.com (3)无损(Lossless)模式 paper51.com 独立于DCT处理,用来定义一种达到无损连续色调压缩的手段。预测器将采样区域组合起来并基于采样区域预测出邻系统区域。预测出的区域对照着每一区域的完全无损采样进行预测,同时通过Huffman 编码法或算术熵编码法对这一差别进行无损编码,对较好质量的复制通常可达到2:1的压缩率。 http://www.paper51.com
(4)分层(Hierarchical)模式 http://www.paper51.com 分层模式提供了一种可实现多种分辨率的手段。每个接续层次上的图像编码在水平或垂直方向上的分辨率都被降低二倍。它所传送的数据包括所支持的最低分辨率图像,以及用于解码恢复到原有的全分辨率图像所需的、分辨率以2的倍数递降的相邻图像的差分信息。 paper51.com 本小组采用了第一种工作模式。 paper51.com 二、JPEG算法的实现 内容来自论文无忧网 www.paper51.com 2.1 JPEG算法概述 paper51.com JPEG压缩是通过利用人眼对亮度比对比颜色更敏感这一事实进行压缩,压缩方式用灰度信息分辨细节并允许彩色信息有损以获得更高压缩率。JPEG算法的平均压缩比为15:1 。当压缩比大于50倍时将可能出现方块效应。 内容来自www.paper51.com JPEG标准的基本系统的编码过程是:先将待编码的图像分割为8×8像素块,按照从左到右、从上到下的顺序扫描顺序。然后,利用DCT变换对8×8像素块计算,并对计算产生的64个系数进行量化,均匀量化表是依据心理视觉实验得出的。量化后,对块中的系数采用“之”字形排序,最后经过哈夫曼编码进行传输或者存储。 http://www.paper51.com JPEG压缩编码算法应用到的主要技术: 内容来自论文无忧网 www.paper51.com (1)颜色模式转换及采样 内容来自www.paper51.com (2)正向离散余弦变换(FDCT) copyright paper51.com
(3)量化(quantization) copyright paper51.com
(4)“之”字形编码(zigzag scan) copyright paper51.com (5)差分脉冲编码调制(differential pulse code modulation,DPCM) copyright paper51.com (6)行程长度编码(run-length encoding,RLE)对交流系数(AC)进行编码 内容来自www.paper51.com (7)熵编码(entropy coding) 内容来自www.paper51.com JPEG编码器的流程为: 内容来自www.paper51.com http://www.paper51.com 图2-1-1基于DCT的编码器处理步骤 内容来自www.paper51.com
解码器基本上为上述过程的逆过程: 内容来自www.paper51.com paper51.com 图2-1-2基于DCT的解码器处理步骤 内容来自论文无忧网 www.paper51.com 2.2 离散余弦变换(DCT) http://www.paper51.com 离散余弦变换(Discrete Cosine Transform,DCT)是一种与傅里叶变换紧密相关的数学运算。在傅里叶级数展开式中,如果被展开的函数是实偶函数,那么其傅里叶级数中包含余弦项,再将其离散化可导出余弦变换,所以称为离散余弦变换。DCT函数通过将数据从空间域变换为频率域来去出数据冗余度;量化器用加权函数量化DCT系数来产生对人眼优化的量化DCT系数;同时熵编码将量化DCT系数的熵最小化。 copyright paper51.com 离散余弦变换,在数字图像压缩编码技术中,DCT计算复杂度适中,又具有可分离性,还有快速算法等特点。 内容来自www.paper51.com
内容来自www.paper51.com
paper51.com
以灰度图像为列,首先将图像分解为8×8的像素块,由块的灰度值的8×8矩阵表示。对这个8×8像素块进行离散余弦变换,就产生了DCT系数。 copyright paper51.com DCT将8×8的像素块变换为频率域时,数值集中在矩阵左上角,即8×8像素块的图像通过DCT后,其低频分量,也就是大部分能量集中在左上角上数几个系数上,高频分量分布在右下角(DCT实际上是空间域的低通滤波器)。这些低频分量包含了图像的主要信息(如亮度),而高频在此看来,在要求不是很精确的压缩比下,高频显得不是很重要,所以我们在做压缩的时候可以忽略高频分量,从而实现压缩的过程。在压缩时要去掉高频分量,就要用量化,它是信息在压缩中损失的根源,也是压缩质量的关键。 copyright paper51.com 当我们删除一些远离DC系数较远的值,就会损失一些信息。但是在实际中,对于人眼能分辨的范围内的基本信息是没有丢失,换句话说,在通常情况下,人眼不能分辨或感觉不出丢失的信息,从而预期的实现了对图像的压缩。 paper51.com 2.3 量化 copyright paper51.com
量化是对经过正向DCT后的频率系数进行量化,即量化是一种降低整数精度,以便减少存储所需的位数,增加“0”值系数的数目,从而达到数据压缩的目的。量化的作用是在一定的主观保真度图像质量前提下,丢掉那些视觉效果影响不大的信息,不同频率的余弦函数对视觉影响不同,所以根据不同频率的视觉值来选择量化表中的元素大下。量化误差是图像质量下降的主要原因。 内容来自www.paper51.com 由于在JPEG压缩中,横轴是输入的待量化的DCT系数,纵轴是量化之后的DCT系数。量化步长是按照系数所在的位置和每种颜色分量的色调值来确定。DCT输出矩阵通过量化来减少系数精度,从而提高压缩率。在压缩工程中,删除了离DCT系数较远的值,即AC系数。因此,随着删除掉的AC系数的增多,DCT系数精度降低了。在JPEG压缩的目的就是以不超过达到期望图像质量所必须的精度来表示DCT系数。图2-3-1表示出量化特性。 内容来自论文无忧网 www.paper51.com
JPEG使用的颜色是YCrCb格式。Y分量代表了亮度信息,Cr、Cb分量代表了色差信息。在专家长期实验得到:人眼对亮度信号比色差信号更敏感,Y分量更重要一些。所以我们对Y分量采用细量化,对Cr、Cb采用粗量化,进一步提高压缩比。所以在JPEG中采用了两张量化表,一张是针对Y达的;一张是针对Cr、Cb的。这里的量化表尺寸为8×8象素,与64个DCT变换系数一一对应,其系数随DCT系数的位置和彩色分量不同有不同的值。 内容来自论文无忧网 www.paper51.com paper51.com 图 2-3-1 线性均匀标量量化器的特色曲线 copyright paper51.com 2.4 DC系数编码和AC系数的之字形编码 内容来自www.paper51.com 1、直流系数编码 paper51.com 量化后的系数要重新编排。因为经过DCT后,低频分量集中在左上角,其中F(0,0)(即第0行第0列元素)代表了直流(DC)系数,即8×8象素子块的平均值,要对它单独编码。由于两个相邻的8×8象素块的DC系数数值变化不大,DC系数有较强的相关性,根据这个特点,JPEG算法使用了差分脉冲调制编码(DPCM)技术,也就是说对相邻块之间的DC系数的差值DIFF=DC(i)- DC(i-1)进行编码,从而提高压缩比。编码用两个字节表示,前一个表示差值的位数,后一个表示差值的具体值。 内容来自www.paper51.com DCi-1 DCi http://www.paper51.com
内容来自www.paper51.com
● ● ● ● ● ● paper51.com 图2-4-1 差分DC编码 copyright paper51.com 2 、交流(AC)系数的之字形编码编码 copyright paper51.com
8×8的其他63个元素是交流(AC)系数,采用行程长度编码(RLE)。行程长度编码是最简单和最早开发的数据压缩方法,在这种方法中,一系列的重复值(如象素值)由一个单独的值和一个计数值代替。例如,字母表示的一串数据ddddfvvvvvssssss,可以用行程长度编码压缩为4d1f5v6s,压缩之前长度为16,压缩以后长度为8。这种方法很容易实现,而且在有长重复的串中很有效。所有连续相同的数值越多,行程长度编码越有效。 paper51.com 这里就出现了一个问题:JPEG中的63交流应该按照怎样的顺序排列,才能使得RLE最有效呢?换句话说,怎么排列才能使得连续相同的数值最多呢? 内容来自论文无忧网 www.paper51.com 经过量化的DCT系数中有大量的“0“系数,这些“0”系数集中在矩阵的右下角。为了增加连续的“0”系数的个数,JPEG中按照“之”字形(Zig-zag)的顺序对量化后的DCT系数进行编排。这样就把一个8×8的矩阵变成一个1×64的矢量,频率较低的系数放在矢量的前面,频率较高的系数放在后面,如图2-4-2所示。 内容来自论文无忧网 www.paper51.com DC AC01 AC06 AC07 paper51.com
http://www.paper51.com AC70 AC77 copyright paper51.com 图2-4-2 “之”字形扫描 copyright paper51.com 系数的排列顺序解决了,再来看一下排列好的系数如何用RLE编码。 copyright paper51.com 使用非常简单和直观的行程长度编码(RLE)对这63个AC系数进行编码,行程长度编码的码字用2字节表示。JPEG使用1个字节的高四位来表示连续“0”的个数,而使用它的低4位来表示编码下一个非“0”系数所需要的位数,跟在它后面的是量化AC系数的数值。这63个AC系数行程编码的码字用两个字节表示,如图2-4-3所示。 copyright paper51.com
内容来自论文无忧网 www.paper51.com
图2-4-3 AC系数行程编码 copyright paper51.com 2.5 熵编码 内容来自论文无忧网 www.paper51.com 2.5.1 熵编码简介 paper51.com 熵(entropy)最初是热力学中的术语,用来研究热和功。1948年信息论的创始人香农把熵的概念引入信息论中。信息论中的熵是消息不确定性的度量,消息是否发生的不确定性越大,它的熵越大;反之,熵越小。 paper51.com JPEG中处理的信源是图象,图象中含有自然冗余度,这些冗余度既来自于信源本身的相关性,又来自于信源概率分布的不均匀性,只要找到去除相关性或改变概率分布不均匀性的手段和方法,也就找到了信源熵编码的方法。因此,利用信息熵理论减少数据在传输和存储过程中的冗余度,就是信息熵编码要解决的问题。 内容来自论文无忧网 www.paper51.com 熵编码是无损编码,JPEG压缩算法使用了两种熵编码方法:哈夫曼编码和算术编码。在此我们用哈夫曼编码。哈夫曼编码Huffman方法于1952年问世, 迄今为止仍经久不衰, 广泛应用于各种数据压缩技术中, 且仍不失为熵编码中的最佳编码方法。 paper51.com 2.5.2 哈夫曼编码 内容来自www.paper51.com 哈夫曼(Huffman)编码是一种常用的压缩编码方法,是Huffman于1952年为压缩文本文件建立的。它的基本原理是频繁使用的数据用较短的代码代替,较少使用的数据用较长的代码代替,每个数据的代码各不相同。这些代码都是二进制码,且码的长度是可变的。举个例子:假设一个文件中出现了8种符号S0,S1,S2,S3,S4,S5,S6,S7,那么每种符号要编码,至少需要3比特。假设编码成000,001,010,011,100,101,110,111(称做码字)。那么符号序列S0S1S7S0S1S6S2S2S3S4S5S0S0S1编码后变成000001111000001110010010011100101000000001,共用了42比特。我们发现S0,S1,S2这三个符号出现的频率比较大,其它符号出现的频率比较小,如果我们采用一种编码方案使得S0,S1,S2的码字短,其它符号的码字长,这样就能够减少占用的比特数。例如,我们采用这样的编码方案:S0到S7的码字分别01,11,101,0000,0001,0010,0011,100,那么上述符号序列变成011110001110011101101000000010010010111,共用了39比特,尽管有些码字如S3,S4,S5,S6变长了(由3位变成4位),但使用频繁的几个码字如S0,S1变短了,所以实现了压缩。 paper51.com 上述的编码是如何得到的呢?随意乱写是不行的。编码必须保证不能出现一个码字和另一个的前几位相同的情况,比如说,如果S0的码字为01,S2的码字为011,那么当序列中出现011时,你不知道是S0的码字后面跟了个1,还是完整的一个S2的码字。我们给出的编码能够保证这一点。 paper51.com
|