日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

指数哥伦布编码

發布時間:2025/7/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 指数哥伦布编码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

哥倫布編碼前言

在計算機中,一般數字的編碼都為二進制,但是由于以相等長度來記錄不同數字,因此會出現很多的冗余信息,如下:

十進制5425521
二進制0000010100000100111111110000001000000001
有效字節33821

?

如數字1,原本只需要1個bit就能表示的數據,如今需要8個bit來表示,那么其余7個bit就可以看做是冗余數據,

在網絡傳輸時,如果以原本等長的編碼方式來傳輸數據,則會出現很大的冗余量,加重網絡負擔

但是如果只用有效字節來傳輸上述碼流,則會是:10110011111111101,這樣根本不能分離出原本的數據

?

哥倫布編碼則是作為一種壓縮編碼算法,能很有效地對原本的數據進行壓縮,并且能很容易地把編碼后的碼流分離成碼字。

?

哥倫布編碼思想

一個碼字的信息量,稱之為熵,二進制上可用log2[n]來表示,也就是上面表格的有效字節,但是如果只是把有效碼字串聯起來,得到的只是一串無用的碼流,因為這串碼流中并沒有描述單一碼字的信息量,也就是無法對碼流進行分離

哥倫布編碼就采用了加0前綴,用于表達碼字的信息量,在得到m個0前綴后,就能知道該碼字在碼流中的長度,并從碼流中把碼字分離出來

?

哥倫布編碼概念

指數哥倫布(Exp-Golomb)編碼是一種在音視頻編碼標準中經常采用的可變長編碼方法,它是使用一定規則構造碼字的變長編碼模式。它將所有數字分為等大小不同的組,符號值較小的組分配的碼長較短,同一組內符號長基本相等,并且組的大小呈指數增長。

指數哥倫布碼的比特串分為“前綴”(prefix)和“后綴”(suffix)兩個部分。它的邏輯結構為:

[Mzero][1][INFO]

編碼后碼長為2M + 1 + k,M為前綴長度,1為中間的1長度,M+k為后綴長度

?

哥倫布編碼流程

zeroPrefixLength用于存儲0前綴個數

codeNum是即將被編碼的碼字

k是指數哥倫布編碼的指數

codeLen用于存儲編碼后長度

INFO為哥倫布編碼后綴

?

?

編碼時

M = zeroPrefixLength = floor(log2[codeNum + 2^k])

INFO = codeNum + 1 - 2^M

?

可以對編碼過程進行如下分析:

首先求出碼字的信息量,為N,

由于信息量肯定大于1,為減小碼流,對其減一得 M = N - 1(也就是上述的求下整)

然后也需要盡量對后綴進行壓縮,因此利用前面所得的M進行縮減得,codeNum - 2^M

最后考慮到0這個數字的存在,為了使INFO非負,對其+1

?

解碼時

codeNum = 2^M + INFO - 1

codeLen = 2M + 1 + k

?

K階指數哥倫布碼表

階數碼字結構codeNum 取值范圍階數碼字結構codeNum 取值范圍
K = 010K = 21XX0~3
01X1~201XXX4~11
001XX3~601XXXX12~27
0001XXXX7~1401XXXXX28~59
............
K = 11X0~1K = 31XXX0~7
01XX2~501XXXX8~23
001XXX6~13001XXXXX24~55
0001XXXX14~290001XXXXXX56~119
............

?

一般來說,根據碼字出現的概率調整哥倫布編碼的階數K,

如果是碼字0出現的概率較大,那么應該用K = 0,即0階指數哥倫布編碼

如果碼字0與1出現的概率都比較大,那么應該用K = 1,以此類推

在H.264中用的是K = 0

?

JM代碼如下

void ue_linfo(int ue, int dummy, int *len,int *info) {int i,nn;nn=(ue+1)/2;for (i=0; i < 16 && nn != 0; i++){nn /= 2;}*len= 2*i + 1;//哥倫布碼碼字的長度*info=ue+1-(int)pow(2,i);// 碼字的內容 }

?

?

轉載于:https://www.cnblogs.com/TaigaCon/p/3571651.html

總結

以上是生活随笔為你收集整理的指数哥伦布编码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。