CABAC中的TU與EGK的聯合二值化方案

在Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard文獻中的二值化中有TU與EGK的聯合二值化方案。針對abs_level語法元素的二值化表如下:


由於對指數哥倫布編碼過程的印象一直都類似於下表所示。


因此覺得abs_level值爲16-20時對應的EG0 suffix有誤。查證以後發現H.264中的EGK編碼過程和上表的編碼過程是有區別的。

H.264中的EGK編碼過程如下圖所示:

下面以輸入的句法元素值爲幅度的絕對值abs_level=20,對此使用截斷值S=14,階數k=0的UEG0二值化方案進行舉例。

先編碼前綴部分,按照編碼規則易得二進制序列爲11 1111 1111 1111(14個1)。

再編碼後綴部分,下面按照僞C代碼進行編碼:

按照僞C代碼進行編碼過程:

x = 19 – S = 5。

進行第一次循環:5>1(即1<<0),因此put(1), x=5-1=4, k+1=1;

進行第二次循環:4>2(即1<<1),因此put(1), x=4-2=2, k+1=2;

進行第三次循環:2<4(即1<<2),因此put(0);

至此得到EG0的前綴一元碼與截斷位0。

進行第一次循環:k-1=1,因爲(x>>k)&0x01=(2>>1)&0x01=1,所以put(1);

進行第二次循環:k-1=0,因爲(x>>k)&0x01=(2>>0)&0x01=0,所以put(0);

至此得到EG0的後綴序列10。


可見,最終輸出的二進制序列爲11 1111 1111 1111 11010。


[轉載請註明作者和出處]

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