数字图像处理武汉理工大学信息学院7.1概述(Introduction)7.2无失真图像压缩编码(Losslessimagecompression)7.3有限失真图像压缩编码(Lossyimagecompression)7.4图像编码新技术(NewImageCompressionTechnology)第7章图像压缩编码(ImageCompressionCodingTechnology)7.5图像压缩技术标准(ImageCompressionStandards)7.1概述(Introduction)举例1:对于电视画面的分辨率640*480的彩色图像,每秒30帧,则一秒钟的数据量为:640*480*24*30=221.12M,1张CD可存640M,如果不进行压缩,1张CD则仅可以存放2.89秒的数据举例2:目前的互联网包含大量的图像信息,如果图像信息的数据量太大,会使本来就已经非常紧张的网络带宽变得更加不堪重负(WorldWideWeb变成了WorldWideWait)为什么要对图像进行压缩7.1.1、图像的信息量与信息熵(InformationContentandEntropy)1.信息量设信息源X可发出的消息符号集合为|1,2,,iAaim并设X发出符号ia的概率为,则定义符号出现的自信息量为:()ipa()log()iiIapa通常,上式中的对数取2为底,这时定义的信息量单位为“比特”(bit)。2.信息熵对信息源X的各符号的自信息量取统计平均,可得每个符号的平均自信息量为:21()()log()miiiHXpapa这个平均自信息量H(X)称为信息源X的熵(entropy),单位为bit/符号,通常也称为X的零阶熵。由信息论的基本概念可以知道,零阶熵是无记忆信息源(在无失真编码时)所需数码率的下界。)7.1.1、图像的信息量与信息熵(InformationContentandEntropy)通常一副图像中的各点像素点之间存在一定的相关性。特别是在活动图像中,由于两幅相邻图像之间的时间间隔很短,因此这两幅图像信息中包含了大量的相关信息。这些就是图像信息中的冗余。7.1.2、图像数据冗余(Imagedataredundancy)1.空间冗余图7.2是一幅图像,其中心部分为一个灰色的方块,在灰色区域中的所有像素点的光强和彩色以及饱和度都是相同的,因此该区域中的数据之间存在很大的冗余度。图7.2空间冗余空间冗余是图像数据中最基本的冗余。要去除这种冗余,人们通常将其视为一个整体,并用极少的数据量来表示,从而减少邻近像素之间的空间相关性,已达到数据压缩的目的。7.1.2、图像数据冗余(Imagedataredundancy)2.时间冗余由于活动图像序列中的任意两相邻的图像之间的时间间隔很短,因此两幅图像中存在大量的相关信息,如图7.3所示。时间冗余是活动图像和语音数据中经常存在的一种冗余。图7.3时间冗余7.1.2、图像数据冗余(Imagedataredundancy)3.信息熵冗余信息熵冗余是针对数据的信息量而言的。设某种编码的平均码长为)()(10ikiislspL式中,为分配给第符号的比特数,为符号出现的概率。)(islis)(isp这种压缩的目的就是要使L接近HX7.1.2、图像数据冗余(Imagedataredundancy)4.结构冗余图7.4表示了一种结构冗余。从图中可以看出。它存在着非常强的纹理结构,这使图像在结构上产生了冗余。图7.4结构冗余7.1.2、图像数据冗余(Imagedataredundancy)5.知识冗余随着人们认识的深入,某些图像所具有的先验知识,如人脸图像的固有结构(包括眼、耳、鼻、口等)为人们所熟悉。这些由先验知识得到的规律结构就是知识冗余。6.视觉冗余由于人眼的视觉特性所限,人眼不能完全感觉到图像画面的所有细小的变化。例如人眼的视觉对图像边缘的剧烈变化不敏感,而对图像的亮度信息非常敏感,因此经过图像压缩后,虽然丢了一些信息,但从人眼的视觉上并未感到其中的变化,而仍认为图像具有良好的质量。7.1.2、图像数据冗余(Imagedataredundancy)7.1.3、图像压缩编码分类(CodingmethodsofImageCompression数字图像压缩编码分类方法有很多,但从不同的角度,可以有不同的划分。从信息论角度分,可以将图像的压缩编码方法分为无失真压缩编码和有限失真编码。无失真图像压缩编码利用图像信源概率分布的不均匀性,通过变长编码来减少信源数据冗余,使编码后的图像数据接近其信息熵而不产生失真,因而也通常被称为熵编码。有限失真编码则是根据人眼视觉特性,在允许图像产生一定失真的情况下(尽管这种失真常常不为人眼所觉察),利用图像信源在空间和时间上具有较大的相关性这一特点,通过某一种信号变换来消除信源的相关性、减少信号方差,达到压缩编码的目的。7.1.4、压缩技术的性能指标(EvaluationIndexofImageCompressionapproaches)1.压缩比为了表明某种压缩编码的效率,通常引入压缩比这一参数,它的定义为:12bcb其中表示压缩前图像每像素的平均比特数,表示压缩后每像素所需的平均比特数,一般的情况下压缩比c总是大于等于1的,c愈大则压缩程度愈高。1b2b2.平均码字长度平均码字长度:设为数字图像第k个码字的长度(编码成二进制码的位数)。其相应出现的概率为,则该数字图像所赋予的平均码字长度为:3.编码效率在一般情况下,编码效率往往可用下列简单公式表示:)(kclkCkC)(kcp)()(1kmkkclcpL单位为bitLH7.1.4、压缩技术的性能指标(EvaluationIndexofImagecompressionapproaches)4.冗余度1rR越小,说明可压缩的余地越小。7.1.4、压缩技术的性能指标(EvaluationIndexofImagecompressionapproaches)7.2无失真图像压缩编码(Losslessimagecompression)无失真失真图像压缩编码就是指图像经过压缩、编码后恢复的图像与原图像完全—样,没有任何失真.常用的无失真图像压缩编码有许多种。如哈夫曼(Huffman)编码、游程编码和算术编码。7.2.1、哈夫曼编码(Huffmancoding)哈夫曼编码是根据可变长最佳编码定理,应用哈夫曼算法而产生的一种编码方法。1.可变长最佳编码定理对于一个无记忆离散信源中每一个符号,若采用相同长度的不同码字代表相应符号,就叫做等长编码。若对信源中的不同符号用不同长度的码字表示就叫做不等长或变长编码。2.哈夫曼(Huffman)编码的编码思路实现哈夫曼编码的基本步骤如下:(1)将信源符号出现的概率按由大到小地顺序排列。(2)将两处最小的概率进行组合相加,形成一个新概率。并按第(1)步方法重排,如此重复进行直到只有两个概率为止。(3)分配码字,码字分配从最后一步开始反向进行,对最后两个概率一个赋于“0”码字,一个赋于“1”码字。如此反向进行到开始的概率排列,在此过程中,若概率不变采用原码字。7.2.1、哈夫曼编码(Huffmancoding)举例:设输入图像的灰度级{y1,y2,y3,y4,y5,y6,y7,y8}出现的概率分别为0.40,0.18,0.10,0.10,0.07,0.06,0.05,0.04。试进行哈夫曼编码,并计算编码效率、压缩比、冗余度。按照上述的编码过程和例题所给出的参数,其哈夫曼编码过程及其编码的结果如图7.6所示。图像信源熵为:22212222log(0.4log0.40.18log0.1820.1log0.10.07log0.070.06log0.060.05log0.050.04log0.04)2.55MKKKHPP根据哈夫曼编码过程图所给出的结果,可以求出它的平均码字长度:10.4010.1830.1030.1040.0740.0640.0550.0452.61MKKKLlP7.2.1、哈夫曼编码(Huffmancoding)编码效率:压缩比:压缩之前8个符号需3个比特量化,经压缩之后的平均码字长度为2.61,因此压缩比为:/2.55/2.6197.8%HL3/2.611.15C冗余度为:12.2%7.2.1、哈夫曼编码(Huffmancoding)符号y1概率(1)0.40(1)0.40(1)0.40(1)0.40(1)0.40(1)0.40(1)0.40(0)0.60(00)0.37(01)0.23(000)0.19(01)0.23(001)0.18(000)0.19(001)0.18(010)0.13(011)0.10(001)0.18(001)0.18(001)0.18符号y2概率(010)0.13(011)0.10(0000)0.10(0001)0.09(011)0.10(0100)0.07(0101)0.06(0000)0.10(0001)0.09(011)0.10(0000)0.10(0101)0.06(0100)0.07(00010)0.05(00011)0.04符号y3概率符号y4概率符号y5概率符号y6概率符号y8概率符号y7概率说明:图中()表示码字。最终编码结果为:y1=1y5=0100y2=001y6=0101y3=011y7=00010y4=0000y8=00011图7.6哈夫曼编码过程7.2.1、哈夫曼编码(Huffmancoding)3.哈夫曼(Huffman)编码的特点(1)Huffman编码所构造的码并不是唯一的,但其编码效率是唯一的。(2)对不同信源,其编码效率是不同的。(3)实现电路复杂,且存在误码传播问题。(4)Huffman编码只能用近似的整数而不是理想的小数来表示单个符号,这也是Huffman编码无法达到最理想的压缩效果的原因.7.2.1、哈夫曼编码(Huffmancoding)7.2.2、游程编码(Run-lengthcoding)当图像不太复杂时,往往存在着灰度或颜色相同的图像子块。由于图像编码是按照顺序对每个像素进行编码的,因而会存在多行的数据具有相同数值的情况,这样可只保留两连续相同像素值和像素点数目。这种方法就是游程编码。下面以一个具体的二值序列为例进行说明。已知一个二值序列00101110001001,根据游程编码的规则,可知其游程序列为21133121。可见图像中具有相同灰度(或颜色)的图像块越大、越多,压缩的效果就越好,反之当图像越复杂,即其中的颜色层次越多时,则其压缩效果越不好,因此对于复杂的图像,通常采用游程编码与Huffman编码的混合编码方式,即首先进行二值序列的游程编码,然后根据“0”游程与“1”游程长度的分布概率,再进行Huffman编码。7.2.3算术编码(Arithmeticcoding)算术编码不是将单个信源符号映射成一个码字,而是把整个信源表示为实数线上的0到1之间的一个区间,其长度等于该序列的概率。再在该区间内选择一个代表性的小数,转化为二进制作为实际的编码输出。消息序列中的每个元素都要缩短为一个区间。消息序列中元素越多,所得到的区间就越小。当区间变小时,就需要更多的数位来表示这个区间。采用算术编码,每个符号的平均编码长度可以为小数。算术编码不是将单个信源符号映射成一个码字,而是把整个信源表示为实数线上的0到1之间的一个区间,其长度等于该序列的概率。再在该区间内选择一个代表性的小数,转化为二进制作为实际的编码输出。消息序列中的每个元素都要缩短为一个区间。消息序列中元素越多,所得到的区间就越小。当区间变小时,就需要更多的数位来表示这个区间。采用算术编码,每个符号的平均编码长度可以为小数。7.2.3算术编码(Arithmeticcoding)举例:假设信源符号为X={00,01,10,11},其中各符号的概率为P(X)={0.1,0.4