exp-golomb code 指数哥伦布编码
是一种压缩编码算法(视频编码中有用到这个了,h264,avs)
原理举例如下:
K阶哥伦布码由如下步骤生成:
a、 将数字以二进制的形式表达,去掉最低的K个bit之后+1;
b、 计算留下的bit数,讲此数减1,即需要在数字前添加的0的数目;
c、 将a中去掉的K bit补回至最低位;
使用举例:1阶哥伦布码:
数字 | 二进制表达 | 哥伦布编码结果 |
2 | 10 | 0100 |
3 | 11 | 0101 |
5 | 101 | 0111 |
9 | 1001 | 001011 |
哥伦布解码代码如下:
intLeadingZerobits = 0
for(intb=0; !b; LeadingZerobits++)
{
b= read_bits(LeadingZerobits);
}
codeNum= 2^(LeadingZerobits+k) – 2^k + value;
value:代表剩余比特数的二进制值;
codeNum即为解码结果;