计算机论文
当前位置:首页 > 论文范文 > 计算机论文 > 列表页

计算机论文压缩

小草范文网  发布于:2016-12-22  分类: 计算机论文 手机版

篇一:文件压缩与解压缩实践论文

文件压缩与解压缩实践

摘 要

随着人们对数据的大量需求以及计算机使用时间的增加,计算机磁盘上的文件越来越大,越来越多。如何让有限的磁盘空间容纳更多的数据成为需要解决的问题。一方面,高速发展的存储技术以提高磁盘容量来解决这样的需求,但随着网络环境下数据传递的产生以及带宽的限制,大容量数据问题日益突出。在这两种需求的推动下,对数据压缩的需求产生了。人们可以将文件在不改变其本身的条件下,将其以更小的占用空间存储,并且在需要的时候将文件恢复成原有的样子,这就是压缩目的。本论文主要研究文件的无损压缩技术,并简要介绍了文件压缩的分类、几种常用的无损压缩格式和常用的压缩算法。运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩操作。

关键词:压缩;解压缩;GZIP;Java

Practice of File Compression and Decompression

Abstract

As the great demand for data and the using time of computer are increasing, computer files on the disk grow more and more. How to make the limited disk space to store more data has became a problem crying out for solutions. On one hand, the rapid development of storage technology that can increase the disk capacity, can meet such demand. However, with the emergence of data transmission in a network environment and the bandwidth limitations, the problem of large-capacity data is increasingly prominent. With the promotion of both demands, the need for data compression and decompression is generated. People can store a file with a smaller storage space without changing the file’s own condition, and can restore the file; that is the purpose of data compression and decompression. This treatise principally research file lossless compression, otherwise, briefly introduced classification of file compression, some general lossless compression format and general compression algorithm. A procedure within algorithm called GZIP were designed for file compression and decompression in Java language under the circumstances of Jbuilder2006,which used LZ77 dictionary algorithm, lazy match algorithm and Huffman coding algorithm. Users could use this procedure compress or decompress files expediently according to their demand.

Key words: Compression; Decompression; GZIP; Java

目 录

论文总页数:21页

1 引言 ........................................................................................................................................... 1

1.1 课题背景.......................................................................................................................... 1

1.2 国内外现有的研究成果 .................................................................................................. 1

2 压缩与解压缩程序分析 ........................................................................................................... 2

2.1

2.2

2.2.1

2.2.2

2.2.3 需求分析.......................................................................................................................... 2 使用的算法理论 .............................................................................................................. 2 LZ77算法简介 ......................................................................................................... 2 Huffman算法简介 ................................................................................................... 3 GZIP算法原理分析 ................................................................................................. 4

2.3 开发环境.......................................................................................................................... 4

3 总体设计 ................................................................................................................................... 4

3.1

3.2

3.2.1

3.2.2 程序功能模块 .................................................................................................................. 5 模块分析与流程图 .......................................................................................................... 5 压缩模块 ................................................................................................................... 5 解压缩模块 ............................................................................................................... 6

3.3 程序中各个类的初步定义 .............................................................................................. 7

4 详细设计和实现 ....................................................................................................................... 8

4.1

4.2

4.3

4.3.1

4.3.2 压缩的程序流程 .............................................................................................................. 8 解压缩的程序流程 .......................................................................................................... 9 主函数代码.................................................................................................................... 10 gzip压缩模块代码 ................................................................................................. 10 ungzip解压缩模块代码 ......................................................................................... 11

4.4 程序界面设计 ................................................................................................................ 12

5 软件系统测试 ......................................................................................................................... 17

5.1

5.2

5.3

5.3.1

5.3.2 运行环境........................................................................................................................ 17 测试方法........................................................................................................................ 17 测试结果........................................................................................................................ 17 使用程序对txt文件压缩 ....................................................................................... 17 使用程序对bmp图象文件压缩 ............................................................................ 18

5.3.3 使用程序对doc文件压缩 ..................................................................................... 18

结 论............................................................................................................................................. 19

参考文献 ......................................................................................................................................... 19

致 谢 ......................................................................................................................................... 20

声 明 ......................................................................................................................................... 21

1 引言

1.1 课题背景

随着科学技术的进步,信息技术越来越广泛地应用到社会的各个行业和领域,互联网深刻地改变着人们的生活方式,推动着人类文明的进步。伴随着信息技术的普及和发展,互联网技术覆盖了社会政治、经济、文化、生产的各个领域,这种普及日常生活和工作更加的方便、文化娱乐方式更加的多样化。但是,在信息技术的飞速发展下,文件的信息量不断增加的背景下,文件的存储和拷贝要求能够保持数据的意思不变的情况下缩小容量,这就需要有压缩与解压缩来实现这个过程。本论文通过对一种压缩与解压缩方法的实践,对这种算法的实现过程进行研究。

1.2 国内外现有的研究成果

文件压缩格式现在已有许多种,最流行的有如下几种:

ZIP:我们可以利用WinZip对ZIP文件进行解压、释放等操作,还可以用它来处理ARJ、ARC、CAB、LZH等多种不同格式的压缩文件,从而大大地方便了用户的操作。

RAR:是一种高效快速的文件压缩格式,但不被大多数文件压缩程序支持,WinRAR是在Windows下处理RAR格式文件的最好工具。

ARJ:由DOS下曾经红极一时的压缩软件ARJ压缩而成的文件格式,它具有功能强大、压缩率高等优点。到了现在的Windows时代,它已经没有了往日的辉煌。

CAB:是Windows 98新增的一种特殊压缩文件格式,主要用于对有关软件安装盘中的文件进行压缩,其特点是压缩率非常高(可能是目前最高的),但一经压缩就不能再进行任何增加、删除、替换等修改,也就是说它的压缩包具有“只读”属性。我们也可使用WinZip对CAB压缩包进行操作。

UU/UUE:汉字编码方式,它们原本是Unix系统中使用的一种编码方式,后来被改写到DOS中,我们在传送中文邮件时只须事先使用该方式进行编码,此后就能顺利通过只能处理7位编码的邮件服务器,从而解决了汉字的传输问题。

ACE:一种新式的压缩程序,压缩比很高。

以上的压缩格式是可逆的,在解压缩之后,可以将被压缩的文件还原成以前未压缩的文件。另外还有一种不可逆的压缩格式,如MP3、MPEG、JPG等音频、视频、图像格式的文件都采用了这种压缩技术,从理论上来说它们也应该算压缩文件,不过它们所采用的压缩方式与前面讲的并不相同,这里简单地介绍一下:

JPEG:JPEG 全名为 Joint Photographic Experts Group,它是一个在国际

篇二:数据压缩方法研究

课程论文首页

数据压缩方法研究

***

摘要:在现今的电子技术领域,正发生着一场有长远影响的数字化革命,数据信息量越来越大,为了存储这些数据信息,我们需要更多地内存空间,而且对这些信息进行处理也要花费很多时间,为了节省空间,提高处理效率,对数据进行压缩显得越来越重要。本文简要叙述一些数据压缩方法,并对其进行了分析。

关键词:数据压缩方法;LZW算法

1、 数据压缩

数据压缩是对给定的数据进行压缩处理,消除一定的冗余度,节省了存储空间和处理时间,提高性能。

图1.1 数据压缩过程

信息如何被高效存储和传递的问题一直是计算机研究的一个重要课题, 而解决这一问题的最常用的就是数据压缩技术。计算机为什么需要数据压缩技术呢? 一是因为容量的限制, 促使各程序员开始开发各种压缩软件对软件进行压缩。二是信息通讯量的限制, 随着数码技术的发展,压缩技术也在不断发展, 因为硬盘和光盘的空间毕竟是有限的, 而游戏、音频、视频、图片在计算机中应用中越来越普遍, 但它们又非常占据空间, 与压缩相关的有两个步骤: 第一个步骤是压缩, 第二个步骤则是解压缩。

在计算机中所有信息都是以二进制代码形式存在的, 这些信息具体形式可以是声音、图像, 因此我们把只用二进制编码的音频等可以称为数码像片或数码音频。以数码图片为例, 压缩就是要把的图像的二进制代码中冗长的、重复的代码遵循一定的算法用简短的代码来代替。如果把软件中的冗长的、重复的代码如果都按一定的算法用简短的代码来替换的话, 最后重新生成的软件一定会小得多。

一般而言, 被压缩的文件是不能直接运行的, 那是因为它的代码都被简化了。被压缩了的文件只是变小了空间而已, 是不能直接使用的。

计算机论文压缩

要想再使用这些压缩过的文件, 就必须解压缩。解压缩文件要用到对应的压缩软件。解压缩的过程正好和压缩的过程相反, 即通过算法将简短的压缩代码还原为程序的真正代码。

[1] 在多媒体应用中,数字化信息的数据量相当庞大,对存储器的存储器的存储容量、网

络带宽以及计算机的处理速度都有较高的要求,必须采用有效的压缩技术。多媒体数据之所以能够进行压缩时因为原始数据存在以下三种形式的冗余:(1)编码冗余。(2)像素间冗余。如相邻像素间具有时域或空域相关性;(3)视觉信息冗余。这些数据本身的冗余和人的感官特性构成了多媒体数据压缩的基础,同时也确定了数据压缩的研究方向。

2、数据压缩标准

2

Internet技术的迅猛发展与普及,推动了世界范围的信息传输和信息交流。在变幻无穷的多媒体世界中,用户如何自由地装配来自不同厂家的产品部件,构成自己满意的系统,这就涉及一个不同厂家产品的兼容性问题,因此需要一个全球性的统一的国际技术标准。 国际标准化协会、国际电子学委员会等国际组织及CCITT,于20世纪90年代领导制定了多个重要的多媒体国际标准。如H.261、JPEG和MPEG等标准。H.261是被可视电话、电视会议中采用的视频、图像压缩编码标准;JPEG是由ISO与CCITT成立的联合图片专家组制定的,用于灰度图、彩色图的连续变化的静止图像编码标准;MPEG是以H.261标准为基础发展而来的。它是由IEC和ISO成立的“运动图像专家组”制定的,并在后来的几年中,陆续推出了MPEG-2、MPEG-4等标准。

3、数据压缩方法分类 [2]

3.1 常用无损压缩

压缩是可逆的,也称为无失真压缩、冗余压缩或熵编码。一般用于文本、数据以及应用软件压缩。压缩比较低,如LZW编码、霍夫曼编码。

3.1.1 Huffman编码

霍夫曼(Huffman)在1952年提出的一种编码方法,从下到上的编码方法,属于变长码类。霍夫曼编码可区别的不同码字的生成是基于不同符号出现的不同概率。自含同步码,在编码之后的码串中都不需要另外添加标记符号,即在译码时切分符号的特殊代码。 霍夫曼编码的步骤:

(1)初始化,根据符号概率的大小按由大到小顺序对符号进行排序。

(2)把概率最小的两个符号组成一个新符号(节点),即新符号的概率等于这两个符号概率之和。

(3)重复第2步,直到形成一个符号为止(树),其概率最后等于1。

(4)从编码树的根开始回溯到原始的符号,并将每一下分枝赋值为1,上分枝赋值为0。

3.1.2 算术编码

基本原理:将编码的消息表示成实数0和1之间的一个间,消息越长,编码表示它的间隔就越小,表示这一间隔所需的二进制位就越多。

算数编码步骤:

(1)编码器在开始时将“当前间隔” [ L,H)设置为[0,1)。

(2)对每一事件,编码器按步骤(a)和(b)进行处理。

a. 编码器将“当前间隔”分为子间隔,每一个事件一个。

b. 一个子间隔的大小与下一个将出现的事件的概率成比例,编码器选择子间隔应与下一个确切发生的事件相对应,并使它成为新的“当前间隔”。

(3)最后输出的“当前间隔”的下边界就是该给定事件序列的算术编码。

3.1..3 LZW编码

LZW编码是围绕称为词典的转换表来完成的。这张转换表用来存放称为前缀的字符序列,并且为每个表项分配一个码字。LZW编码器通过管理这个词典,完成输入与输出之间的转换。 LZW编码器使用的分析算法。

LZW算法的基本原理在于:任何具有某种可预见性的数据,都可以通过用某种标记来表示这种可预见性而使数据变短,LZW压缩算法应用时主要处理三种数据:输入流、输出流、一张字符串表。LZW压缩程序的任务就是把输入的原始数据转换成比原来短的代码流。LZW压缩算法和其它一些压缩技术的不同之处在于它是动态地标记数据流中出现的重复串。它把在压缩过程中遇到的字符串记录在串表中,在下一次又碰到这一字符串的时侯,就用一个代码来表示它,通过用短代码表示相对较长的字符串来压缩数据量。

3 [3]

LZW算法的流程图如图3.1.3所示:

图3.1.3 LZW算法的流程图

LZW编码的物理过程:LZW的编码能有效地利用字符出现的频率冗余度,字符重复性和高使用率模式冗余度。LZW编码只需扫描一次数据,无需有关输入数据统计量的先验信息而运算时间正比于消息的长度。LZW算法中,首先建立一个字符串表,把每一个第一次出现的字符串放入串表中,并用一个数字来表示,这个数字与此字符串在串表中的位置有关,并将这个数字存入压缩文件中,如果这个字符串再次出现时,即可用表示它的数字来代替,并将这个数字存入文件中。压缩完成后将串表丢弃。如“computer”字符串,如果在压缩时用266表示,只要再次出现,均用266表示,并将“computer”字符串存入串表中,在图象解码时遇到数字266,即可从串表中查出266所代表的字符串“computer”,在解压缩时,串表可以根据压缩数据重新生成。采用LZW算法能够实现一定复杂度的数据压缩,达到降低

4

传输带宽和减少存储空间的效果。

我们先来看一个例子

对原始数据ABCCAABCDDAACCDB进行LZW压缩。

原始数据中,只包括4个字符(Character),A,B,C,D,四个字符可以用一个2bit的数表示,O-A,1-B,2-C,3-e,从最直观的角度看,原始字符串存在重复字符,用4代表AB,5代表CC,上面的字符串可以替代表示为:45A4CDDAA5DB。进一步用O-A,1-B,2-C,3-D就可以全部用数字表示该字符串450423300531。

为了区别代表串的值(Code)和原来的单个的数据值(String),需要使它们的数值域不重合,上面用0-3来代表A-D,那么AB就必须用大于3的数值来代替,再举另外一个例子,原来的数值范围可以用8bit来表示,那么就认为原始的数的范围是0~255,压缩程序生成的标号的范围就不能为0~255(如果是0-255,就重复了)。只能从256开始,但是这样一来就超过了8位的表示范围了,所以必须要扩展数据的位数,至少扩展一位,这样就增加了1个字符占用的空间,但是却可以用一个字符代表几个字符,比如原来255是8bit,但是现在用256来表示254,255两个数,还是能够实现压缩的目的。从这个原理可以看出LZW算法的适用范围是原始数据串最好有大量的子串并且多次重复出现,重复的越多,压缩效果越好。反之则越差,也有可能不减反增。

3.2 有损压缩

有损压缩常称为失真压缩,通过解压后不能把信息恢复成原样,同原始数据间存在一定的误差。有损压缩利用人类视觉和听觉器官对频带中某频率成分不敏感这一特点,采用一些高效的有限失真数据压缩算法,大幅度减少多媒体中的冗余信息,其压缩效率远高于无损压缩。经有损压缩的数据虽然不能完全恢复原来的面貌,但其所损失的这部分信息对理解原图像和声音基本上没有影响。因此有损压缩被广泛应用于数字化的声音、图形、图像以及视频信号的压缩。常用的有损压缩的方法有:PCM、插值和外推等。在新一代的数据压缩方法中,许多都是有损压缩,如矢量量化等,这些已经接近成熟,并已用于实际的多媒体开发。当前最为流行的三种有损图像压缩技术的离散余弦变换压缩、分形压缩和小波变换压缩。

3.3 混合压缩

混合编码方法是指对同时使用2种或2种以上的编码方法混合进行编码的方法,以达到高效压缩数据的目的。例如JPEG、MPEG标准都采用混合编码。

4、数据压缩技术的发展趋势

从国际数据压缩技术的发展尤其是MPEG的发展可以看出,基于内容的图像压缩编码方法是未来编码的发展趋势。它不仅能满足进一步获得更大的图像数据压缩比的要求,而且能够实现人机对话的功能。另外,任意形状物体的模型建立的关键问题还没有解决,这严重影响其应用的广泛性。因此,视频编码将朝着多模式和跨模式的方向发展。

5、总结

数据压缩是追求以最少的数码有效地表示信号,以减少信号存储的空间,降低它对传输信道的要求。当然,对数据压缩方法的研究是必不可少的,那样才能实现实时有效的将数据处理、存储与传输。

参考文献:

[1]张磊,武剑.多媒体数据压缩技术的现状及应用展望.武警工程学院学报.2002

[2]夏萍. 数据压缩技术的研究[D].中北大学,2010

5

篇三:图像压缩算法论文

算法论文

基于huffman编码的图像压缩技术

姓名:康凯

学院:计算机学院

专业:网络工程1102

学号:201126680208

摘 要

随着多媒体技术和通讯技术的不断发展, 多媒体娱乐、信息高速公路等不断对信息数据的存储和传输提出了更高的要求, 也给现有的有限带宽以严峻的考验, 特别是具有庞大数据量的数字图像通信, 更难以传输和存储, 极大地制约了图像通信的发展, 因此图像压缩技术受到了越来越多的关注。图像压缩的目的就是把原来较大的图像用尽量少的字节表示和传输,并且要求复原图像有较好的质量。利用图像压缩, 可以减轻图像存储和传输的负担, 使图像在网络上实现快速传输和实时处理。

本文主要介绍数字图像处理的发展概况,图像压缩处理的原理和特点,对多种压缩编码方法进行描述和比较,详细讨论了Huffman编码的图像压缩处理的原理和应用。

关键词:图像处理,图像压缩,压缩算法,图像编码,霍夫曼编码

Abstract

With the developing of multimedia technology and communication technology, multimedia entertainment, information, information highway have kept on data storage and transmission put forward higher requirements, but also to the limited bandwidth available to a severe test, especially with large data amount of digital image communication, more difficult to transport and storage, greatly restricted the development of image communication, image compression techniques are therefore more and more attention. The purpose of image compression is to exhaust the original

image less the larger the bytes and transmission, and requires better quality of

reconstructed images. Use of image compression, image storage and transmission can reduce the burden of making the network fast image transfer and real-time processing.

This paper mainly introduces the development situation of the digital image

processing, the principle and feature of image compression processing , and the variety of compression coding method was described and compared, detailedly discussed the principle and application of compression processing based on

Huffman

Keywords: Image Processing,Image Compression,Compression algorithm,Image Coding,Huf.fman

1.数字图像处理概述

1.1数字图像处理发展概况

数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于20世纪60年代初期。1

在以后的宇航空间技术,如对火星、土星等星球的探测研究中,数字图像处理技术都发挥了巨大的作用。数字图像处理取得的另一个巨大成就是在医学上获得的成果。1972年英国EMI公司工程师Housfield发明了用于头颅诊断的X射线计算机断层摄影装置,也就是我们通常所说的CT(Computer Tomograph)。CT的基本方法是根据人的头部截面的投影,经计算机处理来重建截面图像,称为图像重建。1975年EMI公司又成功研制出全身用的CT装置,获得了人体各个部位鲜明清晰的断层图像。1979年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类作出了划时代的贡献。与此同时,图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就,属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等,使图像处理成为一门引人注目、前景远大的新型学科.图像理解虽然在理论方法研究上已取得不小的进展,但它本身是一个比较难的研究领域,存在不少困难,因人类本身对自己的视觉过程还了解甚少,因此计算机视觉是一个有待人们进一步探索的新领域。

1.2数字图像处理主要研究的内容

数字图像处理主要研究的内容有以下几个方面:

1)

图像变换由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用。2

2)图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量。压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行。编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。3)图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;如强化低频分量可减少图像中噪声影响。图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立"降质模型",再采用某种滤波方法,恢复或重建原来的图像。4)图像分割是数字图像处理中的关键技术之一。图像分割是将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。虽然目前已研究出不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法。因此,对图像分割的研究还在不断深入之中,是目前图像处理中研究的热点之一。5)图像描述是图像识别和理解的必要前提。作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。对于特殊的纹理图像可采用二维纹理特征描述。随着图像处理研究的深入发展,已经开始进行三维物体描述的研究,提出了体积描述、表面描述、广义圆柱体描述等方法。6)图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。图像分类常采用经典的模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来的模糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视。

2.图像压缩

2.1图像数据压缩原理

由于图像数据之间存在这一定的冗余,所以使得数据的压缩成为可能。信息论的创始人Shannon 提出把数据看作是信息和冗余度(redundancy)的组合。所谓冗余度是由于一副图像的各像素之间存在着很大的相关性,可利用一些编码的方法删去它们,从而达到减少冗余压缩数据的目的。为了去掉数据中的冗余,常常要考虑信号源的统计特性,或建立信号源的统计模型。

图像的冗余包括以下几种:

●空间冗余:像素点之间的相关性;

●时间冗余:活动图像两个连续帧之间的冗余;

●信息熵冗余:单位信息量大于其熵;

●结构冗余:区域上存在非常强的纹理结构;

●知识冗余:有固定的结构,如人的头像;

●视觉冗余:某些图像的失真是人眼不易觉察的。

对数字图像进行压缩通常利用两个基本原理:一是数字图像的相关性。在图像的同一行相邻象素之间,相邻象素之间,活动图像的相邻帧的对应象素之间往往存在很强的相关性,去除或减少这些相关性,也即去除或减少图像信息中的冗余度也就实现了对数字图像的压缩。帧内象素的相关称做空域相关性。相邻帧间对应象素之间的相关性称做时域相关性。二是人的视觉心理特征。人的视觉对于边缘急剧变化不敏感(视觉掩盖效应),对颜色分辨力弱,利用这些特征可以在相应部分适当降低编码精度而使人从视觉上并不感觉到图像质量的下降,从而达到对数字图像压缩的目的。 3

2.2霍夫曼编码

Huffman编码在无损压缩的编码方法中,它是一种有效的编码方法。它是霍夫曼博士在1952 年根据可变长最佳编码定理提出的。依据信源数据中各信号出现的频率分配不同长度的编码。其基本思想是在编码过程中,对出现频率越高的值,分配越短的编码长度,相应地对出现频率越低的值则分配较长的编码长度,它是一种无损编码方法。采用霍夫曼编码方法的实质是针对统计结果对字符本身重新编码,而不是对重复字符或重复子串编码,得到的单位像素的比特数最接近图像的实际熵值。

例如,在英文中,e的出现概率很高,而z的出现概率则最低。当利用哈夫曼编码对一篇英文进行压缩时,e极有可能用一个位(bit)来表示,而z则可能花去25个位(不是26)。用普通的表示方法时,每个英文字母均占用一个字节(byte),即8个位。二者相比,e使用了一般编码的1/8的长度,z则使用了3倍多。倘若我们能实现对于英文中各个字母出现概率的较准确的估算,就可以大幅度提高无损压缩的比例。

例如:假设信源符号为【a、b、c、d、e、f、g】,其出现的概率相应的为【0.25、0.025、0.025、0.05、0.35、0.25、0.05】,一共7个字符,对其进行huffman 编码,算法如下:

首先按照每个字符出现的频率大小从左到右排列:0.35、0.25、0.25、0.05、0.05、0.025、0.025;选出最小的两个值作为叶子节点构成一棵二叉树,值较大的叶子节点在左,两个叶子节点对应的频率之和作为根节点。把原排列中最小的两个节点删除,新的根节点插入排列保持大小从左到右的排列顺序不变;重复执行2),直到最后得到值为1 的根节点。得到一棵huffman 树,如下图所示:

图 2.1

本文已影响