一、数据压缩是什么?
数据压缩是将输入数据流(源流或原始原始数据)转换为具有较小大小的另一个数据流(输出、比特流或压缩流)的过程。流可以是文件、内存中的缓冲区或在通信通道上发送的单个位。
我们讨厌等待数据传输。当我们坐在电脑前,等待网页进入或等待下载文件时,我们自然会觉得任何超过几秒钟的东西都是等待很长的时间。因此,在传输数据之前压缩数据是一种自然的解决方案。
数据压缩的领域通常被称为源编码。我们想象输入符号(如位、ASCII代码、字节、音频样本或像素值)是由某个信息源发出的,在发送到目的地之前必须进行编码。源可以是无记忆的,也可以是有内存的。在前一种情况下,每个符号都独立于它的前身。在后一种情况下,每个符号都依赖于它的一些前辈,也许还有它的继任者,所以它们是相关的。
二、关于递归压缩问题
1.递归压缩难以维系的原因
通过删除冗余进行压缩的原则也回答了以下问题:为什么已经压缩的文件不能进一步压缩?这个答案是这样的文件很少或没有冗余,所以没有什么可删除的。这类文件的一个例子是随机文本。在这样的文本中,每个字母出现的概率相等,因此为它们分配固定大小的代码不会增加任何冗余。当这样的文件被压缩时,就没有冗余需要删除了。
2.终止递归压缩条件
拥有一个压缩文件的人通常知道它已经被压缩了,并且不会试图进一步压缩它,但可能会有例外,其中一个是通过调制解调器的数据传输。现代调制解调器包括硬件来自动压缩它们发送的数据,如果这些数据已经被压缩,就不会有进一步的压缩。甚至可能会有扩张。这就是为什么调制解调器应该“动态”监控压缩比,如果它很低,它应该停止压缩,并应该发送剩余的数据未压缩。
三、压缩性能
大多数压缩方法都是物理上的。它们只查看输入流中的位,而忽略输入中的数据项的含义。这种方法将一个位流转换为另一个较短的位流。理解输出流(解码它)的唯一方法是知道它是如何被编码的。有些压缩方法是合乎逻辑的。它们查看源流中的单个数据项,并用短代码替换公共项。
压缩性能:通常使用几种方法来表示压缩方法的性能。
压缩比被定义为输入流的输出流大小的压缩比。值为0.6表示压缩后数据占原始大小的60%。值大于1表示输出流大于输入流
压缩比的倒数称为压缩因子:压缩因子=大小的输入流的输入流大小。在这种情况下,值大于1表示压缩,值小于1表示扩展。
表达式100×(1−压缩比)也是衡量压缩性能的合理指标。值为60意味着输出流占其原始大小的40%(或者压缩已经节省了60%
在图像压缩中,通常使用数量bpp(每像素比特)。它等于压缩图像的一个像素所需的位数。这个量应该始终与压缩前的bpp进行比较。
压缩增益定义为 100 log 参 考 大 小 压 缩 大 小 100\log\frac{参考大小}{压缩大小} 100log压缩大小参考大小,其中参考大小是输入流的大小或由某些标准无损压缩方法产生的压缩流的大小。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了数据压缩的相关定义和压缩性能的几种评估方法。
参考
[1] Salomon, David, and Giovanni Motta. Handbook of data compression. London; New York: Springer, 2010.
本文许多地方参考自《Handbook of Data Compression 》,该内容仅供学习研究之用,如若喜欢请支持购买正品书籍。如有侵权,请联系删除。
转载本文请联系原作者获取授权,同时请注明本文来自池鱼醉故渊博客。