压缩

压缩

计算机术语
压缩的定义是如果您从互联网上下载了许多程序和文件,可能会遇到很多ZIP文件。这种压缩机制是一种很方便的发明,尤其是对网络用户,因为它可以减小文件中的比特和字节总数,使文件能够通过较慢的互联网连接实现更快传输,此外还可以减少文件的磁盘占用空间。在下载了文件后,计算机可使用WinZip或Stuffit这样的程序来展开文件,将其复原到原始大小。如果一切正常,展开的文件与压缩前的原始文件将完全相同。
    中文名:压缩 外文名:compression 所属学科:计算机课程 术语分类:计算机术语 目的:节省保存空间和传输时间 按文件分类:图片压缩、文本压缩 按性质分类:有损压缩、无损压缩

简介

压缩(compression)是为了减少数据大小以节省保存空间和传输的事件。为了数据的传输,压缩能够作用于单独的数据内容或者所有的传输单元(包括数据头),这取决于一些特定的因素。

内容压缩很简单,它就是移除多余的空白字符,插入单个的重复字符指出一个字符串中重复的字符,以及将小型的位串用频繁使用的字符替代。这种类型的压缩能够将文本文件的大小减少50%。压缩由使用特定公式和算法的程序来执行,它确定如何压缩和解压数据。

重复压缩

有两种形式的重复存在于计算机数据中,zip就是对这两种重复进行了压缩。

第一种

一种是短语形式的重复,即三个字节以上的重复,对于这种重复,zip用两个数字:1.重复位置距当前压缩位置的距离;2.重复的长度,来表示这个重复,假设这两个数字各占一个字节,于是数据便得到了压缩,这很容易理解。

一个字节有0-255共2560种可能的取值,三个字节有256*256*256共一千六百多万种可能的情况,更长的短语取值的可能情况以指数方式增长,出现重复的概率似乎极低,实则不然,各种类型的数据都有出现重复的倾向,一篇论文中,为数不多的术语倾向于重复出现;一篇小说,人名和地名会重复出现;一张上下渐变的背景图片,水平方向上的像素会重复出现;程序的源文件中,语法关键字会重复出现(我们写程序时,多少次前后copy、paste?),以几十K为单位的非压缩格式的数据中,倾向于大量出现短语式的重复。经过上面提到的方式进行压缩后,短语式重复的倾向被完全破坏,所以在压缩的结果上进行第二次短语式压缩一般是没有效果的。

第二种

第二种重复为单字节的重复,一个字节只有256种可能的取值,所以这种重复是必然的。其中,某些字节出现次数可能较多,另一些则较少,在统计上有分布不均匀的倾向,这是容易理解的,比如一个ASCII文本文件中,某些符号可能很少用到,而字母和数字则使用较多,各字母的使用频率也是不一样的,据说字母e的使用概率最高;许多图片呈现深色调或浅色调,深色(或浅色)的像素使用较多(这里顺便提一下:png图片格式是一种无损压缩,其核心算法就是zip算法,它和zip格式的文件的主要区别在于:作为一种图片格式,它在文件头处存放了图片的大小、使用的颜色数等信息);上面提到的短语式压缩的结果也有这种倾向:重复倾向于出现在离当前压缩位置较近的地方,重复长度倾向于比较短(20字节以内)。这样,就有了压缩的可能:给256种字节取值重新编码,使出现较多的字节使用较短的编码,出现较少的字节使用较长的编码,这样一来,变短的字节相对于变长的字节更多,文件的总长度就会减少,并且,字节使用比例越不均匀,压缩比例就越大。

常用的压缩软件和压缩格式

常用压缩软件

WinMount、WinRAR、WinZip、7-Zip、coolrar

常见压缩文件格式

主要有:rar,zip,tar,cab,uue,jar,iso,z,7-zip,ace,lzh,arj,gzip,bz2等压缩文件。

经过压缩软件压缩的文件叫压缩文件,压缩的原理是把文件的二进制代码压缩,把相邻的0,1代码减少,比如有000000,可以把它变成6个0的写法60,来减少该文件的空间。

1.JAR:JAR文件就是Java.Archive.File,顾名思意,它的应用是与Java息息相关的,是Java的一种文档格式。JAR文件非常类似ZIP文件——准确的说,它就是ZIP文件,所以叫它文件包。JAR文件与ZIP文件唯一的区别就是在JAR文件的内容中,包含了一个META-INF/MANIFEST.MF文件,这个文件是在生成JAR文件的时候自动创建的。

2.ZIP:ZIP应该算是最常见的压缩文件格式了,你甚至不需要单独为它安装一个压缩或者解压缩软件,因为我们使用的Windows系统以及集成了对ZIP压缩格式的支持。

3.RAR:虽然ZIP在压缩文件格式中地位很高,但相当多的下载网站都选择了用RAR格式来压缩他们的文件,最根本的原因就在于RAR格式的文件压缩率比ZIP更高。

4.7Z:7Z作为压缩格式的后起新秀,7Z有着比RAR更高的压缩率,能够将文件压缩的更加小巧。不过因为RAR格式已经高度普及,又没有网络普及的“天时”相助,7Z想要取代RAR的地位还是相当不容易的。

5.CAB:CAB是微软的一种安装文件压缩格式,主要应用于软件的安装程序中。因为涉及到安装程序,所以cab文件中包含的文件通常都不是简单的直接压缩,而是对文件名等都进行了处理,所以虽然可以对其直接解压缩,但解压后得到的文件通常都无法直接使用。

6.ISO:很多朋友都认为ISO是一种压缩格式,这源于WinRAR添加了对ISO格式“解压”的支持。而实际上,ISO并不是压缩格式,它之中所包含的文件也并没有经过压缩。ISO只是一种光盘的镜像格式,完全复制并保存了光盘上的内容而已。所谓的对ISO“解压”的过程,不过就是对ISO内文件的提取过程。

7.TAR:tar为后辍的文件能用WinZip或WinRar打开,是因为WinZip或WinRar对.tar文件进行了关联,也就是指可以用相应的解压软件将其解压.tar是linux下较为常用的压缩文件的格式,并不是什么数据库文件。

6.UUE:uue是一种在遇到邮件编码混合引起乱码的情况下比较有用的压缩格式,可以用winzip或者winrar打开。

上面我们主要只介绍了常用的压缩文件。

压缩基本原理

概述

如果您从互联网上下载了许多程序和文件,可能会遇到很多ZIP文件。这种压缩机制是一种很方便的发明,尤其是对网络用户,因为它可以减小文件中的比特和字节总数,使文件能够通过较慢的互联网连接实现更快传输,此外还可以减少文件的磁盘占用空间。在下载了文件后,计算机可使用WinZip或Stuffit这样的程序来展开文件,将其复原到原始大小。如果一切正常,展开的文件与压缩前的原始文件将完全相同。乍一听好像很神秘:您是怎样减少比特和字节的数量并将它们原封不动地还原回去的呢?等一切水落石出之后,您会发现这个过程背后的基本理念其实非常简单明了。在本文中,我们将讨论这种通过简单压缩来明显减小文件的方法。

大多数计算机文件类型都包含相当多的冗余内容——它们会反复列出一些相同的信息。文件压缩程序就是要消除这种冗余现象。与反复列出某一块信息不同,文件压缩程序只列出该信息一次,然后当它在原始程序中出现时再重新引用它。

举例

以我们熟悉的信息类型——单词——为例子。

肯尼迪(JohnF.Kennedy)在1961年的就职演说中曾说过下面这段著名的话:

Asknotwhatyourcountrycandoforyou——askwhatyoucandoforyourcountry.(不要问国家能为你做些什么,而应该问自己能为国家做些什么。)

这段话有17个单词,包含61个字母、16个空格、1个破折号和1个句点。如果每个字母、空格或标点都占用1个内存单元,那么文件的总大小为79个单元。为了减小文件的大小,我们需要找出冗余的部分。

我们立刻发现,如果忽略大小写字母间的区别,这个句子几乎有一半是冗余的。九个单词(ask、not、what、your、country、can、do、for、you)几乎提供了组成整句话所需的所有东西。为了构造出另一半句子,我们只需要拿出前半段句子中的单词,然后加上空格和标点就行了。大多数压缩程序使用基于自适应字典的LZ算法来缩小文件。“LZ”指的是此算法的发明者Lempel和Ziv,“字典”指的是对数据块进行归类的方法。

排列字典的机制有很多种,它也可以像编号列表那样简单。在我们检查肯尼迪这句著名讲话时,可以挑出重复的单词,并将它们放到编号索引中。然后,我们直接写入编号而不是写入整个单词。

结论

因此,如果我们的字典是:

ask

what

your

country

can

do

for

you

我们的句子就应该是这样的:

1not2345678--12856734

如果您了解这种机制,那么只需使用该字典和编号模式即可轻松重新构造出原始句子。这就是在展开某个下载文件时,计算机中的解压缩程序所做的工作。你可能还遇到过能够自行解压缩的压缩文件。若要创建这种文件,编程人员需要在被压缩的文件中设置一个简单的解压缩程序。在下载完毕后,它可以自动重新构造出原始文件。

但是使用这种机制究竟能够节省多少空间呢?“1not2345678——12856734”当然短于“Asknotwhatyourcountrycandoforyou--askwhatyoucandoforyourcountry.”,但应注意的是,我们需要随文件一起保存这个字典。

在实际压缩方案中,计算出各种文件需求是一个相当复杂的过程。让我们回过头考虑一下上面的例子。每个字符和空格都占用1个内存单元,整个原句要占用79个单元。压缩后的句子(包括空格)占用了37个单元,而字典(单词和编号)也占用了37个单元。也就是说,文件的大小为74个单元,因此我们并没有把文件大小减少很多。

但这只是一个句子的情况!可以想象的是,如果用该压缩程序处理完肯尼迪讲话的其余部分,我们会发现这些单词以及其他单词重复了更多次。而且,正如下一节所言,为了得到尽可能高的组织效率,可以对字典进行重写。

在上一个的例子中,我们挑出了所有重复的单词并将它们放在一个字典中。对于我们来说,这是最显而易见的字典编写方法。但是压缩程序却不这样认为:它对单词没有概念——它只会寻找各个模式。为了尽可能减小文件的大小,它会仔细挑选出最优模式。

如果从这个角度处理该句子,我们最终会得到一个完全不同的字典。

如果压缩程序扫描肯尼迪的这句话,它遇到的第一个冗余部分只有几个字母长。在asknotwhatyour中,出现了一个重复的模式,即字母t后面跟一个空格——在not和what中。如果压缩程序将此模式写入字典,则每次出现“t”后面跟一个空格的情况时,它会写入一个“1”。但是在这个短句中,此模式的出现次数不够多,不足以将其保留为字典中的一个条目,因此程序最终会复盖它。

程序接下来注意到的内容是ou,在your和country中都出现了它。如果这是一篇较长的文档,将此模式写入字典会节省大量空间——在英语中ou是一个十分常见的字母组合。但是在压缩程序看完整个句子后,它立即发现了一个更好的字典条目选择:不仅ou发生了重复,而且your和country整个单词都发生了重复,并且它们实际上是作为一个短语yourcountry一起发生重复的。在本例中,程序会用yourcountry条目复盖掉字典中的ou条目。

短语candofor也发生了重复,一次后面跟着your,另一次跟着you,因此我们又发现candoforyou也是一种重复模式。这样,我们可以用一个数字来代替15个字符(包含空格),而yourcountry只允许我们用一个数字代替13个字符(包含空格),所以程序会用rcountry条目复盖yourcountry条目,然后再写入一个单独的candoforyou条目。程序通过这种方式继续工作,挑出所有重复的信息,然后计算应该将哪一种模式写入字典。基于自适应字典的LZ算法中的“自适应”部分指的就是这种重写字典的能力。程序执行此工作的过程实际上非常复杂。

无论使用什么方法,这种深入搜索机制都能比仅仅挑出单词这种方法更有效率地对文件进行压缩。如果使用我们上面提取出的模式,然后用“__”代替空格,最终将得到下面这个更大的字典:

ask__

what__­

you

r__country

__can__do__for__you

而句子则较短:

“1not__2345__--__12354”

句子占用18个内存单元,字典占用41个单元。所以,我们将文件总大小从79个单元压缩到了59个单元!这仅仅是压缩句子的一种方法,而且不一定是最高效的方法。

图像压缩技术

介绍

图像压缩技术是在传递图像时压缩信息量,经过还原仍能看到原来的图像的一种技术。未经压缩的图形、图像和音频数据需要非常客观的存储空间,即便使用光盘存储技术,末压缩过的视频也常常是不实用的。在数字图像监控系统中,需要处理大量的视频数据,因而图像的压缩编码和解码显得十分重要。现在已有多种压缩方法用于数字监控系统,目前比较普遍使用的有:JPEG(对单幅图像)、H.261(P×64)、MPEG(用于视频用于视频和音频)。

技术分类

图像压缩技术可归于不同类型。对于它们在多媒体系统中的应用,我们可用源、熵和混合编码来分辨它们。熵编码是无损编码,而源编码是有损压缩,大部分多媒体系统使用混合技术,即将两种技术混合在一起。使用熵编码不考虑媒体的特殊性质。数据流的压缩被考虑成简单的数字序列,数据的相关性不予考虑。熵编码是一个无损压缩的例子,因为解压缩过程完全恢复了原数据。行程编码就是一个熵编码的例子,常被用作文件系统的数据压缩。源编码考虑了数据的上下文的关系。源编码的压缩率取决于数据内容。对于有损压缩技术,源数据流和编码后的数据流之间存在着单向关系,数据流相似但不相同,不同的源编码技术充分利用了特定媒体的特性。

目的

图像数据压缩的目的是消除图像中的大量冗余信息,用尽可能少的字节数来表示原始数据,以提高图像传输的效率,减少图像的存储容量。

压缩类别

有损压缩

有损压缩是利用了人类对图像或声波中的某些频率成分不敏感的特性,允许压缩过程中损失一定的信息;虽然不能完全恢复原始数据,但是所损失的部分对理解原始图像的影响缩小,却换来了大得多的压缩比,即指使用压缩后的数据进行重构,重构后的数据与原来的数据有所不同,但不影响人对原始资料表达的信息造成误解。有损压缩适用于重构信号不一定非要和原始信号完全相同的场合。图像和声音的压缩(因为其中包含的数据往往多于我们的视觉系统和听党系统所能接收的信息,丢掉一些数据而不至于对声音或者图像所表达的意思产生误解但可大大提高压缩比)。有损压缩广泛应用于语音,图像和视频数据的压缩。

无损压缩

无损压缩格式则是利用数据的统计冗余进行压缩,可完全恢复原始数据而不引起任何失真,但压缩率是受到数据统计冗余度的理论限制,一般为2:1到5:1。这类方法广泛用于文本数据,程序和特殊应用场合的图像数据(如指纹图像,医学图像等)的压缩。即指使用压缩后的数据进行重构(或者叫做还原,解压缩),重构后的数据与原来的数据完全相同;无损压缩用于要求重构的信号与原始信号完全致的场合。

区别

1.还原性上的区别:无损压缩就是可以完全还原的;有损压缩还原后不能和原来的文件一样,有一定的损耗的。n

2.压缩率上的区别:无损压缩压缩率是受到数据统计冗余度的理论限制,一般为2:1到5:1;有损压缩利用了人类对图像或声波中的某些频率成分不敏感的特性,允许压缩过程中损失一定的信息,虽然不能完全恢复原始数据,但是所损失的部分对理解原始图像的影响缩小,却换来了大得多的压缩比最高可达200:1甚至更多。n

3.压缩文件格式上的区别:mp3、divX、Xvid、jpeg、rm、rmvb、wma、wmv等格式都是有损压缩;无损压缩格式常用的有APE、FLAC、TAK、WavPack、TTA等。

4.压缩原理上的区别:有损压缩有两种的基本机制,一种是有损变换编解码,首先对图像或者声音进行采样、切成小块、变换到一个新的空间、量化,然后对量化值进行熵编码。另外一种是预测编解码,先前的数据以及随后解码数据用来预测当前的声音采样或者图像帧,预测数据与实际数据之间的误差以及其它一些重现预测的信息进行量化与编码。无损压缩原理有行程编码、霍夫曼编码和算术编码等。

5.应用领域上的区别:有损压缩广泛应用于语音,图像和视频数据的压缩;无损压缩受压缩比的限制暂时只用于文本数据,程序和特殊应用场合的图像数据(如指纹图像,医学图像等)的压缩,但是无损压缩格式的前景无疑是光明的,随着时间的推移,限制无损格式的种种因素将逐渐被消除,比如硬盘容量的不断增加,机械硬盘1TB已成主流,固态硬盘200GB也将普及,无损格式占用空间大的问题将不再是问题,而速度更快的解码芯片也将被开发出来,相信会有越来越多的硬盘随身听支持无损格式,在不久的将来,连闪存随身听的容量都要以TB来计算时,为了追求更高的音质,无损压缩格式会越来越被人重视。

相关词条

相关搜索

其它词条