ANS统计编码
非对称数字系统(asymmtreic numeral systems, ANS)
数据无损压缩,理论上最小编码长度等于数据信息熵,负的对数概率密度。常用三种熵编码算法:Huffman 编码(Huffman Coding,HC)、算术编码(Arithmetic Coding,AC)和非对称数字系统(Asymmetric Numeral System,ANS)。其中,HC处理速度快,但压缩率低;AC 压缩率最接近于理论压缩极限,但需要大量的计算;ANS可以取得压缩率与速度之间很好地平衡,既有较好压缩率同时速度也较快。[1][2]
实际压缩中选择哪一种统计压缩算法?
在过去 20 多年的大部分时间里,数据压缩领域内有大量关于哈夫曼编码与算术编码的争论。1993 年,这一争论首次曝光,这一年 Bookstein 和 Klein 发表了一篇题为 Is Huffman Coding Dead? 的论文。虽然这篇文章已发表 20 多年了,但争论双方依然保持原来的观点。
因为计算机变得越来越快(并且算术压缩的专利已经到期),所以算术压缩已成为目前的主流算法。它不仅应用在大多数的多媒体编码器中,甚至有了有效的硬件实现。
但 ANS 改变了一切。虽然它在数据压缩领域里出现的时间还不长,但是已开始取代过去 20 多年里占据主流地位的哈夫曼编码和算术编码。在 2013 年,这一算法又出现了一个被称为有限状态熵(Finite State Entropy,FSE)的更注重性能的版本,它只使用加法、掩码和移位运算,使 ANS 对开发人员更具吸引力。
目前看来未来的路似乎很清楚:ANS 和 FSE 将终结哈夫曼编码和算术编码在压缩领域内几十年的“霸主”地位。