浅谈无损压缩算法

摘要:该文介绍了经典的Huffman编码和目前压缩比最高的PAQ系列压缩算法,包括Huffman编码的原型,改进后的自适应Huffman编码及他们各自的实现方法和优缺点,PAQ系列压缩算法是如何进行上下文建模,预测和编码的。

关键词:无损压缩;Huffman;PAQ

中***分类号:TP311文献标识码:A文章编号:1009-3044(2011)22-5466-02

在信息高速发展的今天,人们进行交流沟通的数据量相当的庞大,如何更好,更快的传输和存储数据已成为一个重大的问题,单纯地提高存储容量,并不能从根本解决问题,而数据的压缩是解决这一问题的重要方法。从无损音乐格式ape到文档的存储,数据的无损压缩已广泛应用于各个领域。

1 无损压缩概述

数据压缩是按照特定的编码机制用比未经编码少的数据位(或者其它信息相关的单位)表示信息的过程。无损压缩是利用数据的统计冗余进行压缩,可完全回复原始数据而不引起任何失真,但压缩率是受到数据统计冗余度的理论限制,一般为20%到50%。这类方法广泛用于文本数据,程序和特殊应用场合的***像数据的压缩。

2 无损压缩算法Huffman和PAQ

2.1 基于Huffman编码的压缩

2.1.1 静态Huffman和动态Huffman编码

Huffman编码使用变长编码表对源符号进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现次数多的符号使用较短的编码,出现次数少的则使用较长的编码,这便使编码之后的符号串的平均长度降低,从而达到无损压缩数据的目的。Huffman编码是通过构建最优二叉树即带权路径长度最小的二叉树,来实现对数据的编码。Huffman编码的过程:

(1)对数据中的源符号的种类和数量进行统计,共有n个源符号,其出现的频率分别为w1,w2...wn;

(2)根据得到的n个权值{w1,w2...wn},构成n个二叉树的集合M={T1,T2...Tn},其中每棵二叉树Ti仅有一个带权为wi的根结点,其左右子树都为空;

(3)在M中选取两棵根结点的权值最小的作为左右子树,构造一个新的二叉树,设置新的二叉树的根结点的权值为左右子树根结点权值之和;

(4)在M中删除选中的两棵子树,同生死将新生成的二叉树加入到M中;

(5)重复(3)和(4),直到M中只含有一棵树HTree为止,HTree即为所求的哈弗曼树;

(6)从根结点出发对HTree进行先序遍历(向左记0,向右记1),从根结点到每个叶子结点的路径即为各个源符号所对应的huffman编码。

这种静态的huffman算法实质是统计源符号,然后对其编码,这样需要对数据进行扫描统计和编码压缩两次操作,压缩速度较慢,实际运用不广泛。为了解决静态Huffman编码的缺点,产生了动态Huffman编码(又称自适应Huffman编码),它只需要对数据进行一次扫描,不需要事先构造Huffman树,而是随着编码的进行逐步构建Huffman树,随着编码的进行同一字符的编码也会随之发生变化。动态Huffman编码流程:

(1)初始化编码树,仅含有一个结点,包含符号NYT(NYT是逸出码,不同于任何一个传送的符号,当有一个尚未在编码树中的符号需要被编码时,输出NYT编码,然后跟着符号的原始表达式),权值为0,符号集合M为空;

(2)扫描符号fi,如果fi ?埸M,将fi加入到M中,用包含新符号和新NYT的子树替换原NYT(替换后NYT居左,新符号结点居右),并输出由逸出码引导的编码。并使原NYT及字符结点的权值赋为1,改变当前结点为原NYT结点。如果fi?奂M,对该符号编码并输出,更新Huffman树。

动态Huffman编码中更新Huffman树的步骤:

(1)输入字符所在结点的权重加1,

(2)检测权重更改后Huffman树是否满足兄弟特性(一棵二叉代码树的每个节点(除根外)都有一个兄弟,而且所有节点能够以权的非递增次序排列并使得每个节点都与它的兄弟相邻,则这棵树就称为具有兄弟特性),满足则进行(4)操作,不满足则(3)操作。

(3)不满足兄弟特性时,该结点与权重小于该结点,但离根结点近的结点(包含其子树)进行交换,如果有多个结点满足,则与最右端结点交换。

(4)满足兄弟特性时,根据调整后的Huffman树 ,按结点指针依次调整各结点的父结点 权重。

2.1.2 Huffman编码的缺陷

Huffman编码没有错误保护功能,一旦一位出错,那么后面的代码也会出错;Huffmam编码是可变长度编码,很难随意查找或调用压缩文件中的内容。

2.2 PAQ压缩算法

2.2.1 PAQ简介

PAQ使用上下文混合算法,上下文混合与PPM(部分匹配预测)有关,下一个符号的预测是从大量的模型在不同上下文上的概率组合估计出来的,不同于PPM,上下文不需要是连续的。所有的PAQ版本都是一次预测和压缩1bit,不同版本的具体模型,如何预测相结合,并后处理是不同的。一旦下一个bit的可能情况被确定,就会根据其概率进行算术编码进行编码。

PAQ1SSE和之后的版本通过二级符号估计(SSE, secondary symbol estimation)来进行预测,合并后的预测和一个小范围的上下文被用于查找表中的一个新的预测,当这个bit被编码后,该表的条目进行调整以降低预测误差。

2.2.2 算术编码

算术编码是用0和1之间的一个数值范围来表示一个字符串,算术编码的伪代码:

Low=0.0;High=1.0;

While not EOF do

Range=High-Low;

read(c);

High=Low+Range*High_range(c);

Low=Low+Low_range(c);

Enddo

Output(Low)

例如对消息序列00 01 10 11 10 11进行编码,假设信源符号为{00,01,10,11},它们的概率分别为{0.2,0.3,0.1,0.4},如表1。

编码过程如表2。

从[0.074944,0.076)中选择一个数(eg:0.074944)作为输出。

2.2.3 自适应模型

一个N阶自适应的基于上下文的模型也维持着一个概率表,表中存放着字母表中所有可能的N+1字母组合的概率。随着更多符号的输入,该表不断更新,使得概率能与压缩中的特定数据相适应。假设使用3阶上下文,单词here出现过几次,单词there未出现过,假定现在出现的是there中的r,而3阶上下文the后r的概率为0,3阶上下文模型的做法自然是可以直接把r不经压缩地写入压缩流。自适应模型的中心思想是利用有效的短上下文知识:如果一个长上下文出现了0概率,就切换到一个较短的上下文。先从N阶上下文开始,搜索已出现过的上下文(x个符号)后跟符号c,如果没有,就切换到N-1阶再试…。例如:当前的3阶上下文串the,已经出现了15次,后跟r(2次)、m(7次)、n(1次)、s(3次)、y(2次)。编码器给它们分配的概率分别为:2/20, 7/20, 1/20, 3/20,2/20。如果下一个输入的符号是m,以概率7/20送给算术编码器,然后将各概率分别更新为: 2/21, 8/21, 1/21, 3/21, 2/21。如果下一个读入的符号是l,上下文the中f的概率为0,如果二阶上下文he中l的概率为5/17,则把概率5/17送给算术编码器。如果符号c从未出现过,就切换到称为-1阶上下文的模型,分配给c一个固定的概率。

2.2.4 上下文建模

每个模型将已知位数的字符串S划分为一系列的上下文,然后将每个模型映射成用8bit状态来表示的位历史。这种状态被映射成可能性,可能性用有256个条目的表来表示。一次预测后,表的条目进行微小(通常是0.4%)的调整来减小预测误差。大多数情况下的模型实现是哈希表,数据量小的情况下的实现是直接查询表。

2.2.5 文本预处理

某些版本的PAQ,尤其是PAsQDa, PAQAR,从PAQ8HP1到PAQ8HP8对文本文件进行预处理是在外部查询字典中查询单词,然后用1-3byte编码来代替它。在PAQ8HP系列中,字典将语义和语法上的相关的单词放在一起,这使得模型只需要使用字典编码中最重要的一小部分来作为上下文。

3 结束语

本文比较详细的介绍了Huffman编码的实现,PAQ压缩算法只是进行了粗略的介绍,PAQ8HP8是目前世界上压缩比最大的算法,但其缺点非常明显,运行速度慢,耗费内存巨大,其广泛应用还要寄希望于算法的进一步优化和计算机性能的改进。

参考文献:

[1] 严蔚敏,陈文博.数据结构及应用算法教程[M].北京:清华大学出版社,2001:145.

[2] [EB/OL]./wiki/PAQ.

[3] Matthew V Mahoney.Adaptive Weighing of Context Models for Lossless Data Compression.

[4] [EB/OL]./wiki/%E6%95%B0%E6%8D%AE%E5%8E%8B%E7%BC%A9.

[5] 林福宗.多媒体技术基础[M].北京:清华大学出版社,2009:29-31.

注:本文中所涉及到的***表、注解、公式等内容请以PDF格式阅读原文

浅谈无损压缩算法

转载请注明出处学文网 » 浅谈无损压缩算法

学习

浅议工程计量

阅读(28)

本文为您介绍浅议工程计量,内容包括工程计量详细教程,浅谈工程计量。摘要:工程量计算(亦称工程计量)是工程概预算编制的主要内容,同时也是进行工程估价的重要依据。准确地计算工程量,对编制计划、财务管理以及成本计划执行情况的分析都是十分

学习

袋装砂井施工方案

阅读(22)

本文为您介绍袋装砂井施工方案,内容包括袋装砂井施工动画,袋装砂井施工工艺流程。摘要:通过对袋装砂井施工工艺程序进行全过程的控制,确保软基处理施工质量符合和满足设计及规范的要求。

学习

台背回填施工中的质量控制措施

阅读(23)

本文为您介绍台背回填施工中的质量控制措施,内容包括台背回填相关规定及监理控制要点,台背回填施工管理办法。摘要:回填的好坏直接关系到路面的平整度,在工程施工中必须高度重视桥涵构筑物的台背回填质量。本文针对台背回填施工中的质量控

学习

传统健身法――八段锦(坐式)

阅读(24)

本文为您介绍传统健身法――八段锦(坐式),内容包括少林坐式八段锦高清完整版,坐式八段锦教学完整版。坐式八段锦口诀

学习

电缆T接端子在工程中的应用分析

阅读(24)

本文为您介绍电缆T接端子在工程中的应用分析,内容包括电缆t型接线端子的使用方法,电缆t接头和T接箱区别。摘要:分析了电缆T接端子的施工特点,结合具体工程案例,通过大电缆直接进电表箱与采用电缆T接在工程施工过程中施工方法和工程成本的比

学习

刘蓓:和儿子一起快乐成长

阅读(24)

本文为您介绍刘蓓:和儿子一起快乐成长,内容包括刘蓓当后妈采访,作为单亲妈妈的刘蓓生活。2003年,刘蓓和著名导演张黎结婚,迎来生命中事业和情感的第二次绽放。然而,正当她享受着初为人母的喜悦时,这段婚姻就在“第三者”的传闻中于2007年10

学习

什么不是浮云

阅读(17)

本文为您介绍什么不是浮云,内容包括什么不是浮云,神马不是浮云原文。卖掉了家里值钱的东西,找亲戚东拼西借凑齐了第一年的学费,然后,他和儿子一起到西安,成为一名农民。

学习

强制医疗如何强制

阅读(33)

本文为您介绍强制医疗如何强制,内容包括强制医疗申请的法律规定,强制医疗怎样实施。资料显示,近10年来我国各精神病院累计收治肇事肇祸精神病患者75000例,有杀人行为者约占30%。按照2012年新修订的刑事诉讼法,应对实施暴力行为的精神病人实

学习

临时用工劳动合同

阅读(48)

本文为您介绍临时用工劳动合同,内容包括建筑工地临时用工劳动合同,临时工劳动合同全文。甲方(用人单位)名称:___________________________

学习

屈曲约束支撑概论与原理

阅读(25)

本文为您介绍屈曲约束支撑概论与原理,内容包括优良屈曲约束支撑原理,屈曲约束支撑设计方法与加工要点。关键词:屈曲约束支撑;基本构成;工作原理

学习

系统科学与数学

阅读(15)

本文为您介绍系统科学与数学,内容包括系统科学与数学是什么期刊,系统科学与工程专业。1.二维非饱和水流的全离散广义差分格式分析及其数值模拟李焕荣,LIHuanrong

学习

少林与太极

阅读(20)

本文为您介绍少林与太极,内容包括少林与太极,少林太极张三丰。少林擒拿十大技法——拧技张海

学习

小学语文教学中核心素养的培养

阅读(19)

本文为您介绍小学语文教学中核心素养的培养,内容包括小学语文教学的核心素养教案,小学语文教学中的核心素养与培养。内容摘要:本文将分析核心素养的培养在小学语文教育中所存在的重要性,进而提出相应的实施方法,希望为我国的教育事业提供帮

学习

生物降解高分子

阅读(19)

本文为您介绍生物降解高分子,内容包括生物高分子材料可降解的原理,生物可降解高分子的降解方法。我国目前的高分子材料生产和使用已跃居世界前列,每年产生几百万吨废旧物。如此多的高聚物迫切需要进行生物可降解,以尽量减少对人类及环境的

学习

土的压缩模量及变形模量之讨论

阅读(484)

本文为您介绍土的压缩模量及变形模量之讨论,内容包括变形模量和压缩模量的关系和区别,压缩模量和回弹模量是一样的吗。摘要:介绍了压缩模量以及变形模量的概念以及适用条件,指出压缩模量和变形模量之间的关系公式是理论上的,其适用性有待探

学习

基于lms算法时域均衡器的设计

阅读(13)

本文为您介绍基于lms算法时域均衡器的设计,内容包括lms时域数据处理方法,lms时域数据怎么加密。[摘要]本文介绍了自适应均衡器的发展历史,分析了信道,产生码间干扰的原因以及无码间干扰的条件;阐述了时域均衡器的工作原理,介绍了如何用有限

学习

文本聚类算法综述

阅读(21)

本文为您介绍文本聚类算法综述,内容包括文本聚类算法设计怎么弄,文章聚类算法。摘要:随着Internet的发展,作为数据挖掘关键技术的文本聚类也快速的发展起来。本文主要介绍了文本聚类的一些主要的算法以及文本聚类中使用到的关键技术,从而对

学习

计算智能主要算法概述

阅读(21)

本文为您介绍计算智能主要算法概述,内容包括智能计算的最为常见的算法,智能算法和控制算法。摘要:本文主要介绍计算智能中的几种算法:模糊计算、遗传算法、蚂蚁算法、微粒群优化算法(PSO),详细描述了这几种算法的发展历史、研究内容及在本研

学习

浅述压缩机制冷原理

阅读(21)

本文为您介绍浅述压缩机制冷原理,内容包括螺杆式制冷压缩机工作原理,压缩机制冷和设计的区别。随着人们生活水平的不断提高,我们的生活质量越来越好,我们家电行业也发生越来越大的变化,电冰箱也成为我们每家每户必须的生活用品。在改革开放

学习

压缩机技术

阅读(13)

本文为您介绍压缩机技术,内容包括压缩机设计资料,压缩机api标准。1.涡旋型线研究进展的探讨张贤明,陈国强,王立存,牟瑛,陈彬,ZHANGXian-ming,CHENGuo-qiang,WANGLi-cun,MUYing,CHENBin

学习

排课系统算法及功能的实现

阅读(38)

本文为您介绍排课系统算法及功能的实现,内容包括排课系统设计实现功能,排课系统有哪些算法。摘要:文中介绍了回溯算法的基本思想和特点,分析了回溯算法在排课系统应用与其他算法的不同之处。针对排课系统理念分析,解决排课时教师时间、班级