您的位置:首页 > 其它

图象压缩模型简介

2005-10-16 13:38 253 查看
数据压缩模型简介
[/b]

【摘要[/b]】:自从香农提出信息论奠定数据压缩的理论基础以来,五十年多来,人们先后提出了很多算法以尽可能的接近压缩极限------熵。本文拟从预测模型、统计模型、字典模型、变换模型、分形模型、模型基等角度出发,大致以时间为序,让大家对图形压缩算法有个大体的了解以及对图象压缩的发展有个总体的把握!

一、图象压缩的理论基础
[/b]

数据压缩的理论基础是C. E. Shannon提出的信息论,作为数据压缩的一个重要分支,图象压缩自然也以此理论为基础!

信息论认为:任何信息都存在冗余,冗余大小与信息中每个符号(数字、字母或单词)的出现概率或者说不确定性有关。Shannon借鉴了热力学的概念,把信息中排除了冗余后的平均信息量称为“信息熵”,并给出了计算信息熵的数学表达式:

考虑用 0 和 1 组成的二进制数码为含有 n 个符号的某条信息编码,假设符号 Fn 在整条信息中重复出现的概率为 Pn,则该符号的熵也即表示该符号所需的二进制位数为:

En = - log2( Pn )整条信息的熵也即表示整条信息所需的二进制位数为:

E = ∑knEn

这个“信息熵”就是人们一直在追求的数据压缩的理论极限!

二、图象压缩算法
[/b]

具体到图像而言,一幅图像存在数据冗余和主观视觉冗余,我们的压缩方式就是从这两方面着手来开展的。

1)因为有数据冗余,当我们将图像信息的描述方式改变之后,可以压缩掉这些冗余。

2)因为有主观视觉冗余,当我们忽略一些视觉不太明显的微小差异,可以进行所谓的“有损”压缩。

五十多年来,人们从不同的角度出发,不断认识上述两条数据压缩思路,先后设计了若干算法,我们按照思路的不同,把这些算法归结为以下几个模型:预测模型、统计模型、字典模型、变换模型、分形模型、模型基,下面将分别展开叙述:

1[/b]、预测模型:[/b]
[/b]

首先我们介绍下预测模型的设计思路:由于图像中局部区域的象素是高度相关的,去除相邻象素之间的相关性,只对新的信息进行编码,这样能达到压缩的目的。举个简单的例子,因为象素的灰度是连续的,所以在一片区域中,相邻象素之间灰度值的差别可能很小。如果我们只记录第一个象素的灰度,其它象素的灰度都用它与前一个象素灰度之差来表示,就能起到压缩的目的。如248,2,1,0,1,3,注意这里的2是根据第一个灰度值248预计的,1又是根据我们刚预计的灰度值预计的,以后操作类似,如果我们所做的预计是正确的,即这6个象素的灰度是248,250,251,251,252,255。可以看到,表示250需要8个比特,而表示2只需要两个比特,这样就实现了压缩。这里要说明的是这种估计或预测是有严格的理论依据的,能保证其精度要求,只是这种理论依据所用的数学公式推倒很复杂,这里就不叙述了!根据这个思路,人们设计了预测编码,常用的预测编码有Δ调制(Delta Modulation,简称DM);微分预测编码(Differential Pulse Code Modulation,DPCM)。

2[/b]、统计模型:
[/b]

字面上来看,统计涉及概率,确实,该模型运用到了概率知识,概括来讲就是:当我们对文字信息进行编码时,如果为出现概率较高的字母赋予较短的编码,为出现概率较低的字母赋予较长的编码,总的编码长度就能缩短不少。基于这个思想,信息论之父----Shannon 在提出信息熵理论的同时,也给出了一种简单的编码方法—— Shannon 编码。以后,R. M. Fano 对此编码方法进行了改进,提出了Shannon --Fano 编码。这种编码的思路如下:按照符号出现的频度或概率排序,然后使用递归方法把这组分成两个部分,使得上部频率或概率总和尽可能接近下部频率和概率总和!这样可以构造出一个二叉树,我们按照从左到右的顺序对每个结点下的左右分支分配0和1,按照从上到下的顺序读各分支上的数字,可以得到相应字符的编码!

eg: 有如下字母A、B、C、D和E,其出现次数分为16、7、6、6、5,我们构造好的二叉树为:


这样我们可以得到各字符的编码为:A:00;B:01;C:10:D:110;E:111,由编码可以看出,出现频率高的字符分配较短字符,出现频率高的字符分配较长字符!但这种编码压缩比有限,不很实用!

此后,在1952,D. A. Huffman提出了著名的Huffman编码,这种编码的思路为:首先统计出每个符号出现的频率,从左到右把上述频率按从小到大的顺序排列,每一次选出最小的两个值,作为二叉树的两个叶子节点,将和作为它们的根节点,这两个叶子节点不再参与比较,新的根节点参与比较,即与剩下的结点按从小到大的顺序排列,然后在这个新序列中选出最小的两个值作为二叉树的两个叶子子结点,将和作为它们的根节点……如此直到最后得到和为1的根节点。将形成的二叉树的左节点标0,右节点标1。把从最上面的根节点到最下面的叶子节点途中遇到的0,1序列串起来,就得到了各个符号的编码。

eg: 有8个字符S0,S1,S2,S3,S4,S5,S6,S7,其出现的概率如下:4/14,3/14,2/14,1/14,1/14,1/14,1/14,1/14,由其构成的huffman树如下:



这种huffman编码,由于要统计各字符的概率和建立huffman树进行编码,数据压缩和还原速度都较慢,压缩比还不够,但简单有效,因而得到广泛的应用。

以后,为了挑战信息熵的极限,通过对现有的Shannon –Fano和创新,1976 年, J. Rissanen 提出了一种可以成功地逼近信息熵极限的编码方法——算术编码!这种算法比较复杂,这里就不介绍了!我要说的是,算术编码虽然可以获得最短的编码长度,但其本身的复杂性也使得算术编码的任何具体实现在运行时都慢如蜗牛,即使在摩尔定律大行其道, CPU 速度日新月异的今天,算术编码程序的运行速度也很难满足日常应用的需求。

3[/b]、字典模型
[/b]

前面提到的算术编码,已经能很接近信息熵的极限!似乎,压缩技术的发展可以到此为止了。好在J. Ziv 和 A. Lempel 独辟蹊径,完全脱离 Huffman 及算术编码的设计思路,创造出了一种比 Huffman 编码更有效,比算术编码更快捷的压缩算法,即 LZ算法。

这种算法有很多变体,如LZ77 、 LZ78 、 LZW等等,其都遵行的是字典模型的思路。我们先来看我们平常查字典过程:先通过偏旁部首检索所需字所在的页码,然后在对应的页码就可找到所需的汉字!字典模型的设计思路和我们查字典的思想类似!它并不直接计算字符出现的概率,而是使用一本字典,随着输入信息的读入,模型找出输入信息在字典中匹配的最长的字符串,然后输出该字符串在字典中的索引信息。匹配越长,压缩效果越好。

我们可以看看LZW编码算法的建库过程!

eg:试对一个最简单的三字符X,Y,Z组成的字符串XYXYZYXYXYXXXXXX进行LZW编码。

首先初始化串表,将X,Y,Z单字符存入串表中,并分别赋予三个码字值1,2,3,然后从输入字符串中的第一个字符X开始,从左到右逐个输入字符串进行编码器分析,由于串表中没有比X更长的字符串,将X作为新字符串的前缀,此时输入下一个字符Y,形成新字符串XY,由于串表中没有这个字符串XY,将之加入串表,并赋予XY串的码字值为4,由于Y是字符串XY的扩展字符,X是其前缀,将前缀X的码值1输出;同时,用XY字符串的扩展符Y起始下一个字符串,下一个输入字符为X,因为YX不在串表中,将之加入串表,并赋予YX串的码字值为5,同时输出字符串YX的前缀串Y对应的码值2,再以X起始下一个字符串,接着输入Y,又形成XY,由于X字符串已经在串表中,此时以XY为下一个新字符串的前缀,接着输入下一个字符Z,形成新的XYZ,因为XYZ不在串表中,将之加入串表,并赋予XYZ串的码字值为6,同时输出字符串XYZ的前缀XY对应的4,以Z作为前缀字符串……最终我们得到所要的“字典”如下:


同时我们得到的输出序列为:1,2,4,3,5,8,1,10,11,我们来看解玛过程,只要将对应的数字从左到右的顺序按照此对应表替换为相应字符,我们可以得到:XYXYZYXYXYXXXXXX,

我们看看这个过程,是不是和我们查字典的方式类似!

[/b]4[/b]、变换模型
[/b]

由统计模型到字典模型,基于的是编码思想的改变!变换模型的提出也是有别于传统!

它的思想是将原来在空间域上描述的图像等信号,通过一种数学变换到可变域(如频率域、正交矢量空间)中进行描述,经过这样的变换,人们发现在新的变换系数之间的相关性明显下降,并且能量常常集中于低频或低序系数区域中,于是通过对低频成分分配较多的比特数,对高频成分分配较少的比特数,即可实现图像数据压缩。变换编码经常与量化一起使用,进行有损数据压缩,并且由于正交矩阵具有的良好特性,转换一般采用正交矩阵进行。

一个很早的例子是彩色电视机。由于人眼对亮度的敏感性远远大于对色度的敏感性,所以将最初的基于RGB颜色空间的色彩转换到YCbCr空间,并利用较低的分辨率来表示色差(Cb和Cr)信号(也属于某种量化)。这使得彩色电视机可以使用与黑白电视机相同的约6M的带宽来传送,而人眼感觉不到太大差别。实际上一般的彩色电视机的亮度分辨率约为350扫描线,而Cb信号约为50线(等效值),Cr信号约为150线(等效值)。复杂的人眼系统能够在这样的基础上重建完整的彩色图像。

总的来看,这个模型涉及到的知识很复杂,不好理解!我也没太明白。常见的傅立叶变换编码、沃尔什·哈达玛变换(WHT)和离散K-L变换、小波变换等编码方法都是这一模型的应用!其中小波变换是当前的热门!

5[/b]、分形模型
[/b]

让我们先看看下面这些美丽的图片:[/b]
[/b]







[/b]

图[/b] A [/b]图[/b]B [/b]图[/b]C
[/b]

大家看上面所罗列的图片,我想第一感觉是很漂亮,细细看后,可能会觉得组成该图像的部分很相似。事实上,自然界有很多这样的图案,比如海岸线,你看它10公里的图像(曲线),和一寸的景象(曲线)是相似的;又如雪花,它的各瓣都差不多!还有蜂窝外形与蜂窝中孔穴、自然界的蕨类植物等,我们还可以找到很多这样的例子。说了这些,我想说的是,自然界有很多图形具有自相似性!利用这种相似性来对图形进行处理,可以达到压缩的目的。这就是分形模型的思想。

那么分形压缩图像怎样实现呢?基于分形几何建立“图形库”,这个“图形库”存放的不是分形图案本身,而是存放的相对紧凑的称之为迭代函数系统代码的数字集合,这些代码将重构相应的分形图形!我们可以看看用分形技术重建海岸线的过程!1904年瑞典数家科赫(H.Von Koch)首次提出了Koch曲线,它的生成是把一条直线等分成三段,将中间一段用夹角为60°的两条等长折线代替,形成一个生成元如图1(1)

然后把每条直线段用生成元代替,经无穷次迭代后,便呈现出一条有无穷多弯曲的Koch曲线。用它来作为自然界中海岸线的模型相当理想。这里值得提一下的是,分形压缩技术是当前研究的热点。6[/b]、模型基
[/b]

近年来出现的模型基,它能压缩图像的思路又不同!它所基于的是人们已经有的先验知识!先验知识,说的明白点就是大家都了解的、熟悉的场景。既然这部分知识是大家所熟悉的,在传输时可以不传输,而在接收到只要相应的进行的生成即可!这可以说是模型基的设计思想。

根据对先验知识的使用程度,模型基编码可分为物体基模型和语义基模型!物体基编码较少用到先验知识,因而可以处理更一般的对象,已知的或未知的,这种编码正处于研究阶段,前景很好;语义基编码有效地利用了景物中的已知物体的知识,可以实现非常高的压缩比,目前已经有比较成型的成果问世!让我们看看语义基的一个电视电话的应用,借此加深对此的认识!

在电视电话这一特定场景中,运动的只是人的面部表情!肩部以下大体不动!在开始通信的时候,先把通信双方的基本特征(如三维模型、年部的表面纹理、衣服的颜色等)传输到对方。接着头部开始运动并伴随不同的表情,这时,在发送端需要抽取头部的运动参数和脸部的表情参数,将这些参数编码后再传送到对方,在接收断根据已知的三维模型和接收到的各种参数,用图象综合技术获得重建图像!

相信看了我上面的介绍,你一定会这种模型编码很复杂,确实!它用的技术很高深,而且还用到了别的领域知识!但它所展现的高压比等性能也很吸引人,是未来研究的热点!

三、总结
[/b]

我们前面提到的四种压缩模型所衍生出的若干编码方法可归结为图象压缩的经典方法,已经很成熟了,正广泛应用于实践;后提到的两种压缩模型所衍生的若干编码方法正处于实验阶段,有些已用于实践,可归结为图象压缩的现代方法,它们引领着图象压缩的未来!

上述提到的六种模型都很有代表性,都是人类在对图像认识的不断深入的基础上所进行的革新创造,有些还是从别的学科引入来的,这中思路启迪我们,只有不断的创新,才会带来技术的飞速发展。

四、参考文献
[/b]

1.数据压缩技术简史.王咏刚. http://www.contextfree.net/wangyg/b/tech_his/data_compression_history.html

2.视频压缩与音频压缩编码技术.精英科技编著.北京:中国电力出版社.2001.6

3.数字图象处理与压缩编码技术.黄贤武等编著.成都.电子科技大学出版社.2000.12

4.数字图象处理与图像通信.朱秀昌,刘峰,胡栋编著.北京:北京邮电大学出版社.2002

5.现代图象处理技术与应用.夏德深等编著.南京:东南大学出版社.2001.2

[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: