数据压缩知识点整理
一. 概述
数据压缩 是指在不丢失有用信息的前提下, 缩减数据量 以减少存储空间, 提高传输、存储和处理效率, 或按照一定的算法对数据进行重新组织, 减少数据的冗余和存储的空间的一种技术.
数据压缩包括 有损压缩 和 无损压缩
数据压缩或源编码是按照 特定的编码机制 用比未经编码少的 数据元 表示信息的过程
对于任何形式的通信, 只有当信息的发送方和接收方都能理解编码机制的时候压缩数据通信才能正常工作.
数据压缩能够实现是因为多数现实世界的数据都存在 统计冗余
压缩很重要, 可以帮助减少 硬盘空间/网络带宽等昂贵资源的消耗, 且压缩也需要消耗信息处理资源这类同样昂贵的资源, 所以数据压缩机制的设计需要在 压缩能力(压缩速度, 压缩数据大小), 失真度(质量损失), 所需计算资源,其他需考虑因素之间进行折中.
无损压缩算法通常利用 统计冗余 来实现数据的压缩.
无损数据压缩 是一种可逆的机制, 压缩后的数据还可以恢复到原始数据
有损压缩允许数据可以有一定的程度的保真度损失,允许一定程度的数据损失, 对数据进一步的压缩.
实际中, 对于不含辨别样式的数据任何压缩算法都不能压缩.
试图去压缩已经压缩过的数据, 往往是对数据的扩展.
二. 压缩分类
按数据压缩的即时性:
即时压缩
数据的采集,转换,压缩,传输等处理按时间顺序完成. 网络请求中的压缩(GZIP),电话中语言处理等.(通常要硬件支持->压缩卡)
非即时压缩
在需要的时候才用的, 常用的pc端解压缩(RAR,ZIP,7z等).
按数据类别:
数据压缩
可以包含文件, 但有时也指具有 时效性 的数据, 这些数据是即时采集,及时处理,传输等(即时压缩).
文件压缩
专指保存在磁盘等物理介质的数据进行压缩(音乐,视频,文档等).
压缩数据前后数据是否有损
无损压缩
无损压缩利用数据的 统计冗余 进行压缩.
数据统计冗余度理论限制: 2: 1 | 5: 1, 所以无损压缩比一般的压缩力较低.
无损压缩方法广泛应用于 文本数据(电子表格), 程序(可执行文件) 和 特殊应用场合的图像数据 等需要精确存储数据的压缩中.
无损压缩算法有霍夫曼(Huffman)算法 和 LZW(Lenpel-Ziv & Welch) 压缩算法
有损压缩
有损压缩利用 人类对视觉,听觉对图像,声音中的某些频率成分不敏感的特性, 允许压缩过程中损失一定的数据,虽然不能完全恢复原始数据,但所损失的部分对于理解原始图像的影响比较小,换的较大的压缩比.
有损压缩广泛应用于 语音, 图像, 视频等数据的处理中, 常见的声音、图像、视频压缩基本都是有损的。
在多媒体应用中,常见的压缩方法有:PCM(脉冲编码调制),预测编码,变换编码,插值和外推法,统计编码,矢量量化和子带编码等,混合编码是广泛采用的方法。
mp3 、divX 、Xvid 、jpeg、 rm 、rmvb、 wma 、wmv等都是有损压缩.
三. 原理
事实上,多媒体信息存在许多数据冗余。例如,一幅图像中的静止建筑背景、蓝天和绿地,其中许多像素是相同的如果逐点存储,就会浪费许多空间,这称为 空间冗余。又如,在电视和动画的相邻序列中,只有运动物体有少许变化, 仅存储差异部分 即可,这称为 时间冗余 。此外还有 结构冗余 、视觉冗余 等,这就为数据压缩提供了条件。
总之,压缩的理论基础是 信息论。从信息的角度来看,压缩就是去除掉信息中的冗余,即 去除掉确定的或可推知的信息,而 保留不确定的信息,也就是 用一种更接近信息本质的描述来代替原有的冗余的描述,这个本质的东西就是 信息量。
四. 应用
一种非常简单的压缩方法是行程长度编码,这种方法使用数据及数据长度这样简单的编码代替同样的连续数据,这是无损数据压缩的一个实例。这种方法经常用于办公计算机以更好地利用磁盘空间、或者更好地利用计算机网络中的带宽。对于电子表格、文本、可执行文件等这样的符号数据来说,无损是一个非常关键的要求,因为除了一些有限的情况,大多数情况下即使是一个数据位的变化都是无法接受的。
对于视频和音频数据,只要不损失数据的重要部分一定程度的质量下降是可以接受的。通过利用人类感知系统的局限,能够大幅度得节约存储空间并且得到的结果质量与原始数据质量相比并没有明显的差别。这些有损数据压缩方法通常需要在压缩速度、压缩数据大小以及质量损失这三者之间进行折衷。
有损图像压缩用于数码相机中,大幅度地提高了存储能力,同时图像质量几乎没有降低。用于DVD的有损MPEG-2编解码视频压缩也实现了类似的功能。
在有损音频压缩中,心理声学的方法用来去除信号中听不见或者很难听见的成分。人类语音的压缩经常使用更加专业的技术,因此人们有时也将“语音压缩”或者“语音编码”作为一个独立的研究领域与“音频压缩”区分开来。不同的音频和语音压缩标准都属于音频编解码范畴。例如语音压缩用于因特网电话,而音频压缩被用于CD翻录并且使用 MP3 播放器解码。
五: 理论依据
压缩的理论基础是信息论(它与 算法信息论 密切相关)以及 率失真理论,这个领域的研究工作主要是由 Claude 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 是一个逆算术编码器。