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即爲解碼結果;