編碼原理(附二)----二值化

二值化,開門見山的講,就是將非二進制的字符按照一定的規則編碼爲二進制串了,這樣編碼以後,出現的編碼符號便只有0和1,從算術編碼的角度來講,可能出現的字符就只有“0”和“1”,這樣更有利於編碼。常見的二值化編碼算法有,一元碼,截斷一元碼,K階指數哥倫布編碼,在此做簡單介紹,希望能給大家一個直觀的認識。

  1. 一元碼

    一元碼的編碼規則是,對於待編碼的符號“x”>=0,編碼爲x個“1”再加一個“0”編碼組成。舉個栗子:

    x = 5,根據一元碼編碼後,編碼爲“111110”。

2.截斷一元碼
截斷一元碼屬於一元碼的變體,用在已知待編碼的語法元素的最大值Max的情況下。假設待編碼符號爲x:
如果0 < x < Max,x二值化採用一元碼的方式;
如果x = Max,x二值化的二進制串全部由1組成,長度爲Max。
舉個栗子:
設一個序列中的Max = 6,則對符號“6”進行編碼,結果爲“111111”,對符號“3”進行編碼,按一元碼的編碼方式,結果爲“1110”。

3.K階指數哥倫布編碼
K階指數哥倫布編碼,主要的編碼格式爲【前綴0】【1】【bit信息】的結構。分別計算出了前綴0的長度,即前綴有多少個0,1的個數,以及bit信息,就完成了整個編編碼。編碼步驟如下:
(1)將待編碼的數據以二進制的形式表示,去掉最低位的k個比特,然後加1,得到新的值T1,查看T1含多少個bit,將該值減1,得到的便是前綴0的個數;
(2)將第一步中去掉的最低K個比特位加到T1後,暫稱其爲T2;
(3)在T2前增加前綴0.至此編碼就完成嘍。

還是舉個栗子吧:
對7進行一階指數哥倫布編碼,則k =1。
首先計算前綴0的個數:
7的二進制表示爲 111,去掉最低位的1個比特,爲11,然後加1,得T1 = 100,T1包含3個比特, 3 - 1 = 2,所以前綴0的個數爲2;
將去掉的1個比特位加上,得T2 = 1001;
在T2前增加兩個前綴0,得 001001,即最終的編碼結果爲001001。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章