数据压缩

电脑科学资讯理论中,资料压缩或者原始码是按照特定的编码机制用比未经编码少的资料位元(或者其它资讯相关的单位)表示资讯的过程。例如,如果我们将「compression」编码为「comp」那么这篇文章可以用较少的资料位元表示。常见的例子是ZIP档案格式,此格式不仅仅提供压缩功能,还可作为归档工具(Archiver),能够将许多档案储存到同一个档案中。

我们可利用资料的一致性(可用资讯熵,entropy来表示),规则性,与可预测性去实现资料压缩。人类最先发展的压缩技术实为自然语言,一般来说,若可以用比较精简的自然语言来描述一样事物,那么也就越能够对这样事物做压缩。资料越一致,亦代表其统计特性越集中。以影像压缩为例,其集中代表有傅立叶变换时域频域直方图特征值

概要

资料压缩能够实现是因为多数现实世界的资料都有统计冗余。例如,字母「e」在英语中比字母「z」更加常用,字母「q」后面是「z」的可能性非常小。非破坏性资料压缩通常利用了统计冗余,这样就能更加简练地、但仍然是完整地表示传送方的资料。

非破坏性资料压缩的压缩率不足以处理庞大体积的音影片数据,但如果允许一定程度的保真度损失,那么还可以实现进一步的压缩。例如,人们看图画或者电视画面的时候可能并不会注意到一些细节并不完善。同样,两个音讯录音采样序列可能听起来一样,但实际上并不完全一样。破坏性资料压缩在可以接受或无法察觉的情况下使用较少的位数表示图像、影片或者音讯。

然而,经常有一些档案不能被破坏性资料压缩压缩,实际上对于不含可以辨别样式的资料任何压缩演算法都不能压缩。另外,试图压缩已经经过压缩的资料通常得到的结果实际上是增加资料。

实际上,破坏性资料压缩也会最终达到不能工作的地步。例如一个极端的例子:压缩演算法每次去掉档案最后一个位元组,那么经过这个演算法不断的压缩直至档案变空,压缩演算法将不能继续工作。

由于可以帮助减少如硬碟空间与连接频宽这样的昂贵资源的消耗,所以压缩非常重要,然而压缩需要消耗资讯处理资源,这也可能是费用昂贵的。所以资料压缩机制的设计需要在压缩能力、失真度、所需计算资源以及其它需要考虑的不同因素之间进行折衷。

对于任何形式的通信来说,只有当资讯的传送方和接受方都能够理解编码机制的时候压缩资料通信才能够工作。例如,只有当接受方知道这篇文章需要用汉语字元解释的时候这篇文章才有意义。同样,只有当接受方知道编码方法的时候他才能够理解压缩资料。

应用

一种非常简单的压缩方法是行程长度编码,这种方法使用资料及资料长度这样简单的编码代替同样的连续资料,这是非破坏性资料压缩的一个实例。这种方法经常用于办公电脑以更好地利用磁碟空间、或者更好地利用电脑网路中的频宽。对于电子表格、文字、执行档等这样的符号资料来说,非破坏性是一个非常关键的要求,因为除了一些有限的情况,大多数情况下即使是一个资料位的变化都是无法接受的。

对于影片和音讯资料,只要不损失资料的重要部分一定程度的品质下降是可以接受的。通过利用人类感知系统的局限,能够大幅度的节约储存空间并且得到的结果品质与原始资料品质相比并没有明显的差别。这些破坏性资料压缩方法通常需要在压缩速度、压缩资料大小以及品质损失这三者之间进行折衷。

破坏性图像压缩用于数位相机中,大幅度地提高了储存能力,同时图像品质几乎没有降低。用于DVD的破坏性MPEG-2编解码影片压缩也实现了类似的功能。

在破坏性音讯压缩中,心理声学的方法用来去除讯号中听不见或者很难听见的成分。人类语音的压缩经常使用更加专业的技术,因此人们有时也将「语音压缩」或者「语音编码」作为一个独立的研究领域与「音讯压缩」区分开来。不同的音讯和语音压缩标准都属于音讯编解码范畴。例如语音压缩用于网际网路电话,而音讯压缩被用于CD翻录并且使用MP3播放器解码。

理论

压缩的理论(它与演算法资讯理论密切相关)以及率失真理论,这个领域的研究工作主要是由美国学者克劳德·香农(Claude Elwood Shannon)奠定的,他在二十世纪四十年代末期及五十年代早期发表了这方面的基础性的论文。Doyle和Carlson在2000年写到资料压缩「是所有的工程领域最简单、最优美的设计理论之一」。密码学编码理论也是密切相关的学科,资料压缩的思想与统计推断也有很深的渊源。

许多非破坏性资料压缩系统都可以看作是四步模型,破坏性资料压缩系统通常包含更多的步骤,例如它包括预测、频率变换以及量化。

Lempel-Ziv(LZ)压缩方法是最流行的非破坏性储存演算法之一。DEFLATE是LZ的一个变体,它针对解压速度与压缩率进行了最佳化,虽然它的压缩速度可能非常缓慢,PKZIP、gzip以及PNG都在使用DEFLATE。LZW(Lempel-Ziv-Welch)是Unisys专利,直到2003年6月专利到期限,这种方法用于GIF图像。另外值得一提的是LZR (LZ-Renau) 方法,它是Zip方法的基础。LZ方法使用基于表格的压缩模型,其中表格中的条目用重复的资料串替换。对于大多数的LZ方法来说,这个表格是从最初的输入资料动态生成的。这个表格经常采用霍夫曼编码维护(例如SHRI、LZX)。 目前一个效能良好基于LZ的编码机制是LZX,它用于微软公司的CAB格式。

最好的压缩工具将概率模型预测结果用于算术编码。算术编码由芬兰资讯理论学家Jorma Rissanen发明,并且由Witten、Neal以及Cleary将它转变成一个实用的方法。这种方法能够实现比众人皆知的哈夫曼演算法更好的压缩,并且它本身非常适合于自适应资料压缩,自适应资料压缩的预测与上下文密切相关。算术编码已经用于二值图像压缩标准JBIG、文件压缩标准DejaVu。文字输入系统Dasher是一个逆算术编码器。

参见

资料压缩专题

压缩演算法

非破坏性资料压缩

破坏性资料压缩

实现实例

  • DEFLATE(LZ77与哈夫曼编码的组合)——为ZIP、gzip、zlib与PN档案所使用
  • LZMA7-ZipStuffiX使用
  • LZO(非常快速的LZ变体,针对速度要求)
  • Unix compress工具(.Z档案格式)、以及GIF使用LZW
  • bzip2(Burrows-Wheeler变换与哈夫曼编码的组合)
  • PAQ(一种基于上下文混合的超高压缩率的演算法,但是极度缓慢,是最高压缩比竞争中的佼佼者。)
  • JPEG(使用离散余弦变换、量化、哈夫曼编码的图像压缩
  • MPEG(广泛使用的音讯及影片压缩标准族,影片压缩使用离散余弦变换以及运动补偿预测)
  • MP3MPEG-1标准中用于声音及音乐压缩的部分,使用子带、MDCT、感知模型、量化以及哈夫曼编码)
  • WMAWMV音讯编码规范中的一部分,使用MDCT、感知模型、低位元率量化、量化以及哈夫曼编码)
  • Vorbis(类似于AAC的基于DCT的音讯编解码,为了避免专利问题而设计)
  • JPEG 2000(使用小波、量化、熵编码的图像压缩)
  • TTA(使用线性预测编码,用于非破坏性音讯压缩)
  • FLAC(用于非破坏性音讯压缩的线性预测编码
  • ATRAC(Adaptive Transform Acoustic Coding,自适应听觉转换编码)为SONY公司于1992年所开发之音讯有损数据压缩技术,也是相关技术名词之总称。

外部连结