收藏 分享(赏)

算术压缩论文++基于算术编码的数据压缩算法研究与实现.doc

上传人:dreamzhangning 文档编号:3012639 上传时间:2018-10-01 格式:DOC 页数:31 大小:109KB
下载 相关 举报
算术压缩论文++基于算术编码的数据压缩算法研究与实现.doc_第1页
第1页 / 共31页
算术压缩论文++基于算术编码的数据压缩算法研究与实现.doc_第2页
第2页 / 共31页
算术压缩论文++基于算术编码的数据压缩算法研究与实现.doc_第3页
第3页 / 共31页
算术压缩论文++基于算术编码的数据压缩算法研究与实现.doc_第4页
第4页 / 共31页
算术压缩论文++基于算术编码的数据压缩算法研究与实现.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、托斯卡纳文艺复兴的最初摇篮,意大利的静谧空间 首页 关于 珞樱 推荐 留言 记忆 基于颜色特征的图像检索系统设计入侵检测通信机制的设计 基于算术编码的数据压缩算法研究与实现 六月 25th, 2008 在现今的电子信息技术领域,由于需要处理的数字化的信息(尤其是多媒体信息)通常会特别庞大,如果不对其进行有效压缩就难以得到实际应用,数据压缩的目的即是通过有效减少数据文件的冗余信息而使数据文件可以以更快的速度传输或在更少的空间储存。因此数据压缩技术已成为当今数字通信、存储和多媒体娱乐的一项关键的共性技术。本文由香农熵理论和统计编码的原理开始,逐步展开对基于算术编码的数据压缩的研究与应用的讨论:从算

2、术编码的原理、产生条件、以及研究算术编码的目的意义等,到具体算术编码方案的分析比较以及其 C+语言的实现方案,有重点的对算术编码的特点进行了分析和阐述。而针对算术编码在处理二元符号时高压缩比、低复杂度的特点,本文着重探讨了算术编码方法处理二元数据流的过程的特点和效率优势,并将算术编码的不同实现方法进行了分析和比较,特别是对 N 阶自适应编码的特点和处理文字信息的优势进行了分析,然后将其和与之较为类似的 Huffman 编码进行了比较,通过比较得出了算术编码具有但Huffman 编码不具有的在处理数据流方面的优势,即 Huffman 编码必须在得到全部数据文件之后才可以对文件进行编码处理,而算术

3、编码方法可以在只得到数据流片段的情况下就开始对数据进行压缩,使得当处理数据流信息时在保证高压缩比的同时具有了很大的灵活性。本文通过对算术算法特点和应用方向的研究,阐明其在数据压缩领域不可取代的地位及在处理流片段数据所具有的在压缩比和灵活性方面的优势,展示出算术编码的强大生命力和独特优势。最后,应用文中研究得到的算术编码方法和实现模型,在 Windows 系统下,使用 Visual C+ 作为编程工具,实现了算术编码及其应用程序界面,对于接近二进制流的文件,本设计具体令人满意的压缩效果,对其他格式的文件也有较好的压缩效果,达到了论文的设计目标。关键词:算术编码、无损压缩、自适应模式目 录摘 要

4、IIABSTRACT III第一章 绪论 11.1 数据压缩 11.2 数据压缩的现状与发展趋势 21.3 课题研究的意义 4第二章 算术编码原理及特点 52.1 统计编码 52.2 算术编码原理 62.2.1 算术编码理论 62.2.2 算术压缩模式 8第三章 典型算术编码方案分析 123.1 WNC 算法算术编码 123.2 基于上下文的二进制算术编码 143.3 自适应算术编码算术及其实现 16第四章 算术编码系统的实现 204.1 软件模块设计 204.2 软件模块的具体实现 214.2.1 输入输出模块的实现 214.2.2 压缩模块的实现 244.2.3 解压模块的实现 274.3

5、 压缩效率分析 304.4 软件设计的优点与不足 314.5 软件设计值得改进的地方 31第五章 算术编码总结 33参考文献 35致 谢 36附 录 37算法源代码 37摘 要ABSTRACTNowadays, as the digital information (especially the multimedia information) becomes more voluminous in the telegraphy field, the information should be compressed availably. The purpose of data compressio

6、n is reducing the redundancy of data files effectively for faster transfer and/or smaller space for storage. So the data compression technology becomes a common pivotal technology for digital communication, storage and multimedia entertainment.From Shannon entropy theory and the statistics coding th

7、eory, this paper sets forth the research and application of the data compression which based on Arithmetic Coding, including the arithmetic coding theory, the having conditions and the purpose of arithmetic coding and then the research of the specific implementation plan with C+ language of arithmet

8、ic coding. Against the point of arithmetic coding, this paper analysis and expounds its superiority about it . For the characteristic of the superiority of compression ratio and complexity, this paper probe into the process of deal with the binary data streams and the superiority of efficiency. And

9、taking compared between the different implementation plan, especially the characteristic of Order-N adaptive coding and the superiority in dealing with the textual information. Then compares arithmetic coding with the Huffman coding method which is very resembles with it, getting the superiority in

10、dealing with the data stream fragment: arithmetic coding doesnt need the complete file before need to encode it, but Huffman coding method cannot do it like this. That means arithmetic do not only have the superiority in compression ratio but also in flexibility.Through the research of the character

11、istic and the application direction of arithmetic coding, this paper illuminates the unplaced status of Arithmetic Coding, the outstanding compress ratio and agility in deal with data stream fragments and brings forth the life force and its unique superiority.At last, by the arithmetic coding method

12、 and implement model researched in this paper, completed the coding method and its correspondingly application procedure interface using Visual C+ programming tools in the Windows operating system. The test result shows that to the files close to the binary files, this design procures a satisfactory

13、 outcome. And to the files in other format, this design also get a preferably results. So, the design achieves the goal required in this paper.KEY WORDS arithmetic coding, lossless compression, adaptive model第一章 绪论1.1 数据压缩数据压缩,用一句话说,就是用最少的数码来表示信号,即将字符串的一种表示方式转换为另一种表示方式,新的表示方式包含相同的信息量,但是长度比原来的方式尽可能的短

14、。其作用是:能较快地传输各种信号,如传真、Modem通信等;在现有的通信干线并行开通更多的多媒体业务,如各种增值业务;紧缩数据存储容量,如 CDROM、VCD 和 DVD 等;降低发信机功率,这对于多媒体移动通信系统尤为重要。也就是说,通信时间、传输带宽、存储空间甚至发射能量,都可能成为数据压缩的对象。数据之所以能够被压缩是基于以下几点的考量:首先,数据中间常存在一些多余成分,既冗余度。如在一份计算机文件中,某些符号会重复出现、某些符号比其他符号出现得更频繁、某些字符总是在各数据块中可预见的位置上出现等,这些冗余部分便可在数据编码中除去或减少。冗余度压缩是一个可逆过程,因此叫做无失真压缩,或称

15、保持型编码。其次,数据中间尤其是相邻的数据之间,常存在着相关性。如图片中常常有色彩均匀的背影,电视信号的相邻两帧之间可能只有少量的变化影物是不同的,声音信号有时具有一定的规律性和周期性等等。因此,有可能利用某些变换来尽可能地去掉这些相关性。但这种变换有时会带来不可恢复的损失和误差,因此叫做不可逆压缩,或称有失真编码、摘压缩等。此外,人们在欣赏音像节目时,由于耳、目对信号的时间变化和幅度变化的感受能力都有一定的极限,如人眼对影视节目有视觉暂留效应,人眼或人耳对低于某一极限的幅度变化已无法感知等,故可将信号中这部分感觉不出的分量压缩掉或”掩蔽掉”。这种压缩方法同样是一种不可逆压缩。数据压缩跟编码技

16、术联系紧密,压缩的实质就是根据数据的内在联系将数据从一种编码映射为另一种编码。压缩前的数据要被划分为一个一个的基本单元。基本单元既可以是单个字符,也可以是多个字符组成的字符串。称这些基本单元为源消息,所有的源消息构成源消息集。源消息集映射的结果为码字集。可见,压缩前的数据是源消息序列,压缩后的数据是码字序列。若定义块为固定长度的字符或字符串,可变长为长度可变的字符或字符串,则编码可分为块到块编码、块到可变长编码、可变长到块编码、可变长到可变长编码等。应用最广泛的 ASCII 编码就是块到块编码。对于数据压缩技术而言,最基本的要求就是要尽量降低数字化的在码事,同时仍保持一定的信号质量。不难想象,

17、数据压缩的方法应该是很多的,但本质上不外乎上述完全可逆的冗余度压缩和实际上不可逆的嫡压缩两类。冗余度压缩常用于磁盘文件、数据通信和气象卫星云图等不允许在压缩过程中有丝毫损失的场合中,但它的压缩比通常只有几倍,远远不能满足数字视听应用的要求。在实际的数字视听设备中,差不多都采用压缩比更高但实际有损的媳压缩技术。只要作为最终用户的人觉察不出或能够容忍这些失真,就允许对数字音像信号进一步压缩以换取更高的编码效率。摘压缩主要有特征抽取和量化两种方法,指纹的模式识别是前者的典型例子,后者则是一种更通用的摘压缩技术。1.2 数据压缩的现状与发展趋势设计具体的压缩算法时,设计者首先要做的是寻找一种能尽量精确

18、地统计或估计信息中符号出现概率的方法,然后还要设计一套用最短的代码描述每个符号的编码规则。统计学知识对于前一项工作相当有效,迄今为止,人们已经陆续实现了静态模型、半静态模型、自适应模型、Markov 模型、部分匹配预测模型等概率统计模型。第一个实用的编码方法是由 D. A. Huffman 在 1952 年的论文”最小冗余度代码的构造方法”1中提出的。直到今天,许多”数据结构”教材在讨论二叉树时仍要提及这种被后人称为 Huffman 编码的方法。 Huffman 编码看似简单,但却影响深远,其编码效率高,运算速度快,实现方式灵活,从 20 世纪 60 年代至今,在数据压缩领域得到了广泛的应用。

19、1968 年前后, P. Elias2 发展了 Shannon 和 Fano 的编码方法,构造出从数学角度看来更为完美的 Shannon-Fano-Elias 编码。沿着这一编码方法的思路, 1976 年, J. Rissanen3 提出了一种可以成功地逼近信息熵极限的编码方法算术编码。 1982 年, Rissanen 和 G. G. Langdon4 一起改进了算术编码。之后,人们又将算术编码与 J. G. Cleary 和 I. H. Witten5 于 1984 年提出的部分匹配预测模型( PPM )相结合,开发出了压缩效果近乎完美的算法。今天,那些名为 PPMC 、 PPMD 或 P

20、PMZ 并号称压缩效果天下第一的通用压缩算法,实际上全都是这一思路的具体实现。犹太人 J. Ziv 和 A. Lempel 脱离 Huffman 及算术编码的设计思路,创造出了一系列比 Huffman 编码更有效,比算术编码更快捷的压缩算法。这些算法统称为 LZ 系列算法,如: LZ77 算法, LZ78 的压缩算法,以及 LZW 算法。该系列算法的思路并不新鲜,其中既没有高深的理论背景,也没有复杂的数学公式,它们只是用一种极为巧妙的方式将字典技术应用于通用数据压缩领域。这种基于字典模型的思路在表面上虽然和 Shannon 、 Huffman 等人开创的统计学方法大相径庭,但在效果上一样可以逼

21、近信息熵的极限。而且 LZ 系列算法在本质上符合信息熵的基本规律。 LZ 系列算法的优越性使得使用该算法的压缩软件数量呈爆炸式增长。今天,我们熟悉的 PKZIP 、 WinZIP 、 WinRAR 、Gzip 等压缩工具以及 ZIP、GIF、PNG 等文件格式都是 LZ 系列算法的受益者。在图像压缩领域,著名的 JPEG 标准是有损压缩算法中的经典。 JPEG 标准由静态图像联合专家组( Joint Photographic Experts Group , JPEG )于 1986 年开始制定,1994 年后成为国际标准。 JPEG 以离散余弦变换( DCT )为核心算法,通过调整质量系数控制

22、图像的精度和大小。CCITT 于 1988 年制定了电视电话和会议电视的 H.261 建议草案。 H.261 的基本思路是使用类似 JPEG 标准的算法压缩视频流中的每一帧图像,同时采用运动补偿的帧间预测来消除视频流在时间维度上的冗余信息。在此基础上, 1993 年, ISO 通过了动态图像专家组( Moving Picture Experts Group , MPEG )提出的 MPEG-1 标准。 MPEG-1 可以对普通质量的视频数据进行有效编码。为了支持更清晰的视频图像,特别是支持数字电视等高端应用, ISO 于 1994 年提出了新的 MPEG-2 标准(相当于 CCITT 的 H.

23、262 标准)。 MPEG-2 对图像质量作了分级处理,可以适应普通电视节目、会议电视、高清晰数字电视等不同质量的视频应用。在我们的生活中,可以提供高清晰画面的 DVD 影碟所采用的正是 MPEG-2 标准。Internet 的发展对视频压缩提出了更高的要求。ISO 于 1999 年通过了 MPEG-4 标准(相当于 CCITT 的 H.263 和 H.263+ 标准)。 MPEG-4 标准拥有更高的压缩比率,支持并发数据流的编码、基于内容的交互操作、增强的时间域随机存取、容错、基于内容的尺度可变性等先进特性。音频数据的压缩技术最早是由无线电广播、语音通信等领域里的技术人员发展起来的。这其中又

24、以语音编码和压缩技术的研究最为活跃。自从 1939 年 H. Dudley 发明声码器以来,人们陆续发明了脉冲编码调制( PCM )、线性预测( LPC )、矢量量化( VQ )、自适应变换编码( ATC )、子带编码( SBC )等语音分析与处理技术。这些语音技术在采集语音特征,获取数字信号的同时,通常也可以起到降低信息冗余度的作用。为获得更高的编码效率,大多数语音编码技术都允许一定程度的精度损失。而且,为了更好地用二进制数据存储或传送语音信号,这些语音编码技术在将语音信号转换为数字信息之后又总会用 Huffman 编码、算术编码等通用压缩算法进一步减少数据流中的冗余信息。很显然,在多媒体信

25、息日益成为主流信息形态的数字化时代里,数据压缩技术特别是专用于图像、音频、视频的数据压缩技术还有相当大的发展空间毕竟,人们对信息数量和信息质量的追求是永无止境的。1994 年, M. Burrows 和 D. J. Wheeler 共同提出了一种全新的通用数据压缩算法。这种算法的核心思想是对字符串轮转后得到的字符矩阵进行排序和变换,类似的变换算法被称为 Burrows-Wheeler 变换,简称 BWT 。与 Ziv 和 Lempel 另辟蹊径的做法如出一辙, Burrows 和 Wheeler 设计的 BWT 算法与以往所有通用压缩算法的设计思路都迥然不同。如今, BWT 算法在开放源码的压

26、缩工具 bzip 中获得了巨大的成功, bzip 对于文本文件的压缩效果要远好于使用 LZ 系列算法的工具软件。这至少可以表明,即便在日趋成熟的通用数据压缩领域,只要能在思路和技术上不断创新,我们仍然可以找到新的突破口。分形压缩技术是图像压缩领域近几年来的一个热点。这一技术起源于 B. Mandelbrot 于 1977 年创建的分形几何学。 M. Barnsley 在 20 世纪 80 年代后期为分形压缩奠定了理论基础。从 20 世纪 90 年代开始, A. Jacquin 等人陆续提出了许多实验性的分形压缩算法。今天,很多人相信,分形压缩是图像压缩领域里最有潜力的一种技术体系,但也有很多人

27、对此不屑一顾。无论其前景如何,分形压缩技术的研究与发展都提示我们,在经过了几十年的高速发展之后,也许,我们需要一种新的理论,或是几种更有效的数学模型,以支撑和推动数据压缩技术继续向前跃进。人工智能是另一个可能对数据压缩的未来产生重大影响的关键词。既然 Shannon 认为,信息能否被压缩以及能在多大程度上被压缩与信息的不确定性有直接关系,假设人工智能技术在某一天成熟起来,假设计算机可以像人一样根据已知的少量上下文猜测后续的信息,那么,将信息压缩到原大小的万分之一乃至十万分之一,恐怕就不再是天方夜谭了。人们总喜欢畅想未来,但未来终究是未来,对未来的预测其主要基准还是我们现有的应用技术和思维模式,

28、未来技术的发展存在着诸多的不可预测性,但终究离不开现有的技术基础,所以这就是本文所作对压缩算法进行研究和应用探讨的意义所在。1.3 课题研究的意义电脑里的数据压缩的主要功用有两个:第一,可以节省存储空间;第二,可以在通信过程中减少对带宽的占用。虽然随着存储技术的快速发展,电脑的主存储器、辅助存储器的容量以及数据通信的带宽都有了很大提高,但如何在相同的空间存储更多的信息以及在已有的带宽情况下,更快捷的传输更多的信息,仍主要取决于数据压缩技术的发展。 如果没有数据压缩技术,那我们每次对数据信息进行提取和操作,与现在相比,将是个漫长复杂的过程,更无法在短时间内对海量信息进行检索,而视频和音频信息也将

29、是人类信息交换的巨大负担。为方便信息的存储、检索和使用,在进行信息处理时赋予信息元素以代码的过程。编码的目的在于提高信息处理的效率。信息编码必须标准、系统化。设计合理的编码系统是关系信息管理系统生命力的重要因素。信息编码的基本原则是在逻辑上要满足使用者的要求,又要适合于处理的需要;结构易于理解和掌握;要有广泛的适用性,易于扩充。一般应有的代码有两类,一类是有意义的代码,即赋予代码一定的实际意义,便于分类处理;一类是无意义的代码,仅仅是赋予信息元素唯一的代号,便于对信息的操作。在通信理论中,编码是对原始信息符号按一定的数学规则所进行的变换。编码的目的是要使信息能够在保证一定质量的条件下尽可能迅速

30、地传输至信宿。第二章 算术编码原理及特点2.1 统计编码数据压缩可以分为可逆的无失真编码和不可逆的有失真编码两大类基本方法6。因为大多数计算机文件都不允许在压缩过程中丢失信息,所以对各种信源都通用的可逆压缩方法就显得更为重要,这类方法主要利用消息或消息序列出现的概率的分布特性,注重寻找概率与码字长度间的最优匹配,叫做统计编码或概率匹配编码,统称为熵编码。计算机文件表现为字符集合(如文本)或二进制符号( 一般为 0 和 1)集合。两者的最终形式都是”0、”1代码,只是前者一般用 ASCII 码编码表示。文本文件包括电报报文、程序指令等,一般由 10 进制数字 09、英文字母及$、*、有随机热噪声

31、信道的最大传输速率与信道带宽; 信号噪声功率比之间的关系.在有随机热噪声的信道上传输数据信号时,数据传输率 Rmax 与信道带宽 B,信噪比 S/N 关系为: Rmax=Blog2(1+S/N) 在信号处理和信息理论的相关领域中,通过研究信号在经过一段距离后如何衰减以及一个给定信号能加载多少数据后得到了一个著名的公式,叫做香农(Shannon)定理。它以比特每秒(bps)的形式给出一个链路速度的上限,表示为链路信噪比的一个函数,链路信噪比用分贝(dB)衡量。因此我们可以用香农定理来检测电话线的数据速率。香农定理由如下的公式给出: C=Blog2(1S/N) 其中 C 是可得到的链路速度,B 是

32、链路的带宽,S 是平均信号功率,N 是平均噪声功率,信噪比(S/N)通常用分贝(dB)表示,分贝数=10log10(S/N)。讨论熵编码就必需要了解熵(entropy)的概念:(1)熵是信息量的度量方法,它表示某一事件出现的消息越多,事件发生的可能性就越小,数字上就是概率越小。(2)某个事件的信息量用 =-logi 表示,其中 为第 i 个事件的概率,0 write(reinterpret_cast(mBitCount = 0;/根据文件是否读完决定是否继续对文件进行读取unsigned char ArithmeticCoderC:GetBit()/当比特计数为 0 时if(mBitCount

33、 = 0) / buffer emptyif( !( mFile-eof() ) ) /若未读完mFile-read(reinterpret_cast(/继 /续读取else/否则清空比特缓冲区,并置比特计数为满mBitBuffer = 0;mBitCount = 8;/ 从缓冲区取出比特,继续处理unsigned char bit = mBitBuffer 7;mBitBuffer -1/ 更新下界mLow = mLow + mStep * low_count;/用 e2/e3 方法while( ( mHigh = g_Half ) )/当上界低于 1/2 或下界高于 1/2 时/当上界低于

34、 1/2,if( mHigh 0; mScale- )SetBit( 1 );/当下界等于 1/2 时else if( mLow = g_Half )SetBit( 1 );置比特位为 1mLow = 2 * ( mLow - g_Half );mHigh = 2 * ( mHigh - g_Half ) + 1;/应用 e3 方法for(; mScale 0; mScale- )SetBit( 0 );while( ( g_FirstQuarter = g_Half ) ) / /mHigh = g_Half )mLow = 2 * ( mLow - g_Half );mHigh = 2 *

35、 ( mHigh - g_Half ) + 1;mBuffer = 2 * ( mBuffer - g_Half ) + GetBit();mScale = 0;while( ( g_FirstQuarter = mLow ) mLow = 2 * ( mLow - g_FirstQuarter );mHigh = 2 * ( mHigh - g_FirstQuarter ) + 1;mBuffer = 2 * ( mBuffer - g_FirstQuarter ) + GetBit();最后,为了方便本设计软件的演示,在操作界面加入了关键代码的显示按键,可以实现对与运行程序在同一文件夹中的

36、名为 “ArithmeticCoderC“的 .cpp 文件以文本文件的方式打开。实现界面如下:图 4.8 包含关键代码查看的软件界面图 4.9 关键代码查看4.3 压缩效率分析按字节对 250 万字的汉语语料库进行统计 , 结果表明 , 153 个符号的覆盖率超过 99.99% , 199 个符号的覆盖率达到 100%。对数据压缩领域普遍认可的Calgary 语料库中的英语文本文件及计算机源程序文件做统计 , 100 个符号的覆盖率超过 99. 99%, 104 个符号则实现完全覆盖。因此 ,探讨数据压缩对不同类型字符文件的压缩做用 , 不仅仅是对语言文字文本压缩有意义。为了更直接的展示出本

37、设计所实现的压缩性能,下面将会使用本设计对一些文件进行压缩,文件类型包括 .bin, .txt, .doc, .mp3 。参数类型 压缩前 压缩后 压缩比 压缩时长.txt 文件 462KB 354KB 0.766 2.6s.doc 文件 581KB 497KB 0.855 3.1s. bin 文件 541KB 483KB 0.893 2.9s.mp3 文件 1075KB 1072KB 0.997 4.8s表 5.1测试环境:系 统: Windows XP处理器 : AMD Sempron64内 存:单条 512MB通过以上比较可以看出,使用本设计软件对文件进行压缩时,效率最优的是 .txt

38、文件,其次是文件 .doc,下来是 .bin 和 .mp3 文件。 .txt 文件的压缩比达到了 0.766,分析其原因,应该是由于本设计软件是针对二进制数据文件设计的,即将目标文件作为二进制数据文件进行处理,而并没有对不同类型的文件进行特别处理,所以对于不同文件,其数据特性越接近二进制数据流,即其中二进制字符 “0“与 “1“的分布越偏离 1:1,本设计软件对其的处理能力就越强。比如前面对 .txt 文件进行处理时,因为 .txt 文件是采用 ASCII 码为主要记录格式的文字信息记录文件,所以其中对各种字符和标记符号的编码特性是依照ASCII 码编码特性的,因此其编码中二进制字符 “0“与

39、 “1“的分布并不十分接近 1:1的概率比值,而 .doc 文件因为与 .txt 文件相比,采用了较多的控制符号,所以其文件中二进制字符 “0“与 “1“的分布与 .txt 相比更靠近 1:1,所以可以获得较 .txt 文件为高的压缩比;对于 .bin 文件,由于其本身就是二进制文件,所以它自身的二进制字符 “0“与 “1“的分布在通常情况下已经较为接近 1:1 的概率比值,所以对其进行多次压缩测试时,压缩比在 0.6 到接近 1.0 的范围浮动,而其文件的概率大多分布在 0.8 左右,所以上表采取了与这一数值相近的一个测试结果来作为不同类型文件压缩效率的比较。但是对一些有特殊用途的应用软件使

40、用的文件如 mp3 等文件,加之其本身就是有较大压缩效果的文件,本设计软件的处理能力就不能使人非常满意了。4.4 软件设计的优点与不足本软件设计的优点在于:1)对二进制数据流的高压缩比:在二进制数据 “0“、 “1“的出现概率接近 1:1 的时候,它有着非常有优势的压缩比;2)为了实现日后对其进行改进,本设计在模式设置的时候将压缩解压模块的自适应模式模块设计为独立的,可以选择不同的压缩解压模式进行。当日后要对其扩充或改变其自适应阶数,及相关参数,使其适合于特别的文件类型。3)使用简单方便的文件流类 fstream 对数据文件进行读写操作,因为 fstream 是由标准 C/C+ 类库提供的,所

41、以具有良好的通用性和可移植性。本软件设计的不足:1)缺少对进程的控制,在对文件进行压缩解压的时候,由于不能实现进程控制,所以不能及时了解到压缩的进度,而且在压缩解压过程中途也不能对操作进行取消;2)由于对数据文件操作完全是利用标准 C/C+ 类库提供的函数实现的,所以在运行过程中,本设计存在对 CPU 的占用问题,当处理较大型文件的时候,会出现 CPU 占用率过高的情况,可能影响其他软件的同时运行。4.5 软件设计值得改进的地方本软件实现了用自适应模式对二进制数据流 /文件进行编解码处理,但还可以进行一些改进,用于提升性能:1)可以增加对压缩解压过程的进程控制,使得在压缩和解压过程中,用户可以

42、根据情况随时对编码过程进行操作控制,这可以使软件使用的灵活性大大增加,并且有可能在实际应用过程中,避免一些意外状况的发生;2)增加对占用 CPU 的问题的考虑,使得在软件运行过程中,可以多些对多任务的支持,而不会因为本软件的运行占用 CPU 而影响其他软件并行运行。第五章 算术编码总结算术编码是一种无失真的编码方法,能有效地压缩信源冗余度,属于熵编码的一种 11。算术编码的一个重要特点就是可以按分数比特逼信信源熵,突破了Huffman 编码每个符号只不过能按整数个数比特逼近信源熵的限制。对信源进行算术编码,往往需要两个过程,第一个过程是建立信源概率表,第二个过程是对信源发出的符号序列进行扫描编

43、码。而自适应算术编码在对符号序列进行扫描的过程中,可一次完成上述两个过程,即根据恰当的概率估计模型和当前符号序列中各符号出现的频率,自适应地调整各符号的概率估计值,同时完成编码。尽管从编码效率上看不如已知概率表的情况,但正是由于自适应算术编码具有实时性好、灵活性高、适应性强等特点,在图像压缩、视频图像编码等领域都得到了广泛的应用。经过算术编码,我们描述了一种高效率的数据压缩的编码方法,并已证明它符合 bijective 编码的要求。现在我们不仅通过整数实现,而且也通过浮点数实现了该压缩算法。我们看到算术编码可以按输入顺序进行,对每个编码不需得到其全部消息就可将信息的已编码部分输出。这种特性可用

44、三种按比例变化的方式压缩,可以加大工作间隔而不会溢出甚至可以按需要限定其每次处理的码长。我们也看到一般编码的有效限度并注意所增加输入序列长度,即可使其平均码长与熵接近而有此熵值与选择的压缩模式有关。我们注意到在一种模式质量被实际限定后,任何编码器都可以满足这个压缩比。这里,我们同样认识到算术编码的另一优势 因为它的统计模式可以方便切换,故可为输入的数据挑选最适合的模式。虽然算术编码在过去的几十年开始使用并被看好,但现在和未来却产生了一些变化和新动向。然而有时人们声称已发明更好的算法而且多次测试得出其比以前任何方法都好 但却忽略了算术编码是一种无损编码。因为 Shannon 定理确定地告诉我们压

45、缩后的熵是不可能比其压缩前的熵更低的。一个人可以把数据的冗余任意删除,但要达到熵值是几乎不可能的。然而我们可以至少从两方面使我们的算法变得更好存储器使用率和编码速度。如果算术编码使用存储器的话,那这将会是最好的压缩方法。对于简单模式,它一般只用固定容量的存储器。而且它生成了无法被压缩得更小的编码。要注意这种编码的熵极限取决于如下模式: H(S) HM(S) |Code(S)|。我们应区分源序列本来的熵值 H(S)和我们采用的编码模式所能得到的熵值下限 HM(S)。但如果选择了不适当的模式,即使算术编码能达到 HM(S),它仍旧离最佳压缩效果很远。因为输入数据一般不可预测,我们不得不为特别的编码

46、内容找到适当的模式,算术编码允许使用专门设计的标准组件,因此编码器能在不同模式间切换,甚至在编码过程中也可进行切换。现在已经开发出很多模式,最流行的模式系列之一是 PPM (Prediction with Partial Match) 部分匹配预测编码。它对输入长度可能变化的内容进行压缩非常有效,而很多其他高效编码方式则需要更多可靠的正确的条件才行。随着算术编码器速度的提高,集成编码器变得常见,但现代 CPU 浮点运算能力的提高可能会改变这种趋势,我们已经知道基于浮点的算术编码的实现是可能的一种非常有效的集成实现是界限编码器它表现出对比特数据按比例压缩的良好特性。因此替换现有的 CPU 中对比

47、特不敏感的部分就是现在的主要问题。有些报道说有人将压缩速度提升 50%而同时码长只增加 0.01%,对于这些数字则须要小心对待,因为它们只反映出了编码器的表现,而不是因为采用了新的有效的模式。可以看出,算术编码的最有趣的研究领域是编码模式。对一个好的编码器来说编码大小、存储器使用率和编码速度作为次要因素都取决于所选择的模式,而算术编码发展的过程本身就是这样的例证。参考文献1 D.A.Huffman. A Method for the Construction of Minimum Redundancy Codes. J Proceedings of the Institute of Radio Engineers. 40(9):1098-1101, September 1952.2 Elias P. Information theory and coding.J NY: New York , Mc2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报