编码 | 解码 | 压缩

> 算术编码 | 分数位 | 最优 <

// 算术编码 - 使用分数比特接近信息熵极限的编码

[OPTIMAL]

接近最优

压缩效率接近理论上的信息熵极限。

[FRACTIONAL]

分数位比特

根据符号概率使用分数位比特进行编码。

[STREAMING]

流式处理

可以在数据到达时逐步编码和解码。

>> 技术说明

算术编码的工作原理:

算术编码将整条消息表示为区间 [0,1) 内的一个数。每个符号根据自身概率不断收缩该区间。最终得到的区间再被编码为二进制小数,从而实现非常接近熵极限的压缩率。

编码过程示例:

文本: "AAB" 概率: A=0.67, B=0.33 1. 起始: [0, 1) 2. 'A': [0, 0.67) 3. 'A': [0, 0.45) 4. 'B': [0.30, 0.45) 输出: [0.30, 0.45) 区间内的任意数 二进制: 0.010011...

为什么选择算术编码:

  • >更高的压缩比
  • >接近信息熵极限
  • >支持任意概率分布
  • >用于 JPEG2000 / H.264 等标准
  • >相关专利已到期(2024)

>> 常见问题

什么是算术编码?

算术编码是一种熵编码方式,会把一串符号转换为一个分数值。与只使用整比特的 Huffman 编码不同,算术编码可以为每个符号分配分数比特。

它为什么比 Huffman 更好?

算术编码可以实现任意接近熵极限的压缩,而 Huffman 编码受限于每个符号必须使用整数个比特。对于概率分布高度不均匀的场景,算术编码的效果通常好得多。

精度参数是什么意思?

精度控制内部计算使用的比特数。更高的精度可以编码更长的消息,但会占用更多内存。对于短文本,一般 16 位精度就足够。

算术编码常用于哪些地方?

算术编码广泛应用于 H.264/H.265 视频、JPEG2000 图像以及 ZIP 的 DEFLATE64 模式等现代压缩标准。过去曾受专利限制,但关键专利已经到期。

其他语言