数据压缩技术分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据压缩技术分析
于 翔
(青海民族学院计算机应用系 青海西宁810007)
摘要:主要介绍多媒体数据压缩技术中的无损压缩技术和有损压缩技术,分析和讨论了各自的特点,运用和使用方法。
关键词:数据压缩技术;无损压缩;有损压缩
中图分类号:TP274 文献标识码:B 文章编号:1006-8996(2002)05-0052-03随着人类进入信息时代,人类将更多的依靠电脑,从Interet 中获取信息。而大部分信息却都具有数据的海量性。在这种情况下,信息的传输与存储就成为首要问题。数据压缩就成为解决这一瓶颈问题的重要方法。
数据压缩起源于20世纪40年代的信息论。其主要目的是通过数据压缩手段将信息数据量以压缩形式进行存储和传输。数据压缩的理论极限就是信息熵[1]
。众所周知,数据文件在计算机中是以计算机符号来表示的,每个计算机符号都有一定的出现概率。如果要压缩一条信息,必须首先分析清楚信息中每个符号出现的概率。在压缩程序中,用来处理输入信息并计算符号出现概率和决定输出哪个或哪些代码的模块称之为模型。通过一定的模型与编码进行组合计算就构成压缩技术的主要思路。根据不同的编码对原始文件数据产生不同的损失效果,可把压缩技术分为有损压缩和无损压缩两大类。本文主要对这两种压缩技术进行介绍和分析。1 无损压缩技术
根据不同的模型可分为基于统计概率模型的压缩技术和基于字典模型的压缩技术。
1.1 概率统计模型 分为静态统计模型方式和自适应模型方式。静态统计模型方式需预先扫描文件中的所有字符,以便统计出每个字符出现的概率。但由于扫描文件需花费大量的时间,同时还要保存一份概率表,从而导致压缩效率的下降,通常情况下并不采用这种方式。对于自适应模型方式,这种方式在开始时假定每个字符的出现概率相等,但随着字符的不断输入和编码,统计并记录字符出现的概率,并将此概率应用于后续字符的编码。所以自适应模型方式在压缩开始时不会有明显的压缩效果,但随着压缩的继续其效果会越来越明显,最终达到理想的压缩效果。自适应模型方式不需要保存概率表。基于概率统计模型的压缩技术中最具有代表性的是利用概率分布特性而编码的两种编码:一种是著名的H UFFMAN 编码,而另一种是算术编码。
(1)H UFFMAN 编码 以D.A.H UFFMAN 在1952年发表的《最小冗余代码的构造方法》为基本理论
依据的编码,是一种无损压缩编码[2]。其主要方法是对于出现概率大的符号用较少的位数来表示,而对
于出现概率小的符号用较多的位数来表示。其编码效率主要取决于需编码的符号出现的概率分布,分布越集中则压缩比越高。虽然H UFFMAN 构造出编码并不是唯一的,但是由于其平均码长并不相同,所
以并不会影响其效率和数据压缩性能[3]。H UFFMAN 编码可以利用最简单的静态统计模型方式,即在编
码前需要统计待编码的信息中所有字符的出现概率,然后根据统计信息建立出编码树,进行编码。但是H UFFMAN 编码在利用静态统计模型方式时,不但继承了静态统计模型方式的所有缺点,
收稿日期:2002-09-04
作者简介:于翔(1975—
)男,江苏南通人,助教。第20卷 第5期2002年8月 青海大学学报(自然科学版)Journal of Qinghai University V ol.20N o.5Oct.2002
而且还直接导致使用静态统计模型方式统计出的字符出现频率并不能完全反映字符在文件中不同局部出现的频率变化情况。所以在构造H UFFMAN 编码上,提出了另一种构造H UFFMAN 编码的方式—范式H UFFMAN 编码。范式H UFFMAN 编码的基本思路并不是使用二叉树建立的编码才是H UFFMAN 编码,
只要满足以下两个基本条件[4]:①是前缀编码;②某一字符编码长度和使用二叉树建立的该字符编码相
同的编码,都可称为H UFFMAN 编码。构造范式H UFFMAN 编码大致可分为四步骤:
①统计每个要编码符号的频率;
②根据这些频率信息求出该符号在传统的H UFFMAN 编码树中的深度;
③分别统计出最大编码长度X 到1的每个长度对应多少个符号,根据此信息从X 个0开始以递增的顺序为每个符号进行编码;
④编码输出压缩信息,并保存按频率顺序排列的符号表,保存每组同样长度编码中的最前一个编码以及该组中的编码个数。
由此可以看出如果使用范式H UFFMAN 码就可以完成脱离任何树结构,而进行高速解压缩。在整个压缩过程中比传统H UFFMAN 编码效率高。
H UFFMAN 编码也可以使用自适应模型方式,但必须考虑到编码表的动态特性,在技术上还存在不少难题,所以H UFFMAN 编码很难使用自适应模型方式,同时由于H UFFMAN 编码是不等长编码,其最大缺点就是抗干扰能力差,并且H UFFMAN 编码实际上是用整数个的二进制位对符号进行编码导致编码效率降低,从而无法得出最优的压缩算法。所以提出了一种新的基于概率统计模型的编码—算术编码。
(2)算术编码 将被编码的一条消息或字付串表示成0与1之间的一段间隔,即对一串符号直接编码成[0,1]区间上的一个浮点小数。也就是说算术编码用小数来表示二进制位,并由此接近无损压缩
的熵极限。算术编码还可以较为方便地使用静态统计模型方式和自适应模型方式[5]。使用静态统计模
型方式,可以更好的接近无损压缩的熵极限,但静态统计模型方式却无法适应信息的多样性,同时必须在压缩前对所有字符分布进行统计要耗费大量时间,而且无法表示出字符在整个文件中局部出现的概率。所以通常情况下并不使用静态统计模型方式,而自适应模型方式却能弥补这一缺陷。所以对于算术编码,通常使用自适应模型方式,根据当前接收的数据不断地更改概率模型以达到更好的压缩效率,当信源信号概率较为接近时采用算术编码。
在很长的一段时间内,基于概率统计模型的编码占有很重要的地位,直到1977年由以色列科学家Jacab Z iv 和Abraham Cem pel 撰写的《顺序数据压缩的一个通用算法》和《通过可变比率编码的独立序列
的压缩》两篇论文发表后才出现一种新的数据模型一字典压缩模型[4]。
1.2字典模型 字典模型并不直接计算字符出现的概率,而是使用一本字典。其主要方法是将已经编码过的信息做为原字典,如果需要编码过的信息曾经出现过,就输出该字符串的出现位置及长度,否则就输出一个新的字符串。字典压缩模型通常使用自适应的方式。如果使用静态字典模型方式,首先是适应性不强,其次是必须维护一个信息量并不算小的字典,从而影响了最终的压缩效果。基于字典模型的压缩技术也有两种编码:一种是游程编码(R LC ),另一种是LZ W 编码。以字典压缩模型为主要思路的算法有LZ 77、LZ 78和LZ W 等几种。LZ 77算法的思路是以字典压缩模型的自适应方式为主,其主要步骤如下:
①从当前位置开始,检查未编码的字符,并试图在以前编码中找出最长的匹配字符串,如果找到,则执行第二步,否则执行步骤③。
②输出三元符号(X ,Y,Z ),其中X 为匹配字符串相对窗口边界的编码,Y 为可匹配长度,而Y 则为下一个字符,然后Y 向后滑动Y+1执行步骤①。
③输出三元符号组(0,0,Z ),Z 为一个字符,然后向后滑动Y+1,继续①。
在整个算法中要注意三元组编码的设计,才能获取较好的压缩效果。
2 有损压缩技术
主要是利用人类视觉对图像中的某些频率成份不敏感的特性,允许在不影响整个图像的视觉效果35第4期 于翔:数据压缩技术分析