编码 | 解码 | 压缩

> exp | golomb | h264 <

// Exponential-Golomb —— 视频压缩中的标准可变长码

0 字符
0 字符

>> 功能

[H.264/H.265]

视频标准

用于 H.264/AVC 与 H.265/HEVC 编码器。

[ADAPTIVE]

多阶支持

根据不同分布选择不同的 k 值。

[SIGNED]

有符号整数支持

内置有符号整数映射。

>> 技术细节

Exp-Golomb 编码原理

阶数为 k 的 Exp-Golomb 码对非负整数 n 的编码过程:1)先将 n 加 1 得到 codeNum;2)用 2^k 相除得到商 q 和余数 r;3)写出 q 个 0,再写 1,最后将 r 用 k 位二进制写出。k=0 时等价于 Elias Gamma 编码。有符号整数的映射为:n>0 → 2n-1,n≤0 → -2n。

Exp-Golomb 示例

阶数 k=0(标准):
0 → 1
1 → 010
2 → 011
3 → 00100

阶数 k=1:
0 → 10
1 → 11
2 → 010
3 → 011

有符号模式(k=0):
0 → 1(映射到 0)
1 → 010(映射到 1)
-1 → 011(映射到 2)
2 → 00100(映射到 3)

为什么使用 Exp-Golomb

  • H.264/H.265 语法元素编码
  • 运动向量(motion vector)编码
  • 系数幅度与级别编码
  • 硬件实现简单,无查表
  • 能自适应典型视频数据分布

>> 常见问题

什么是 Exp-Golomb 编码?

Exponential-Golomb 编码是一种通用的可变长编码,在 H.264、H.265 等视频压缩标准中被广泛采用。它在 Elias Gamma 编码的基础上引入参数 k,使编码能够适应不同的数据分布。

如何选择阶数 k?

k=0(标准 Exp-Golomb)适合分布大致呈指数衰减的较小整数。对于数值更大或分布更均匀的数据,更大的 k 通常效果更好。视频编解码器往往对语法元素使用 k=0,对残差数据使用自适应的 k。

为什么视频编码要用它?

Exp-Golomb 非常适合视频:1)硬件实现简单;2)不需要查找表;3)与视频信号的统计分布高度匹配;4)对运动向量和变换系数有良好的压缩效率。

Exp-Golomb 和其他编码相比如何?

与 Huffman 相比:实现更简单、无需表,但压缩率略低;与算术编码相比:结构更简单、复杂度更低,但压缩性略逊一筹。Exp-Golomb 在“简单实现”和“压缩效率”之间取得了很好平衡,非常适合实时视频编码。