图像压缩的基本理论起源于20世纪40年代末香农(Shannon)的信息理论。香农定理表明,在不产生任何失真的前提下,通过合理的编码,对于每一个信源符号分配不等长的码字可以任意接近于信源的熵。在这个前提下出现了几种不同的无失真信源编码方法,如huffman编码、算术编码、词典编码等,这些方法可以应用于一幅数字图像,能获得一定的码率压缩。但是无失真压缩是很有限的,对较复杂的自然图像,压缩率一般不超过两倍。
本章从实践角度出发,首先介绍图像压缩的基本方法以及在工程实践中的压缩标准;其次,介绍有关MATLAB小波工具箱中的压缩函数,并且将不惜篇幅地列举压缩的算例供读者参考;最后,介绍利用小波分析进行图像压缩的综合实例。
学习目标:
(1)了解小波压缩的原理和方法
(2)熟练掌握MATLAB中小波压缩函数
(3)熟练掌握二维小波工具箱对图像压缩
14.1 图像压缩介绍
与图像去噪相似,压缩领域中由于小波的特殊优点,应用其进行压缩也受到了许多学者的重视,并获得了非常好的效果。
14.1.1 数据冗余
图像压缩所要解决的问题是尽可能减少表示数字图像需要的数据量。减少数据量的基本原理是除去其中的多余数据。以数学的观点来看,这一过程实际上就是将二维像素阵列变换为一个在统计上没有关联的数据集合。
这种变换在图像存储或者传输之前进行,在以后的某个时候,再对压缩图像进行解压来重构原图像或原图像的近似图像。
数据是用来表示信息的,如果不同的方法为表示给定量的信息使用了不同的数据量,那么使用较多数据量的方法中,有些数据必然是代表了无用的信息,或者是重复地表示了其他数据已经表示了的信息,这就是数据冗余的概念,它是数据压缩中的关键。
在数字图像压缩中,有3种基本的数据冗余:
(1)编码冗余;
(2)像素间冗余;
(3)心理视觉冗余。
如果能够减少或者消除其中的一种或者多种冗余,就能取得数据压缩的效果。
1.编码冗余
对图像编码需要建立码本以表达图像数据。这里的码本是指用来表达一定量的信息或者一组事件所需的一系列的符号(如字母、数字等)。其中对每个信息或时间所赋的码符号序列称为码字,而每个码字的符号个数称为码字长度。
我们以一幅256×256的8位灰度图为例:其每个像素的灰度值在0~255之间,设k表示0~255之间的灰度值,Nk表示灰度值为k的像素总个数,N为图像的总像素数,P(k)表示像素灰度值为k的像素出现的概率:P (k)=N (k)/N,k∈[0,255]。
设用来表示灰度值k的每个数值的比特数是L(k),那么为表示每个像素所需的平均比特数是:
最简单的二元码本成为自然码。对每个信息或事件所赋的码是从2m
个m bit的二元码中选出来的一个。如果用自然码表示一幅图像的灰度值,则由上式得出平均码长为m。
根据上式,如果用较小的比特数表示出现概率较大的灰度级,而用较多的比特数表示出现概率较小的灰度级,就能达到数据压缩的效果。这种压缩常称为变长码。如果编码所用的码本不能使式达到最小,则说明存在编码冗余。
一般来说,如果编码时没有充分利用编码对象的概率特性就会产生编码冗余。
2.像素间冗余
在图像中,像素间的冗余通常称为空间冗余或者几何冗余。各像素之间的值可以比较方便地由其临近的像素表示出来,每个独立的像素所携带的信息相对较少。换句话说,单个像素对图像的视觉贡献有很多是冗余的,因为常能用基于其临近像素的值来推断。
为了减少图像中的像素冗余,需要将常用的2D像素矩阵表达式转换为某种更有效(但可能不直观)的表达形式。这种减少像素间冗余的转换常称为映射。如果原始图像元素能从转换后的数据集合重建出来,则这种映射称为可反转的,否则就称为不可反转的。
3.心理视觉冗余
眼睛所感受到的图像区域亮度不仅仅与区域的反射光有关,例如马赫带效应,在灰度值为常数的区域也能感觉到灰度值的变化。这种现象的产生是由于眼睛并不是对所有视觉信息有相同的灵敏度。有些信息在通常的视觉过程中与另外一些信息相比来说并不是那么重要,这些信息可以认为是心理视觉冗余的,去除这些信息并不会明显地降低所感受到的图像质量。许多称为“第二代编码技术”的方法就是基于这个原理的。
心理视觉冗余的存在是与人观察图像的方式有关的。人在观察图像时主要是寻找某些比较明显的特征,而不是定量的分析图像中每个像素的亮度,或至少不是对每个像素等同的分析。人通过在脑子里分析这些特征并与先验知识结合以完成对图像的解释过程。由于每个人所具有的先验知识不同,对同一幅图的心理视觉冗余也是因人而异。
心理视觉冗余从本质上说与前两种冗余不同,它是与实在的视觉信息联系着的。只有在这些信息对正常的视觉来说并不是必不可少的时候才可能被去除。因为去除心理的视觉冗余数据能导致定量信息有损失,所以量化是不可逆转操作,它用于数据压缩会导致有损压缩。根据心理视觉冗余的特点,可以采取一些有效的措施来压缩数据量,电视中的隔行扫描就是一个例子。
14.1.2 变换编码
由上一小节所描述的图像数据存在很多冗余,但是如果直接在空域直接处理比较困难,通常通过变换将图像数据从空域变换到变换域,对变换域进行处理。
对变换的要求通常是要将强相关的空间域的数据映射到完全不相关的、能量分布集中的变换系数矩阵,占少数的大的变换系数代表了图像的最主要的能量成分,占多数的小的变换系数表示了一些不重要的细节分量。同时变换要能够容易的与人们关于人类视觉系统的知识相结合,以有效地取出视觉冗余,尽可能地保留重要视觉信息。
具备最理想的去相关和能量集中紧致性最强的变换是KL变换,但是KL变换的复杂性使得其应用不现实。由于DCT变换能够很好地逼近KL变换,同时运算比较简单,因此DCT广泛地应用于图像压缩,一直成为变换编码的主要工具,例如JPEG标准就是采用的DCT变换。
20世纪80年代后期,小波变换的发展提供了一种新的变换工具,小波变换能够适应现代图像压缩所需要的如多分辨率、多层质量控制等要求,在较大压缩比下,小波图像压缩质量明显好于DCT变换,因此在新的JPEG 2000标准中也采用了小波变换作为核心算法。
14.1.3 图像压缩模型
现在我们来介绍一个通用的图像压缩编码模型,如图14-1所示。
图14-1 通用压缩编码模型
图像压缩目的是减少或消除图像中的编码冗余、像素间冗余及心理视觉冗余。在图像压缩系统中,映射器将输入数据变换以减少像素间冗余。这个操作一般是可以逆转的,它可以直接减少也可以不直接减少图像数据,这与具体编码技术有关。变换编码中的变换算法就是一种映射器,通过某种数学变换将图像数据从一个域转换至另一个域,以使图像从复杂的表示变成一种更简单的或者说是具有更好统计特性的表示,减少数据的相关性。
量化器根据给定的保真度准则减少映射器输出的精确度。这个操作可以减少心理视觉冗余,但是不可反转,所以不可用在无损压缩中。符号编码器产生表达量化器输出的码本,并根据码本映射输出。一般情况下采用变长码来表达映射和量化后的数据。它通过将最短的码赋给最频繁出现的输出值以减少编码冗余。这个操作是可以反转的。
需要指出的是,不是所有的图像压缩编码器都一定包含以上 3个子模块。例如无失真信源编码器就不能有量化器,另外有些压缩技术常把上述物理上可分离的子模块结合起来。
14.1.4 图像压缩技术
对声音、图像、视频等多媒体信息的压缩有两条思路,要么采用成熟的通用数据压缩技术进行压缩,要么根据媒体信息的特性设计新的压缩方法。
GIF是使用通用压缩技术压缩图像信息的最成功的例子之一,它使用LZW压缩算法,可以把原始图形文件以非常小的数据量存储,可以在同一个文件中存储多幅图像从而实现动画效果。
GIF文件中除了经过LZW压缩的像素信息以外,还保存有图像的各种属性信息以及图像所使用的调色板信息等。GIF 精确地保留了原始图像的每一个像素信息,是无损图像压缩的代表。因为GIF的成功,直到现在这种格式仍然广为应用。
根据媒体特性量身定制的压缩方法中,行程编码(Run-Length Encoding,RLE)是最为简单、最容易被想到的一种。大多数计算机中产生的图像(和现实世界的图像例如照片不同)都具有着大面积重复的颜色块,可以用一个颜色值加一个重复次数来表示这一块图像,冗余度由此减小了,这就是RLE方法的基本思路。但是,它不适于用来压缩照片、声音等连续重复信息很少的数据。RLE方法最有代表性的实现有PCX和TIFF图形格式,其最为成功的应用领域是传真机中传真图像的压缩。
20世纪70年代末80年代初,人们逐渐意识到,对大多数灰度或是彩色图像乃至声音文件,没有必要忠实地保留其所有信息,在允许一定的精度损失的情况下,可以实现更为有效的压缩方法。到20世纪80年代末,许多人已经在这一领域取得了不小的成果,设计出了一批压缩效果较好的声音和图像压缩算法。
在此基础上,国际标准化组织(ISO)和CCITT联合组成了两个委员会:静态图像联合专家小组(JPEG)和动态图像联合专家小组(MPEG)。JPEG的压缩目标是静止图像(灰度的和彩色的),MPEG的目标则是声音和视频。但他们的基本思路是完全一样的,即保留媒体信息中最有规律、最能体现信息主要特征的数据,而略去其他不重要的数据。他们都取得了令人赞叹的成就。
JPEG(Joint Photographic Experts Group)是在国际标准化组织(ISO)领导之下制定静态图像压缩标准的委员会。第一个国际的静态图像压缩标准——ISO 109110-1(JPEG)就是该委员会制定的。
由于 JPEG 所具有的优点,它在短短几年内获得了极大的成功,被广泛应用于互联网和数码相机领域,网站上80%的影像都采用了JPEG压缩标准。
JPEG标准主要涉及连续色调(灰度和彩色)静止图像的压缩编码,共提供了4种工作模式,如下。
•顺序型模式:即按照通常的从左到右、从上到下的顺序对图像进行编码,称为基本系统。
•分层模式:按照分辨率由低到高进行编码。
•渐进模式。
•无失真模式。
其中,JPEG基本系统是该标准的核心,提供了一种简单高效的图像编码方案。JPEG 2000采用改进的压缩技术来提供更高的解像度,其伸缩能力可以为一个文件提供从无损到有损的多种画质和分辨率选择。它放弃了 JPEG 所采用的以离散余弦变换(DCT)算法为主的区块编码方式,而改用以离散小波变换算法为主的多解析编码方式。
在压缩率相同的情况下,JPEG 2000的信噪比将比JPEG平均提高2dB左右。JPEG 2000拥有3种层次的编码形式:彩色静态画面采用的JPEG编码、2值图像采用的JBIG、低压缩率图像采用的JPEGLS等,成为应用于各种图像的通用编码方式。
在编码算法上,JPEG 2000采用离散小波变换(DWT)和Bit Plain算术编码(MQ coder)。JPEG中使用的离散余弦变换算法(DCT)是经典谱分析常采用的工具,它考察整个时域过程的频域特征或整个频域过程的时域特征。因为在处理时图像数据首先被分割为8×8的小块进行处理,所以恢复出来的图像有分块效应(即马赛克效应),压缩比越大,分块效应越明显。
JPEG 2000中使用的离散小波变换算法(DWT)是现代谱分析工具,对高频成分采用由细到粗渐进的时空域上的间隔取样,所以能够像变焦摄影一样看清远近不同的景物,并放大任意细节,是构造图像多重分辨率的有力工具。
与传统JPEG压缩方式对比,在较高压缩比率下,JPEG 2000的表现更为出色。用JPEG压缩的图像,在压缩比较高的情况下,有明显的马赛克现象(比如出现较大色斑或颜色信息丢失),但是用JPEG 2000 压缩的图像效果就能得到保证。即使在很高的压缩比下,图像的内容也能够辨别。
同时,JPEG 2000 纠错能力很强,并且能够在非标准的图像尺寸下保证再现较高图像质量。
14.1.5 JPEG 2000压缩算法
目前的 JPEG 静止图像压缩标准,在中高比特率上压缩效果较好,然而在低比特速率的情况下,重构图像存在严重的方块效应,不能很好地适应网络传描图像的需要。尽管目前的JPEG标准有44种操作模式,但是其中的大部分模式是针对不同的应用提出的,不具有通用性,这给交换、传输的压缩图像带来很大的麻烦。
为了弥补目前标准的不足,适应21世纪图像压缩的需要,早在1997年ISO/ITU-T组织下的IECJTCl/SC29/WGl 小组便开始着手制定新的静止图像压缩标准——JPEG 2000。与JPEG不同,JPEG 2000基于小波变换,采用当前最新的嵌入式编码技术,在获得优于目前JPEG标准压缩效果的同时,生成的码流有较强的功能,可应用于多个领域。
1.小波变换
不同于传统的DCT变换,小波变换具有对图像进行多分辨分析和反映图像局部特征的特点。通过对图像进行离散小波变换,得到小波系数图像,而分解的级数视具体情况而定。
小波系数图像由几种子带系数图像组成。这些子带系数图像描述的是图像水平和垂直方向的空间频率特性。不同子带的小波系数反映图像不同空间分辨率的特性。通过多级小波分解,小波系数既能表示图像中局部区域的高频信息(如图像边缘),也能表示图像中的低频信息(如图像背景)。这样,即使在低比特率的情况下,我们也能保持较多的图像细节(如边缘)。另外,下一级分解得到的系数所表示图像在水平和垂直方向的分辨率只有上一级小波系数所表示的图像的一半。所以,通过对系数图像的不同级数进行解码,就可以得到具有不同空间分辨率(或清晰,或模糊)的图像。
小波变换因其具有的这种优点被JPEG 2000 标准所采用。在编码系统中,对每个图像进行Mallat塔式小波分解。经过大量的测试,JPEG 2000 选用两种小波滤波器:LeGall 5/3滤波器和Daubechies 9/7 滤波器。前者可用于有损或无损图像压缩,后者只能用于有损压缩。
在JPEG 2000 标准中,小波滤波器可以有2 种实现模式:基于卷积的和基于提升机制的。而具体实现时,对图像边缘都要进行周期对称延伸,这样可以防止滤波器对图像边缘操作时产生失真。另外,为了减小变换时所需空间的开销,标准中还应用了基于行的小波变换技术。
2.量化
由于人类视觉系统对图像的分辨率要求有一定的局限,通过适当的量化减小变换系数的精度,可在不影响图像主观质量的前提下达到图像压缩的目的。量化的关键是根据变换后图像的特征、重构图像质量要求等因素设计合理的量化步长。
量化操作是有损的,会产生量化误差。不过一种情况除外,那就是量化步长是1,并且小波系数都是整数,利用可恢复整数 5/3 拍小波滤波器进行小波变换得到的结果就符合这种情况。
在JPEG 2000 标准中,对每一个子带可以有不同的量化步长,但是在一个子带中只有一个量化步长。量化以后,每一个小波系数有2部分来表示:符号和幅值。对量化后的小波系数进行编码。对于无损压缩,量化步长必须是1。
3.熵编码
图像经过变换、量化后,在一定程度上减少了空域和频域上的冗余度,但是这些数据在统计意义上还存在一定的相关性,为此采用熵编码来消除数据间的统计相关。将量化后的子带系数划分成小的矩形单元——码块(Code Block)。
4.位流组织
为了适合图像交换,更好地应用JPEG 2000 压缩码流的功能,JPEG 2000 标准规定了存放压缩位流和解码所需参数的格式,把压缩码流以包为单元进行组织,形成最终的码流。
JPEG 2000 通过采用速率控制方法来计算码流的理想截断点,从而获得给定压缩码率下的最佳重构图像质量。
速率控制使用了PCRD率失真优化算法。率失真优化,即给定整个压缩码流的最大编码速率,找出每个码块压缩位流的适当截断点,在满足的条件下,使重构图像失真最小。
从而使得嵌入式码块编码具有如下特点:生成的压缩位流可根据需要被截断成不同长度的位流子集,将所有码块的截断位流组织起来可重构出一定质量的图像。
14.1.6 JPEG与JPEG 2000的区别
JPEG 2000与传统 JPEG 最大的不同在于它放弃了 JPEG 所采用的以离散余弦变换(DCT)为主的区块编码方式,转而采用以小波变换(DWT)为主的多解析编码方式。
余弦变换是经典的谱分析工具,它考察的是整个时域过程的频域特征或整个频域过程的时域特征,因此对于平稳过程,它有很好的效果,但对于非平稳过程,它却有诸多不足。在JPEG中,离散余弦变换将图像压缩为8×8的小块,然后依次放入文件中,这种算法靠丢弃频率信息实现压缩,因而图像的压缩率越高,频率信息被丢弃的越多。在极端情况下,JPEG图像只保留了反映图像外貌的基本信息,精细的图像细节都损失了。
小波变换是现代谱分析工具,它既能考察局部时域过程的频域特征,又能考察局部频域过程的时域特征,因此即使对于非平稳过程,处理起来也得心应手。它能将图像变换为一系列小波系数,这些系数可以被高效压缩和存储,此外,小波的粗略边缘可以更好地表现图像,因为它消除了DCT压缩普遍具有的方块效应。
现在网络上的JPEG图像下载时是按“块”传输的,因此只能逐行显示,而采用JPEG 2000格式的图像支持渐进传输。JPEG 2000中的渐进传输有2 种:按照分辨率的渐进传输和按照质量的渐进传输。
按照质量的渐进传输就是先传输图像轮廓数据,然后再逐步传输细节数据来不断提高图像质量,而按照分辨率的渐进传输则先传输分辨率较低的图像,后一幅图像在前一幅图像的基础上提高其分辨率。图像的渐进传输使得用户不需要像以前那样等图像全部下载后才决定是否需要,有助于快速地浏览和选择大量图片,从而有效地解决了网络传输的不通顺问题。
JPEG 2000一个极其重要的优点就是感兴趣区域(Region of Interest,ROI)。用户可以任意指定图片上感兴趣的区域,然后在压缩时对这些区域指定压缩质量,或在恢复时指定某些区域的解压缩要求。这是因为子波在空间和频率域上具有局域性,要完全恢复图像中的某个局部,并不需要所有编码都被精确保留,只要对应它的一部分编码没有误差就可以了。
在实际应用中,我们就可以对一幅图像中感兴趣的部分采用低压缩比以获取较好的图像效果,而对其他部分采用高压缩比以节省存储空间。这样就能在保证不丢失重要信息的同时又有效地压缩了数据量,实现了真正的“交互式”压缩。
在相同的压缩质量参数下,JPEG 2000的峰值信噪比要优于JPEG;且在低位率时JPEG压缩会出现明显的方块效应,JPEG 2000 则会出