指數哥倫布碼(exponential-golomb code, 即exp-golomb code)壓縮編碼方法過程:
用來表示非負整數的k階指數哥倫布碼可用如下步驟生成:
1. 將數字以二進位制形式寫出,去掉最低的k個位元位,之後加1
2. 計算留下的位元數,將此數減一,即是需要增加的前導零個數
3.將第一步中去掉的最低k個位元位補回位元串尾部
位元串格式為「字首1字尾」。1)1字尾=codenum+1,如codenum = 3,則1字尾=4,即為100,字尾為00;2)字首與字尾的位元數相同,且字首的各位位元為0,
下例為對不同codenum進行的編碼結果:
0 => 1 => 1
1 => 10 => 010
2 => 11 => 011
3 => 100 => 00100
4 => 101 => 00101
5 => 110 => 00110
6 => 111 => 00111
7 => 1000 => 0001000
8 => 1001 => 0001001
與此相反,這些語法元素的解析過程是由位元流當前位置位元開始讀取,包括非0 位元,直至leading_bits 的數量為0。具體過程如下所示:
leadingzerobits = ?1;
for( b = 0; !b; leadingzerobits++ )
b = read_bits( 1 )
變數codenum 按照如下方式賦值:
codenum = 2leadingzerobits ? 1 + read_bits( leadingzerobits )
這裡read_bits( leadingzerobits )的返回值使用高位在先的二進位制無符號整數表示。
如下示例:
二進位制位元數 長度 解析值
1001 1 0
001 1001 5 5
01 1010 3 2
010 3 1
000 1011 7 10
0001 001 7 8
指數哥倫布編碼
哥倫布編碼前言 在計算機中,一般數字的編碼都為二進位制,但是由於以相等長度來記錄不同數字,因此會出現很多的冗餘資訊,如下 十進位制二進位制 有效位元組 如數字1,原本只需要1個bit就能表示的資料,如今需要8個bit來表示,那麼其餘7個bit就可以看做是冗餘資料,在網路傳輸時,如果以原本等長的編碼方...
指數哥倫布編碼
哥倫布編碼前言 在計算機中,一般數字的編碼都為二進位制,但是由於以相等長度來記錄不同數字,因此會出現很多的冗餘資訊,如下 十進位制5 425521 二進位制00000101 00000100 11111111 00000010 00000001 有效位元組33 821 如數字1,原本只需要1個bit...
Exp Golomb指數哥倫布解碼和編碼
公式如下 其中leadingzerobits為1前面,0的個數。所以在解碼的時候,如果遇到描述子為ue v 則可以先數0的個數,數到1為止,其中0的個數即為leadingzerobits。而公式中的read bits leadingzerobits 則為從中間1開始,往後順序數leadingzero...