音频编码技术:从熵编码到无损预测编码
1. Golomb - Rice编码
1.1 编码原理
Golomb - Rice编码器是一种简单的熵编码器,适用于待编码的索引 $i$ 具有拉普拉斯概率分布的情况,即 $p(i) \propto e^{-|k \cdot i|}$,其中 $k$ 为常数。在这种情况下,索引 $i$ 的最优码字长度 $H(i)$ 与 $k \cdot |i|$ 成正比,即 $H(i) \propto \log_2(p(i)) = k \cdot |i|$。
为了反映不同常数 $k$ 下码字长度的不同增长情况,Golomb - Rice 编码器的编码分为两部分:
1. 第一部分 :对索引 $i$ 的大致大小进行编码。通过将 $i$ 除以“块大小” $M$ 得到块索引 $i_b$,即 $i_b = \lfloor \frac{i}{M} \rfloor$,其中“$\lfloor \cdot \rfloor$” 是向下取整操作。当 $M$ 为 2 的幂次方时,编码会更简单,通常设 $M = 2^b$。块索引 $i_b$ 使用“一元”编码,即一个 0 后面跟着 $i_b$ 个 1。
2. 第二部分 :对“块内索引” $i - i_b \cdot M$ 进行编码,使用固定长度的二进制编码,其长度足以编码所有可能的块内索引。
1.2 Python示例
以下是 $b = 1$ 时的 Python 示例代码:
# for installation: su
超级会员免费看
订阅专栏 解锁全文
46

被折叠的 条评论
为什么被折叠?



