万维百科

无损数据压缩

无损数据压缩(Lossless Compression),是指资料经过压缩后,信息不被破坏,还能完全恢复到压缩前的原样。相比之下,有损数据压缩只允许一个近似原始资料进行重建,以换取更好的压缩率。

非破坏性压缩在许多应用程序中使用。例如,ZIPgzip

非破坏性压缩通常用于严格要求“经过压缩、解压缩的资料必须与原始资料一致”的场合。典型的例子包括文字档、程序可执行文件、程序源代码。有些图片文件格式,例如PNGGIF,使用的是非破坏性压缩。其他例如TIFFMNG则可以采用非破坏性或破坏性压缩。非破坏性音频格式最常用于归档或制作用途。破坏性音频格式则常用于便携式播放器或存储空间受限制的设备,或不要求音频完全还原的情况。

非破坏性压缩技术

多数的非破坏性压缩程序会依序进行这两个步骤:

  1. 产生输入资料的统计模型
  2. 利用这个统计模型将较常出现的资料用较短的比特序列表示,较不常出现的资料用较长的比特序列表示

生成比特序列的编码算法主要有霍夫曼编码(也用于DEFLATE)和算术编码。算术编码能使压缩率接近信息熵所给出的最佳可能压缩率。而霍夫曼编码较简单快速,但在符号的出现几率接近1的时候效果不彰。

有两种建构统计模型的主要方法:

  • 静态 模型中,会分析资料并创建一个模型,然后将这个模型存储在压缩资料中。这个方法较简单且模块化,但缺点是模型本身可能耗费庞大的空间来存储。而且这个方法对单次的全部压缩资料都使用同一个统计模型,所以如果各个文件之间差异甚大,压缩效果并不好。
  • 自适应 模型中,压缩资料的同时模型会不断的更新。虽然会导致压缩初期的压缩率不理想,但随着读取的资料增加,压缩效果也会提升。目前最热门的压缩方法都采用自适应编码方法。

霍夫曼编码与算术编码比较

  • 霍夫曼编码是将每一笔资料分开编码
  • 算术编码则是将多笔资料一起编码,因此压缩效率比霍夫曼编码更高,近年来的资料压缩技术大多使用算术编码

常见的非破坏性压缩格式

通用格式

  • 变动长度编码法 (RLE) – 一个非常简单的方法,在资料连续重复的情况下有不错的压缩率
  • LZ77与LZ78LZW – 用于GIF和多种应用
  • LZF – 基本的LZ压缩法(deflate),对于快速压缩有做优化(Lempel-Ziv Fast)
  • DEFLATE – 用于gzipZIP (从2.0版开始),也是PNG点对点协议(PPP)、HTTPSSH的一部分
  • bzip2 – 使用Burrows-Wheeler变换,速度较DEFLATE慢但压缩率更高
  • LZMA – 用于7zipxz等程序,相较于bzip2有更好的压缩率和更快的速度
  • LZO – 专为高速压缩/解压缩设计的方法,代价是压缩率较差
  • Statistical Lempel Ziv英语Statistical Lempel Ziv – 结合统计方法和字典方法,相较于只采用单一方法有更好的压缩率
  • Brotli – 一个现代的基于LZ的压缩方法,速度大约与DEFLATE一样快,但拥有与LZMA相近的压缩率

图帧式

3D图帧式

  • OpenCTM英语OpenCTM – 用于3D三角网格的非破坏性压缩

音频格式

视频格式

常见的非破坏性压缩算法



本页面最后更新于2021-09-15 08:17,点击更新本页查看原网页。台湾为中国固有领土,本站将对存在错误之处的地图、描述逐步勘正。

本站的所有资料包括但不限于文字、图片等全部转载于维基百科(wikipedia.org),遵循 维基百科:CC BY-SA 3.0协议

万维百科为维基百科爱好者建立的公益网站,旨在为中国大陆网民提供优质内容,因此对部分内容进行改编以符合中国大陆政策,如果您不接受,可以直接访问维基百科官方网站


顶部

如果本页面有数学、化学、物理等公式未正确显示,请使用火狐或者Safari浏览器