数字图像处理读书报告9——图像压缩——钱增磊前言:前面几章都是讲解对数字图像的处理方法,这些处理终将为某一目的而执行,其中的很大一应用便是存储和传输,这就用到了图像压缩的技术。
我本是视频编解码的研究方向,对于图像压缩技术也靠近本研究方向,当作基础学习。
本章主要两个部分,一个是介绍一下压缩技术的基础知识,另一个就是介绍一些常用的压缩方法。
一、基础知识1、数据冗余在一幅数字图像中,如果我们用空间像素乖乖的对其顺序编码,那么它会产生庞大的数据量,对于处理起来就会增加很多时间和空间的开销。
而一幅图像中往往所表示的信息有多有少,有一些在我们识别和处理的时候是不需要的,这些便为数据冗余,主要有三种:编码冗余、空间和时间冗余以及不相关信息。
编码冗余:在我们标记像素进行编码时,用于表示灰度的8比特编码所包含的比特数要比表示该灰度所需的比特数多,从而产生的冗余;空间和时间冗余:多数的二维灰度阵列的像素是空间相关的和时间相关的(视频序列中体现),在相关像素的表示中就不需要重复了,从而产生的冗余;不相关信息:主要指一些被人类视觉系统忽略或者无用的信息。
对于描述图像信息的度量,这里给出熵的定义,对于一个离散的事件,给定一个统计独立随机事件的信源,则每个信源输出的平均信息称为该信源的熵,即:∑=-=Jj j j a P a P H 1)(log )( 香农第一定理:H n L n avg n =⎥⎦⎤⎢⎣⎡∞→,lim 其中n avg L ,是表示所有n 个符号组所需的编码符号的平均数,也就是说,用每个信源符号H 信息单位的平均来表示零记忆信源的输出是可能的。
2、图像压缩模型图像的压缩系统主要由一个编码器和一个解码器构成,编码器执行压缩操作,解码器执行互补操作。
对于编码器,一般由映射器、量化器和符号编码器组成,映射器主要将输入图像变化为设计来降低空间和时间冗余的形式,这一操作一般可逆。
而量化器是根据保真度准则来降低映射器输出的精度,排除压缩表示的一些无关信息,这一操作一般不可逆。
符号编码器便是根据量化后的数据进行编码,这操作也是可逆的。
而解码则是一个相反的操作,由于在量化阶段是个不可逆的操作,所以往往解码的图像会产生不同程度的失真。
3、图像格式及压缩标准由于压缩方式众多,为了便于统一化管理制定了一些压缩标准。
其中静态图像分为二值图像和连续音调,国际支持的条目有CCITT Group3、CCITT Group4、JBIG 、JBIG2、JPEG 、JPEG-LS 、JPEG-2000;视频的条目有DV 、H.261、H.262、H.263、H.264、MPEG-1、MPEG-2、MPEG-4、MPEG-4 A VC 。
二、常用的压缩方法1、霍夫曼编码霍夫曼编码对每个信源符号产生了可能最小数量的编码符号,一个信源符号不是图像的灰度,就是一个灰度映射操作的输出(如像素差值等)。
编码过程:▶它首先对所考虑的符号的概率进行排序,并将具有最小概率的符号合并为一个符号,来替代下次信源化简过程中的符号;▶其次对每个化简后的信源进行编码,从最小开始。
然后依次将合并的信源符号依次展开在进行编码。
它的一个特定是在解码过程中,任何编码符号串只能以一种方式进行解码,可以通过从左到右的方式对该串中的每个符号进行分析来解码。
2、Golomb 编码它在计算上比霍夫曼编码更为简单,而且要求只能对非负整数进行编码。
对于非负整数n 和一个正整数除数0>m ,表示为)(n G m 的n 关于m 的Golomb 编码是商⎣⎦m n /的一元编码和m n mod 的二进制表示的一个合并。
其编码过程为:▶形成商⎣⎦m n /的一元编码(整数q 的一元编码定义为q 个1紧跟一个0)。
▶令⎡⎤m n r m c m k k mod ,2,log 2=-==,并计算截短的余数'r 。
▶连接二者的结果。
3、算术编码对于上述两个编码不同,算术编码生成的是非块码,它是给信源符号的整个序列分配了一个单一的算术码字,这个码子本身定义了一个介于0和1之间的实数间隔。
当消息中的符号数量增加时,其消息的间隔也变小,而表示间隔所需的信息单位就会增大。
它是通过消息的每个符号根据其符号出现的概率来减小该区间的大小的。
从该编码可知,当序列的长度增加的时候,得到的算术编码接近香农第一定理所设定的界限,但是会有两个不利的因素:一个是分开每一个消息而增加的结束指示符数量增加;另一个便是精度的限度,不可无限分下去。
于是便采用一种缩放策略和舍入策略来解决这两个问题。
缩放则是对每一子区间重新归一化到[0,1);而舍入则是对其进行截短。
为了使得平均码字符号数最小,采用自适应、上下文相关的概率模型,概率就适应被编码符号的局部统计。
4、LZW 编码前三种编码是用于消除编码冗余的压缩方法,而Lempel-Ziv-Welch 编码则是致力于消除空间冗余的无误差压缩方法。
其编码步骤如下:▶构建包含被编码信源符号的码书或字典,扫描图像像素,将不在字典中的信源符号序列被放置到算法确定的位置,直至扫描完成,这里指的是序列,而非单个符号;▶按从左到右、从上到下进行编码,对每一个链接的序列搜索字典,如果找到了,则用新链接且可识别的序列代替它,如果没有找到,则将当前可识别序列的地址作为下一个编码值输出。
这样对于有规律的,较多重复的特征的图像能够得到很好地压缩。
这里所要考虑的主要还是字典的容量,由于是动态建立字典,当字典溢出时可通过用刷新该字典或者跟踪并替换使用最少的字典词条来解决。
5、行程编码如果对于沿行(或列)重复灰度的图像,通常可用相同灰度的行程表示为行程对来压缩,每个行程对指定一个新灰度的开始和具有该灰度的连续像素的数量。
该方法为行程编码技术。
该方法对于二值图像特别有效。
这里定义行程熵:1010L L H H H RL ++= 其中0H 为黑色行程信源的熵估计,1H 表示白色行程熵的估计,10,L L 分别表示黑色行程和白色行程的平均值,上式提供了对二值图像的行程使用变长编码时所要求的每像素平均比特数的估计。
6、基于符号的编码对于一幅图像表示为多幅频繁发生的子图像的一个集合,就可采用该压缩方式。
对于每一个子图像定义为符号,该符号存储在一个符号字典中,给定一个三元组),,(i i i t y x ,其中前两个可以称为在图像中每一个符号的位置,而后一个t 则表示该符号在字典中的地址。
那么对于重复出现的字符,可以通过该方法不断地调用字典中的符号,大大减少了编码的数量。
其中JBIG2压缩便是采用了这种压缩方法。
该压缩标准针对二级图像压缩的国际标准,将一幅图像分割成正文、半色调、和普通内容。
其中正文部分采用的便是基于符号的编码;而半色调区域是按规则网络排列的模式组成,有一个个图形组成,于是将该图形也就是灰度的周期模式存储在字典中;普通区域是用MMR 编码压缩的。
7、比特平面编码基于符号编码和行程编码主要是用于对二值图像的编码,那么对于多级灰度级的图像,可将其分解为一系列的二值图像,然后用上述两种方法进行编码,也就是所谓的比特平面编码。
那么对于其分解主要有两种方法,第一种是利用基2的多项式中的系数来编码的方法,每一项都是一幅图像的一个比特平面,表示为:0011221122......22a a a a m m m m ++++----该分解的弊端再与某些灰度较小的变化会对比特平面的复杂性产生显著影响,比如()与灰度为()相邻。
另一种方法解决了这种弊端,便是适用格雷码表示图像,对于格雷码0121...g g g g m -可由此计算:1+⊕=i i i a a g ,11--=m m a g 。
8、块变换编码该技术是将图像分成大小相等的且不重叠的小块,然后使用一种可逆线性变换把每个块或子图像映射为变换系数的集合,然后对这些变换系数进行量化和编码。
这些变换系数大多数只有较小的幅值,通过量化可将其抛弃而不影响图像的质量。
然而还可以在每一个变换编码的步骤对其进行局部内容的适应性调整,称之为自适应变换编码。
这些变换的选择则是取决于可容忍的重建误差的大小和可用的计算资源,对于其变换可以构建如下关系:∑∑-=-==1010),,,(),(),(n x n y v u y x r y x g v u T∑∑-=-==1010),,,(),(),(n u n v v u y x s v u T y x g第一个称为正变换,后者称为反变换,而),,,(v u y x r 为正变换核,),,,(v u y x s 为反变换核,而),(v u T 为展开的一系列系数。
比较著名的便是离散余弦变换DCT :⎥⎦⎤⎢⎣⎡+⎥⎦⎤⎢⎣⎡+==n v y n u x v u u v y x s v u y x r 2)12(cos 2)12(cos )()(),,,(),,,(ππαα 其中,⎩⎨⎧-===1,..,2,1,../20......./1)(n u n u n u α最常用的JPEG 标准定义了三种不同的编码系统:一种是有损的基本编码系统,该系统以DCT 为基础;第二种是一种扩展的编码系统,它面向更大压缩、更高精度的重建应用;第三种是一种面向可逆压缩的无损独立编码系统。
9、预测编码该编码是通过消除紧邻像素在空间和时间上的冗余来实现的编码技术,它仅对每个像素的新信息进行提取和编码。
该信息为该像素的实际值与预测值之间的差。
无损预测编码:利用对由前m 个样值的线性组合生成)(ˆn f,即 ⎥⎦⎤⎢⎣⎡-=∑=m i i i n f round n f 1)()(ˆα并与输入信号f(n)形成差值e(n),对该预测误差进行编码,再利用反操作进行重建:)(ˆ)()(n fn e n f += 有损预测编码:将上述的模型加入一个量化器,该量化器将预测误差映射为有限范围内的输出,产生)(n e,确定了压缩量和产生的失真量。
最佳预测器:为了将预测残差最小,选择使编码器的均方预测残差最小的预测器})](ˆ)({[)}({22n fn f E n e E -= 其约束条件为)()(n f n f = 和∑=-=mi ii n f n f 1)()(ˆα,这些条件在相当程度上简化了分析,同时降低了预测器计算的复杂性,如此得到的预测编码方法称为差分脉冲编码调制DPCM 。
10、小波编码在前一章学习到小波变换,是将一幅图像的频率进行分解,使之由不同的频率叠加构成,对这些接触相关的变换系数进行编码比对原图像像素本身进行编码效率高很多,于是得到小波编码。
其中JPEG-2000标准便是基于该编码实现的。
小波将信息包装到较少变换系数中的能力取决于小波的压缩和重建性能,对小波的选择非常重要,一般广泛使用的是Daubechies 小波和双正交小波。