无损数据压缩

本页使用了标题或全文手工转换
维基百科,自由的百科全书
有损无损数据压缩

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

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

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

非破坏性压缩技术[编辑]

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

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

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

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

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

霍夫曼编码与算术编码比较[编辑]

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

常见的非破坏性压缩格式[编辑]

通用格式[编辑]

图片格式[编辑]

3D图片格式[编辑]

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

音讯格式[编辑]

  • WAV(无压缩)

视讯格式[编辑]

常见的非破坏性压缩演算法[编辑]