指數哥倫布碼

2021-07-23 17:29:10 字數 1387 閱讀 7928

指數哥倫布碼(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...