版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第6章 H.264/AVC 編碼器原理,第6章 H.264/AVC 編碼器原理,6.8 CAVLC(基于上下文自適應(yīng)的可變長(zhǎng)編碼) 6.9 CABAC(基于上下文的自適應(yīng)二進(jìn)制算術(shù)熵編碼) 6.10 碼率控制 6.11 去方塊濾波 6.12 其余特征,6.8 CAVLC(基于上下文自適應(yīng)的可變長(zhǎng)編碼),1.CAVLC概念 CAVLC即基于上下文的自適應(yīng)變長(zhǎng)編碼。CAVLC的本質(zhì)是變長(zhǎng)編碼,它的特性主要體現(xiàn)在自適應(yīng)能力上,CAVLC可以根據(jù)已編碼句法元素的情況動(dòng)態(tài)的選擇編碼中使用的碼表,并且隨時(shí)更新拖尾系數(shù)后綴的長(zhǎng)度,從而獲得極高的壓縮比。H.264標(biāo)準(zhǔn)中使用了CAVLC對(duì)4*4模塊的亮度和色度
2、殘差數(shù)據(jù)進(jìn)行編碼。,2.CAVLC 的基本原理 CAVLC用于亮度和色度殘差數(shù)據(jù)的編碼。殘差經(jīng)過(guò)變換量化后的數(shù)據(jù)表現(xiàn)出如下特性: 4*4塊數(shù)據(jù)經(jīng)過(guò)預(yù)測(cè)、變換、量化后,非零系數(shù)主要集中在低頻部分,而高頻系數(shù)大部分是零; 量化后的數(shù)據(jù)經(jīng)過(guò)zig-zag掃描,DC系數(shù)附近的非零系數(shù)值較大,而高頻位置上的非零系數(shù)值大部分是+1和-1 ; 相鄰的4*4塊的非零系數(shù)的數(shù)目是相關(guān)的。 CAVLC充分利用殘差經(jīng)過(guò)整數(shù)變換、量化后數(shù)據(jù)的特性進(jìn)行壓縮,進(jìn)一步減少數(shù)據(jù)中的冗余信息,為H.264卓越的編碼效率奠定了基礎(chǔ)。,3.CAVLC 的上下文模型 利用相鄰已編碼符號(hào)所提供的相關(guān)性,為所要編碼的符號(hào)選擇合適的上下文
3、模型。利用合適的上下文模型,就可以大大降低符號(hào)間的冗余度。,4.CAVLC 的編碼過(guò)程 4.1 重排序 在編碼器中,16*16幀內(nèi)模式編碼的宏塊里,每個(gè)已量化變換系數(shù)的4*4亮度塊的DC系數(shù)首先以圖1所示的順序掃描。剩余的15個(gè)AC系數(shù)從第二個(gè)位置開(kāi)始掃描。類似的,色度的2*2DC系數(shù)以光柵順序首先掃描,剩余的15個(gè)AC系數(shù)從從第二個(gè)位置開(kāi)始掃描。,圖 1,例:設(shè)有一個(gè)4*4塊數(shù)據(jù)(假定NC=0) 數(shù)據(jù)重排列: 0,3,0,1,-1,-1,0,1,0,0,0,0,0,0,0,0,4.2 編碼非零系數(shù)的數(shù)目(TotalCoeffs)以及拖尾系數(shù)的數(shù)目(TrailingOnes) 非零系數(shù)數(shù)目的范
4、圍是從0到16,拖尾系數(shù)數(shù)目的范圍是從0到3。如果1的個(gè)數(shù)大于3個(gè),只有最后3個(gè)被視為拖尾系數(shù),其余的被視為普通的非零系數(shù)。 例:設(shè)有一個(gè)4*4塊數(shù)據(jù)(假定NC=0) 非零系數(shù)的數(shù)目(TotalCoeffs) = 5; 拖尾系數(shù)的數(shù)目(TrailingOnes)= 3; 最后一個(gè)非零系數(shù)前零的數(shù)目(Total_zeros)=3;,對(duì)非零系數(shù)數(shù)目和拖尾系數(shù)數(shù)目的編碼是通過(guò)查表的方式,共有4個(gè)變長(zhǎng)表格和1個(gè)定長(zhǎng)表格可供選擇。表格的選擇是根據(jù)變量NC(Number Current,當(dāng)前塊值)的值來(lái)選擇的,在求變量NC值的過(guò)程中,體現(xiàn)了基于上下文的思想。,nA和nB分別為在當(dāng)前宏塊左側(cè)和上側(cè)的變換系數(shù)
5、幅值blkA和blkB中的非0變換系數(shù)幅值數(shù)量(由TotalCoeff( coeff_token )給出),例:設(shè)有一個(gè)4*4塊數(shù)據(jù)(假定NC=0) 非零系數(shù)的數(shù)目(TotalCoeffs) = 5; 拖尾系數(shù)的數(shù)目(TrailingOnes)= 3; NC=0 經(jīng)查表可知碼流為0000100 code=0000100,4.3 編碼每個(gè)拖尾系數(shù)的符號(hào) 對(duì)于每個(gè)拖尾系數(shù)(1)只需要指明其符號(hào), 其符號(hào)用一個(gè)比特表示(0表示+ ,1表示-)。編 碼的順序是按照反向掃描的順序,從高頻數(shù)據(jù) 開(kāi)始。 例:設(shè)有一個(gè)4*4塊數(shù)據(jù)(假定NC=0) 逆序編碼,三個(gè)拖尾系數(shù)的符號(hào)依次是,; 碼流為011 code
6、=0000100 011,4.4 編碼除了拖尾系數(shù)之外的非零系數(shù)的幅值(Levels) 非零系數(shù)的幅值(Levels)按照反向掃描順序進(jìn)行編碼,即從高頻向低頻順序編碼。 非零系數(shù)的幅值(Levels)的組成分為兩個(gè)部分,前綴(level_prefix)和后綴(level_suffix)。 變量suffixLength 是基于上下文模式自適應(yīng)更新的,suffixLength 的更新與當(dāng)前的suffixLength 的值以及已經(jīng)解碼好的非零系數(shù)的值(Level)有關(guān)。,suffixLength數(shù)值的初始化以及更新過(guò)程如下所 示: 普通情況下suffixLength初始化為0 ,但是當(dāng)塊中有多于10
7、個(gè)非零系數(shù)并且其中拖尾系數(shù)的數(shù)目少于3個(gè),suffixLength 初始化為 1 。 編碼在最高頻率位置上的非零系數(shù)。 如果當(dāng)前已經(jīng)解碼好的非零系數(shù)值大于預(yù)先定義好的閾值,變量suffixLength加1 。 第一個(gè)閾值是0 ,表示在第一個(gè)非零系數(shù)被編碼后,suffixLength的值總是增加1 。,編碼過(guò)程如下: 將有符號(hào)的Leveli轉(zhuǎn)換成無(wú)符號(hào)的levelCode; 如果Leveli是正的, levelCode=(Leveli1)2; 如果Leveli是負(fù)的, levelCode=-(Leveli1)1; 計(jì)算level_prefix: level_prefix =levelCode/(
8、1suffixLength); 計(jì)算level_suffix: level_suffix = levelCode %(1suffixLength); 根據(jù)suffixLength的值來(lái)確定后綴的長(zhǎng)度; suffixLength updata;,例:設(shè)有一個(gè)4*4塊數(shù)據(jù)(假定NC=0) 按照反向掃描順序進(jìn)行編碼 Level1=1 且 Level10 levelCode=(Level11)2=0 初始化suffixLength=0 level_prefix =levelCode/(1suffixLength)=0 level_suffix =levelCode %(1suffixLength)=0
9、 根據(jù)suffixLength的值來(lái)確定后綴的長(zhǎng)度 后綴長(zhǎng)度為0, level_prefix =0 查表可得 碼流為1(前綴) 同理可得 按照 Level0=3 levelCode = 4 level_prefix = 2; 查表得bit string =001 level_suffix = 0 suffixLength = 1;故碼流為001(前綴)0(后綴); code=0000100 011 1 0010,4.5 編碼最后一個(gè)非零系數(shù)前零的數(shù)目(TotalZeros) TotalZeros指的是在最后一個(gè)非零系數(shù)前零的數(shù)目,此非零系數(shù)指的是按照正向掃描的最后一個(gè)非零系數(shù)。 例:設(shè)有一個(gè)4
10、*4塊數(shù)據(jù)(假定NC=0) TotalZeros=3 又TotalCoeffs(非零系數(shù)的數(shù)目)=5 查表可得碼流為111 code=0000100 011 1 0010 111,4.6 編碼每個(gè)非零系數(shù)前零的個(gè)數(shù)(RunBefore) 每個(gè)非零系數(shù)前零的個(gè)數(shù)(RunBefore)是按照反序來(lái)進(jìn)行編碼的,從最高頻的非零系數(shù)開(kāi)始。 RunBefore在以下兩種情況下是不需要編碼的: 最后一個(gè)非零系數(shù)(在低頻位置上)前零的個(gè)數(shù)。 如果沒(méi)有剩余的零需要編碼時(shí),沒(méi)有必要再進(jìn)行 RunBefore的編碼。 在CAVLC中,對(duì)每個(gè)非零系數(shù)前零的個(gè)數(shù)的編碼是依賴于ZerosLeft的值,ZerosLeft表
11、示當(dāng)前非零系數(shù)左邊的所有零的個(gè)數(shù),ZerosLeft的初始值等于TotalZeros,在每個(gè)非零系數(shù)的RunBefore 值編碼后進(jìn)行更新。,例:設(shè)有一個(gè)4*4塊數(shù)據(jù)(假定NC=0) 按照逆序編碼,查表可得,code=0000100 011 1 0010 111 101110 編碼完畢!,CAVLC 編碼流程圖,5.CAVLC 解碼過(guò)程,解碼程序流程圖,例: 解碼過(guò)程 解碼完畢輸出序列:0,3,0,1,-1,-1,0,1.,解析除拖尾系數(shù)外的非零系數(shù)的幅值(level) (1) 確定后綴長(zhǎng)度SuffixLength (2)根據(jù)碼流查表9-6得到前綴LevelPrefix (3)根據(jù)前綴和后綴,
12、得到LevelCode=(levelprefixsuffixlength)+levelsuffix (4) Levelcode為偶數(shù) level=(levelcode+2)/2 Levelcode為奇數(shù) level=(-levelcode-1)/2 (5)根據(jù)設(shè)定的閾值確定是否update Suffixlegth,6.CAVLC與UVLC比較 在相同碼率的情況下,用CAVLC編碼的PSNR 的值高于用UVLC編碼的PSNR的值,并且隨著比特率的增加CAVLC的優(yōu)勢(shì)更加明顯,第6章 H.264/AVC 編碼器原理,6.8 CAVLC(基于上下文自適應(yīng)的可變長(zhǎng)編碼) 6.9 CABAC(基于上下文
13、的自適應(yīng)二進(jìn)制算術(shù)熵編碼) 6.10 碼率控制 6.11 去方塊濾波 6.12 其余特征,CABAC(基于上下文的自適應(yīng)二進(jìn)制算術(shù)熵編碼),1.自適應(yīng)算術(shù)編碼 算術(shù)編碼的思想是用0到1的區(qū)間上的一個(gè)數(shù)來(lái)表示一個(gè)字符輸入流,是用區(qū)間遞進(jìn)的方法來(lái)為輸入流尋找這個(gè)碼字的,它逐個(gè)字符地讀入輸入流,在每一個(gè)新的字符出現(xiàn)后遞歸地劃分當(dāng)前區(qū)間。到處理完最后一個(gè)字符后,得到了最終區(qū)間,在最終區(qū)間中任意挑選一個(gè)數(shù)作為輸出。,1.1 算法流程 在算術(shù)編碼的遞進(jìn)計(jì)算過(guò)程中,編碼器必須保存以下變量記錄狀態(tài): 當(dāng)前區(qū)間的下限L 當(dāng)前區(qū)間的大小R 當(dāng)前字符binval 各字符的概率估計(jì)值Px L和R用來(lái)確定當(dāng)前區(qū)間; P
14、x則是當(dāng)前區(qū)間的劃分根據(jù),在二進(jìn)制編碼中,只有1和0兩個(gè)字符,所以只需記錄P1或P0即可;,1.2 自適應(yīng) 自適應(yīng)算術(shù)編碼方式通常無(wú)需先定義概率模型,假定所有字符的初始概率相等,均為1/N(N為字符種類數(shù)),然后根據(jù)字符出現(xiàn)的情況進(jìn)行自適應(yīng)概率更新。隨著編(譯)碼過(guò)程的進(jìn)行,概率分配將逐漸趨于信源的實(shí)際概率分布。 這種方法對(duì)于無(wú)法進(jìn)行概率統(tǒng)計(jì)的信源比較合適。 1.3 碼流輸出 在實(shí)際操作過(guò)程中,編碼器并不是等遞進(jìn)到最終區(qū)間才輸出碼字的,在二進(jìn)制編碼中,區(qū)間的上下限以二進(jìn)制形式表示,每當(dāng)下限的最高有效位與上限的最高有效位一樣時(shí),就可以移出這個(gè)比特。這樣的方法可以保證編碼器在遞進(jìn)計(jì)算的同時(shí)不斷地輸
15、出碼流。 1.4 算術(shù)編碼與哈夫曼性能比較 算術(shù)編碼不需要預(yù)先為每個(gè)可能的信源序列指定碼書(shū)。 算術(shù)編碼可以簡(jiǎn)單地通過(guò)更新符號(hào)概率表來(lái)實(shí)現(xiàn)對(duì)信源統(tǒng)計(jì)特性的自適應(yīng)。,1.5 自適應(yīng)算術(shù)編碼的計(jì)算復(fù)雜度及優(yōu)化 1 ) CABAC 的概率模型 二進(jìn)制算術(shù)編碼的原理與一般算術(shù)編碼一樣,所不同的是:在二進(jìn)制算術(shù)編碼中編碼序列只有“0”和“1”兩種符號(hào),所涉及的概率也只有P(0)和P(1)。在編碼過(guò)程中,輸入數(shù)據(jù)流中的信源符號(hào)被分為大概率符號(hào)(MPS)和小概率符號(hào)(LPS)。概率區(qū)間分成兩份,一份是MPS的編碼區(qū)間,一份是LPS的編碼區(qū)間,區(qū)間長(zhǎng)度由每個(gè)信源符號(hào)的概率決定,LPS的編碼區(qū)間總應(yīng)該小于MPS的
16、編碼區(qū)間。 CABAC 在計(jì)算的復(fù)雜度和編碼效率之間作了折中,建立了一個(gè)基于查表的概率模型,將從0到0.5范圍內(nèi)的概率量化為64個(gè)值,這些概率對(duì)應(yīng)于LPS字符,則MPS字符的概率為 。,如圖6.57 所示,列出了LPS被量化后的概率值,這些值以為編號(hào),實(shí)線和虛線指示了概率的刷新值。在處理當(dāng)前字符時(shí),概率的刷新有兩個(gè)方向: 如果當(dāng)前字符是LPS, 變大,在圖上順著虛線往左尋找; 如果當(dāng)前字符是MPS,則 變小,在圖上順著實(shí)線往右尋找。可以看到,在 CABAC 建立的這個(gè)概率模型中,出現(xiàn) MPS時(shí)的刷新值都只是簡(jiǎn)單地指向當(dāng)前值的下一位,即 +1,這一點(diǎn)可以被利用來(lái)降低計(jì)算量。,在CABAC 建立的
17、概率模型中,有三個(gè)值是較特殊的: =0時(shí),LPS的概率已經(jīng)達(dá)到了最大值0.5,如果下一個(gè)出現(xiàn)的字符仍是LPS ,則此時(shí)LPS和MPS的字符交換位置; =62,這是表中可用的最小值,它對(duì)應(yīng)的刷新值是它自身,當(dāng)MPS連續(xù)出現(xiàn),LPS的概率持續(xù)減小,直到=62,保持不變。 =63時(shí),對(duì)應(yīng)著LPS的最小概率值,但它并沒(méi)有被納入CABAC的概率估計(jì)和更新的范圍,這個(gè)值被用作特殊的場(chǎng)合,傳達(dá)特殊的信息。比如,當(dāng)解碼器檢測(cè)到當(dāng)前區(qū)間的劃分依據(jù)是這個(gè)概率值時(shí),認(rèn)為這表示當(dāng)前流的結(jié)束;,2 ) 乘法優(yōu)化 算術(shù)編碼機(jī)制的中間狀態(tài)通常有兩個(gè)參數(shù):當(dāng)前編碼區(qū)間長(zhǎng)度R和當(dāng)前編碼區(qū)間的最低限L。我們根據(jù)給定的概率估計(jì)對(duì)當(dāng)
18、前的區(qū)間進(jìn)行細(xì)分,首先,當(dāng)前區(qū)間寬度R也需要量化,通過(guò)一個(gè)量化值 近似表示,在 范圍設(shè)定4個(gè)區(qū)間長(zhǎng)度量化值 ,選取這四個(gè)量化值之一來(lái)代替R進(jìn)行區(qū)間劃分運(yùn)算。編碼區(qū)間長(zhǎng)度R的取值變化將會(huì)導(dǎo)致量化值 的不同取值(即量化值索引 取值的變化)。 的取值可通過(guò)以下過(guò)程由R計(jì)算得到: 1)把R的值表示成二進(jìn)制形式(用9位二進(jìn)制數(shù)表示); 2)把R值的二進(jìn)制形式右移6位(高位補(bǔ)“0”); 3)然后和“3”的二進(jìn)制表示形式進(jìn)行“位與”運(yùn)算,所得的結(jié)果就是 的取值。,每次在需要做乘法運(yùn)算時(shí),攜帶和進(jìn)行查表操作就得到結(jié)果。 建立了概率模型和乘法模型后,在遞進(jìn)計(jì)算過(guò)程CABAC 必須保存以下變量記錄狀態(tài): 1 )當(dāng)
19、前區(qū)間的下限 L 2 )當(dāng)前區(qū)間的大小 R 3 )當(dāng)前MPS字符 4 )LPS的概率編號(hào) 算法流程圖如圖6.58所示。,根據(jù)當(dāng)前二進(jìn)制符號(hào)所在context model的概率狀態(tài)和當(dāng)前編碼區(qū)間R的量化值索引確定LPS的編碼區(qū)間長(zhǎng)度Rlps,完成區(qū)間劃分。 判斷當(dāng)前二進(jìn)制符號(hào)是大概率符號(hào)(MPS)或小概率符號(hào)(LPS) 若是LPS,則LPS的編碼區(qū)間作為下一個(gè)二進(jìn)制符號(hào)的編碼區(qū)間,區(qū)間下限L要增加MPS的編碼區(qū)間的長(zhǎng)度。 根據(jù)當(dāng)前二進(jìn)制符號(hào)更新當(dāng)前context model的概率狀態(tài)。,=0時(shí),LPS的概率已經(jīng)達(dá)到了最大值0.5,如果下一個(gè)出現(xiàn)的字符仍是LPS ,則此時(shí)LPS和MPS的字符交換位
20、置;,=62,這是表中可用的最小值,它對(duì)應(yīng)的刷新值是它自身,當(dāng)MPS連續(xù)出現(xiàn),LPS的概率持續(xù)減小,直到=62,保持不變。,LPS,MPS,2.上下文模型 算術(shù)編碼是對(duì)整個(gè)流分配碼字,但考慮到如果有某個(gè)比特丟失,編碼和解碼將錯(cuò)位。為了將差錯(cuò)控制在一定范圍內(nèi),CABAC 將片(slice )作為算術(shù)編碼的生命期。即使對(duì)片內(nèi)的數(shù)據(jù),CABAC 也不是將它們作為整體來(lái)處理的,而是繼續(xù)分割為若干個(gè)子部分,分別編碼。 H.264 將一個(gè)片內(nèi)可能出現(xiàn)的數(shù)據(jù)劃分為399個(gè)上下文模型, 每個(gè)模型以ctxIdx標(biāo)識(shí),在每個(gè)模型內(nèi)部進(jìn)行概率的查找和更新。H.264 共要建立399 個(gè)概率表,每個(gè)上下文模型都獨(dú)立地
21、使用對(duì)應(yīng)的表維護(hù)概率狀態(tài)。這些模型的劃分精確到比特,幾乎大多數(shù)的比特和它們鄰近的比特處于不同的上下文模型中。,解碼器對(duì)于輸入的每一個(gè)比特首先要做的工作是查找它屬于哪個(gè)上下文模型,然后查找該上下文模型對(duì)應(yīng)的概率表以遞進(jìn)區(qū)間。查找某個(gè)比特對(duì)應(yīng)的上下文模型一般有以下兩個(gè)步驟: 確定該比特所屬的句法元素,H.264 對(duì)每個(gè)句法元素都分配了一個(gè)上下文模型的區(qū)間,該句法元素中的每個(gè)比特的上下文模型的ctxIdx 都在這一區(qū)間。 表 6.15 描述了用CABAC編碼的各句法元素所在上下文模型區(qū)間的起始ctxIdx 。句法元素的具體含義在第七章句法與語(yǔ)義中詳細(xì)介紹。,表 6.15 描述了用CABAC編碼的各句
22、法元素所在上下文模型區(qū)間的起始ctxIdx 。句法元素的具體含義在第七章句法與語(yǔ)義中詳細(xì)介紹。,按照某個(gè)法則為當(dāng)前比特在中得到的區(qū)間中找到所對(duì)應(yīng)的ctxIdx 。 該法則對(duì)于每個(gè)句法元素都不同。這個(gè)法則一般是用表來(lái)定義的,表2 描述了大多數(shù)句法元素為所屬各比特查找ctxIdx的法則。在這個(gè)表中,binIdx是各比特在對(duì)應(yīng)句法元素中的序號(hào)。ctsOffset 是表6.15 中所示各句法元素對(duì)應(yīng)上下文模式區(qū)間的起始偏移。我們看到,在表 6.16 中某些比特對(duì)應(yīng)多個(gè)上下文模型,這一般是在解碼中需要根據(jù)前后宏塊在空間上的相關(guān)性再作進(jìn)一步確定。,binIdx:各比特在對(duì)應(yīng)句法元素中的序號(hào)。 ctsOff
23、set :表6.15 中所示各句法元素對(duì)應(yīng)上下文模式區(qū)間的起始偏移。 在表 6.16 中某些比特對(duì)應(yīng)多個(gè)上下文模型,這一般是在解碼中需要根據(jù)前后宏塊在空間上的相關(guān)性再作進(jìn)一步確定。,3.對(duì)輸入流預(yù)編碼 CABAC主要有四種二進(jìn)制化算法方案,它們分別是U,TU,UEGK,FL。 一元(U)二值化過(guò)程 :對(duì)于x=0的無(wú)符號(hào)整數(shù)值,由x個(gè)”1”和一個(gè)終結(jié)符合”0”組成。 舍位一元(TU)二值化過(guò)程:對(duì)于小于cMax的語(yǔ)法元素值(無(wú)符號(hào)整數(shù)),調(diào)用規(guī)定的(U)二值化過(guò)程。對(duì)于等于cMax的語(yǔ)法元素值,二進(jìn)制碼串的全都碼字為1,長(zhǎng)度為cMax。 串聯(lián)的一元/k階順序哥倫布指數(shù)(UEGk)二值化過(guò)程:由一
24、個(gè)前綴和一個(gè)后綴碼字串接而成。 固定長(zhǎng)度(FL)二值化過(guò)程 :該方法需要假設(shè)相應(yīng)得語(yǔ)法元素的值x為有限,即 0=xS。方法為直接用x值的二進(jìn)制表示形式作為其二進(jìn)制化結(jié)果(bins) 長(zhǎng)度固定為:,4.概率狀態(tài)的初始化 在H.264/AVC視頻編碼中,slice是自適應(yīng)編碼的基本單位。新的slice數(shù)據(jù)到來(lái)時(shí),CABAC要對(duì)各概率狀態(tài)進(jìn)行重新初始化,初始化的重要依據(jù)是QP參數(shù),各slice的QP參數(shù)不同,則在初始化時(shí)各概率狀態(tài)值不同。 H.264 為每個(gè)上下文模型定義了初始化常量 m、n ,通過(guò)查表獲得上下文模型m、n 。 按照如下算法計(jì)算 、 : preCtxState = Clip3(1,1
25、26,(mSliceQP)4) +n) if( preCtxState = 63 ) = 63 - preCtxState = 0 else = preCtxState - 64 = 1 式中,函數(shù)Clip3(a,b,c) 表示將 c 的值限制在a,b 。preCtxState 是一個(gè)中間變量。,5.CABAC熵編碼器結(jié)構(gòu)框圖,6.結(jié)論 CABAC中內(nèi)建了由大量實(shí)驗(yàn)統(tǒng)計(jì)而得到的概率模型。在編碼過(guò)程中,CABAC 根據(jù)當(dāng)前所要編碼的內(nèi)容以及先前已編碼好內(nèi)容,動(dòng)態(tài)地選擇概率模型來(lái)進(jìn)行編碼,并實(shí)時(shí)更新相對(duì)應(yīng)的概率模型。并且,CABAC在計(jì)算量和編碼速度上進(jìn)行了優(yōu)化,用了量化查表、移位、邏輯運(yùn)算等方法
26、代替復(fù)雜的概率估計(jì)和乘法運(yùn)算。在實(shí)際應(yīng)用中,CABAC 與其它主流的熵編碼方式相比有更高的編碼效率圖 6.59描述了圖象質(zhì)量在各信噪比時(shí)CABAC 節(jié)省碼率的性能。,用一組質(zhì)量在2840dB 的視頻圖像做測(cè)試,應(yīng)用CABAC可使比特率進(jìn)一步提高9%14%,第6章 H.264/AVC 編碼器原理,6.8 CAVLC(基于上下文自適應(yīng)的可變長(zhǎng)編碼) 6.9 CABAC(基于上下文的自適應(yīng)二進(jìn)制算術(shù)熵編碼) 6.10 碼率控制 6.11 去方塊濾波 6.12 其余特征,6.10 碼率控制,由于視頻序列中的圖像內(nèi)容隨著空間與時(shí)間的不同而變化很大,需要為圖像的不同部分選擇不同的編碼參數(shù)進(jìn)行壓縮編碼,而編
27、碼控制的目的就是確定一組編碼參數(shù)。H.264 編碼器采用基于 Lagrangian 優(yōu)化算法的率失真優(yōu)化模型實(shí)現(xiàn)視頻編碼的控制,其實(shí)現(xiàn)簡(jiǎn)單而且效率高。,1.基于Lagrangian 優(yōu)化算法的H.264編碼控制模型1.1 Lagrangian優(yōu)化算法 考慮K個(gè)信源樣本值的集合 ,其中 可以是矢量或標(biāo)量。每一個(gè)樣本值 可以通過(guò)選取編碼模式集 中的某些編碼模式 進(jìn)行壓縮編碼。因此對(duì)應(yīng)于樣本值集合S存在相應(yīng)的編碼模式集合 。在給定的限定碼率 下,對(duì)于給定信源樣本序列所選的編碼模式,應(yīng)使編碼后的失真度最小,如(6.42)式所示。 (6.42) D(S,I):輸出比特流的失真度 R(S,I):輸出比特流
28、的碼率 其中,比特流由采用編碼模式I對(duì)樣本S進(jìn)行編碼并進(jìn)行量化后輸出。,在實(shí)際應(yīng)用中,通常采用下式來(lái)選取編碼模式: 是Lagrange 參數(shù)。對(duì)于樣本S及其選定的編碼模式I ,當(dāng)其編碼后得到的比特率和失真度的線性組合J(S,I|)(Lagrangian代價(jià)函數(shù))最小時(shí),此時(shí)的編碼模式是最優(yōu)的。 考慮某一樣本 ,可認(rèn)為其編碼后的比特率和失真度僅與相應(yīng)的編碼模式 有關(guān),因此,只要分別對(duì)每一個(gè)樣本 選擇最優(yōu)的編碼模式,便可以很容易的得到J(S,I|)的最小值,從而實(shí)現(xiàn)相應(yīng)的編碼控制。,1.2 編碼控制模型 假設(shè)圖像序列s被分割為K個(gè)不同的塊 ,相應(yīng)的像素用 表示。在對(duì)圖像序列s進(jìn)行基于塊的混合視頻編
29、碼時(shí),對(duì)于每塊 所選定的編碼模式應(yīng)當(dāng)使編碼后的Lagrangian代價(jià)函數(shù)J(S,I|)達(dá)到最小,當(dāng)且僅當(dāng)此時(shí)認(rèn)為基于塊的混合視頻編碼器達(dá)到最優(yōu)化。 在Lagrange參數(shù) 與量化參數(shù)Q選定后,H.264 的編碼器通過(guò)最小化Lagrangian代價(jià)函數(shù)實(shí)現(xiàn)對(duì)每一個(gè)宏塊的編碼模式的選定。宏塊 的Lagrangian代價(jià)函數(shù)如(6.46)式所示。 為相應(yīng)宏塊的編碼模式。其中,,在不同編碼模式下,編碼后比特流的比特率 與失真度 的計(jì)算并不完全相同。 在幀內(nèi)模式下 為熵編碼后比特流的比特率,失真度 則由宏塊的原始像素和重建像素決定,且共有2種計(jì)算方式,分別如下式所示。 (6.47) (6.48) SS
30、D:差值平方和 SAD:絕對(duì)誤差和 S:原始宏塊 S:重建宏塊 A:當(dāng)前的宏塊,在幀間模式下 由于采用了基于塊的運(yùn)動(dòng)估計(jì),Lagrangian 代價(jià)函數(shù)的計(jì)算比較于幀內(nèi)模式要復(fù)雜。對(duì)于采用幀間編碼模式的AB大小的塊,在給定的Lagrange參數(shù) 和參考圖像s的情況下,通過(guò)最小化Lagrangian代價(jià)函數(shù)來(lái)實(shí)現(xiàn)塊 的運(yùn)動(dòng)估計(jì),如式(6.49)所示。 (6.49) M:可能的編碼模式的集合 :為傳輸運(yùn)動(dòng)矢量 所需的比特?cái)?shù),失真度 由式(6.50)或式(6.51)得到。 (6.50) (6.51) 在運(yùn)動(dòng)估計(jì)時(shí)水平與垂直方向的搜索范圍為32個(gè)整像素,并采用一幀或多幀參考圖像。 為尋找滿足式(6.4
31、9)要求的運(yùn)動(dòng)矢量 ,最終選定使得Lagrangian代價(jià)函數(shù)最小的運(yùn)動(dòng)矢量具有14像素精度。,同幀內(nèi)模式相同,在幀間模式下比特率 為熵編碼后比特流的比特率,失真度 則由宏塊的原始像素和重建像素決定。 對(duì)于差值平方和SSD來(lái)說(shuō) 對(duì)于絕對(duì)誤差和SAD來(lái)說(shuō),基于 Lagrangian 優(yōu)化算法的編碼控制模型 在H.264 中, 通常通過(guò)速率 控制相關(guān)算法 選擇合適的量 化參數(shù),并通 過(guò)相應(yīng)的 Lagrange參數(shù) 進(jìn)行視頻編碼 控制。,2.實(shí)驗(yàn)結(jié)果和性能分析 視頻會(huì)議與流媒體應(yīng)用的主要區(qū)別在于,視頻會(huì)議需要滿足低時(shí)延和實(shí)時(shí)的要求,而流媒體的相關(guān)應(yīng)用則側(cè)重于圖像細(xì)節(jié)的處理。因此基于H.264 編碼標(biāo)
32、準(zhǔn)的視頻會(huì)議與流媒體應(yīng)用所實(shí)現(xiàn)的編碼器的構(gòu)成區(qū)別很大。 2.1 流媒體應(yīng)用中的實(shí)驗(yàn)結(jié)果和性能分析 針對(duì)于流媒體應(yīng)用, 基于H.264 測(cè)試模型JM-61e所 實(shí)現(xiàn)的主檔次(MP)編碼器 的構(gòu)成特性如表6.18 所示, 并在此基礎(chǔ)上實(shí)現(xiàn)了基于 Lagrangian優(yōu)化算法的編碼控 制模型。,輸入幀頻為30fs, 長(zhǎng)度為 8.33秒。該 視頻序列具有復(fù)雜 的運(yùn)動(dòng)和較高的空間 色彩細(xì)節(jié),適于測(cè)試 流媒體應(yīng)用中編碼器 的性能。,2.2 視頻會(huì)議應(yīng)用中的實(shí)驗(yàn)結(jié)果和性能分析 針對(duì)于視頻會(huì)議應(yīng)用,基于H.264 測(cè)試模型JM-61e所實(shí)現(xiàn)的基本檔次(Baseline)編碼器的構(gòu)成特性如表6.20 所示,并在
33、此基礎(chǔ)上實(shí)現(xiàn)了基于Lagrangian 優(yōu)化算法的編碼控制模型。,輸入幀頻為30f/s,長(zhǎng)度為10秒。該視頻序列中的物體幾乎處于靜止?fàn)顟B(tài),適于測(cè)試視頻會(huì)議應(yīng)用中編碼器的性能。,以上兩個(gè)實(shí)驗(yàn)結(jié)果證實(shí):實(shí)現(xiàn)了基于Lagrangian優(yōu)化算法的編碼控制模型的 H.264 編碼器,其編碼性能相較于以往的所有編碼標(biāo)準(zhǔn)有了重大提高,并在流媒體及視頻會(huì)議等視頻應(yīng)用中顯示出了巨大潛力。,第6章 H.264/AVC 編碼器原理,6.8 CAVLC(基于上下文自適應(yīng)的可變長(zhǎng)編碼) 6.9 CABAC(基于上下文的自適應(yīng)二進(jìn)制算術(shù)熵編碼) 6.10 碼率控制 6.11 去方塊濾波 6.12 其余特征,6.11 去方
34、塊濾波,H.264/MPEG-4 AVC 視頻編碼標(biāo)準(zhǔn)中,在編解碼器反變換量化后圖像會(huì)出現(xiàn)方塊效應(yīng)。 其產(chǎn)生的原因有兩個(gè): 最重要的一個(gè)原因是基于塊的幀內(nèi)和幀間預(yù)測(cè)殘差的DCT 變換。變換系數(shù)的量化過(guò)程相對(duì)粗糙,因而反量化過(guò)程恢復(fù)的變換系數(shù)帶有誤差,會(huì)造成在圖像塊邊界上的視覺(jué)不連續(xù)。 第二個(gè)原因來(lái)自于運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)。,1.去方塊濾波基本概念 (a) (b) 圖6.63 不采用(a)和采用(b)去方塊濾波器的 H.264編解碼器的效果 顯然,去方塊濾波器的作用是去除H.264編解碼算法帶來(lái)的方塊效應(yīng)。在濾波方塊效應(yīng)時(shí),應(yīng)該先判斷該邊界是圖像真實(shí)邊界還是方塊效應(yīng)所形成的邊界(假邊界)。對(duì)真實(shí)邊界不進(jìn)
35、行濾波處理,而對(duì)假邊界則要根據(jù)周圍圖像塊的性質(zhì)和編碼方法采用不同強(qiáng)度的濾波。,圖中在DCT 變換邊界 上有明顯的痕跡,呈現(xiàn)出方塊形狀,2.邊界分析 2.1 4*4方塊的誤差分析 當(dāng)對(duì)殘差用方塊變換進(jìn)行編碼時(shí),方塊邊界比內(nèi)部的編碼誤差大。對(duì)這個(gè)現(xiàn)象的合理解釋是內(nèi)部點(diǎn)的重建是對(duì)周圍點(diǎn)進(jìn)行加權(quán)平均得到。而邊界點(diǎn)所用到的加權(quán)平均點(diǎn)較少,所以重建效果較差。這個(gè)誤差分布不均勻的后果是需要方塊邊界濾波以提高圖像客觀質(zhì)量。,2.2 自適應(yīng)邊界級(jí)濾波器 邊界強(qiáng)度(Bs)決定去方塊濾波器選擇濾波參數(shù),控制去除方塊效應(yīng)的程度。對(duì)所有4*4亮度塊間的邊界,邊界強(qiáng)度參數(shù)值在0到4之間,它與邊界的性質(zhì)有關(guān)。表6.22 說(shuō)
36、明Bs與相鄰圖像塊的模式及編碼條件的關(guān)系。表中的條件是從表的上部至下部進(jìn)行判斷的,直到某一條件滿足,給Bs相應(yīng)賦值。 色度塊邊界濾波的Bs值不另外單獨(dú)計(jì)算,而是從相應(yīng)亮度塊邊界的Bs值復(fù)制而來(lái)。,2.3 自適應(yīng)樣點(diǎn)級(jí)濾波器 在去方塊濾波中,非常重要的是要區(qū)分圖像中的真實(shí)邊界和由DCT 變換系數(shù)量化而造成的假邊界。為了保持圖像的逼真度,應(yīng)該盡量濾除假邊界以不致被看出的同時(shí)保持圖像真實(shí)邊界不被濾波。 為了區(qū)分這兩種情況,要分析每個(gè)需要被濾波的邊界兩邊的樣點(diǎn)值。這里,定義兩個(gè)相鄰4*4塊中一條直線上的樣點(diǎn)為 ,實(shí)際的圖像邊界在 之間 ,如圖6.64所示。,如上小節(jié)所述,當(dāng)Bs值為0時(shí),濾波器對(duì)邊界不
37、起作用。對(duì)于Bs值為非0的邊界,為區(qū)分上述真假兩種邊界,定義一對(duì)與量化有關(guān)的參數(shù),為和,用來(lái)檢查圖像內(nèi)容,以決定每個(gè)樣本點(diǎn)集是否要被濾波。只有下述三個(gè)條件同時(shí)滿足,直線上的樣點(diǎn)才被濾波: (6.55) (6.56) (6.57) 和值根據(jù)邊界兩邊的平均量化參數(shù)查表得到。,表示塊間門限,表示塊內(nèi)的邊界門限,3.濾波過(guò)程 3.1 濾波運(yùn)算概述 濾波應(yīng)該在適當(dāng)位置上進(jìn)行,這樣邊界兩邊直線上修改過(guò)的樣點(diǎn)值作為后續(xù)運(yùn)算的輸入值而不引入的誤差。 濾波是基于宏塊基礎(chǔ)上的,先對(duì)垂直邊界進(jìn)行水平濾波,再對(duì)水平邊界進(jìn)行垂直濾波。對(duì)宏塊的兩個(gè)方向?yàn)V波都完成后才能進(jìn)行后面宏塊的濾波。對(duì)圖像中宏塊的濾波按raster掃
38、描方式進(jìn)行。,對(duì)于每個(gè)宏塊以及每個(gè)分量,先濾波縱向的邊緣,從宏塊的左側(cè)的邊緣開(kāi)始,按照幾何學(xué)的順序向宏塊的右側(cè)邊緣處理,然后濾波橫向邊緣,從宏塊的上部邊緣開(kāi)始,按照幾何學(xué)的順序向宏塊的下部方向進(jìn)行處理。,樣點(diǎn)集的Bs值選擇兩種濾波方式: 特定濾波方式:針對(duì)Bs為4的強(qiáng)濾波 普通濾波方式:應(yīng)用于其它情況(Bs1,2 ,3) 對(duì)每種方式,用閾值估計(jì)另外兩個(gè)空間變化條件,以決定亮度點(diǎn)的濾波范圍。 (6.62) (6.63),3.2 Bs值從1到3的邊界濾波 (1)基本濾波運(yùn)算 先討論對(duì)亮度點(diǎn)的濾波。對(duì)這種模式的濾波,濾波后的 值按下式計(jì)算: (6.64) (6.65) 其中 分兩步計(jì)算,先計(jì)算它的初
39、始值 ,再對(duì)這個(gè)初始值進(jìn)行限幅后代入上式。 初始值 根據(jù)邊界兩邊的樣點(diǎn)值計(jì)算: (6.66) 只有式(6.62) 或(6.63)成立,才修正對(duì)應(yīng) 值。如果即如果式(6.62)成立,濾波后的 值按下式計(jì)算: (6.67) 同樣,如果式(6.63) 成立,濾波后的 值按下式計(jì)算:,(6.68),可濾波,可修正,對(duì) 的初始值按下式計(jì)算: (6.69) 按同樣的關(guān)系式計(jì)算,用 (2)限幅 如果上述初始值 直接應(yīng)用在濾波計(jì)算中,則可能導(dǎo)致濾波頻率過(guò)低,出現(xiàn)圖像模糊。自適應(yīng)濾波器的一個(gè)重要部分是限制的值。這個(gè)過(guò)程稱為限幅。對(duì)于內(nèi)部和邊界上的樣點(diǎn),限幅過(guò)程不同。 對(duì)于內(nèi)部樣點(diǎn) 用于濾波的值被限制在 范圍內(nèi),IndexA和Bs越大,則c1也越大,允許更強(qiáng)的濾波。,最終對(duì)p1和q1濾波的限幅值為: 對(duì)于濾波邊界p0和q
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年怒江州交通運(yùn)輸局公益性崗位招聘(1人)考試備考試題及答案解析
- 2025河北秦皇島市第五中學(xué)等2所學(xué)校公開(kāi)招聘教師2名(第二批)考試備考試題及答案解析
- 2026年西安市鄠邑區(qū)就業(yè)見(jiàn)習(xí)基地見(jiàn)習(xí)招聘(163人)考試參考題庫(kù)及答案解析
- 2026中國(guó)華電集團(tuán)有限公司廣東公司本部及科創(chuàng)中心一般管理人員招聘7人考試參考試題及答案解析
- 2026年濟(jì)南市歷城區(qū)教育和體育局所屬事業(yè)單位第一批公開(kāi)招聘教師(200人)考試備考試題及答案解析
- 2026浙江寧波市江北區(qū)城市建設(shè)投資發(fā)展有限公司及下屬子公司招聘7人考試參考試題及答案解析
- 2026徽商銀行總行金融科技崗社會(huì)招聘考試備考題庫(kù)及答案解析
- 2026年春季云南曲靖市關(guān)工委麒麟希望學(xué)校學(xué)期教師招聘4人筆試模擬試題及答案解析
- 2026年碑林區(qū)柏樹(shù)林社區(qū)衛(wèi)生服務(wù)中心招聘康復(fù)治療師內(nèi)科主治醫(yī)師B超醫(yī)師康復(fù)醫(yī)師備考題庫(kù)及完整答案詳解一套
- 2026年普洱市永德昆西醫(yī)院、普洱西盟仁康醫(yī)院招聘?jìng)淇碱}庫(kù)帶答案詳解
- 2025 精神護(hù)理人員職業(yè)倦怠預(yù)防課件
- 簡(jiǎn)易混凝土地坪施工方案
- 介紹數(shù)字孿生技術(shù)
- 春播行動(dòng)中藥貼敷培訓(xùn)
- 水泵維修安全知識(shí)培訓(xùn)課件
- DB1301∕T492-2023 電動(dòng)車停放充電消防安全技術(shù)規(guī)范
- 部隊(duì)裝修合同(標(biāo)準(zhǔn)版)
- DBJT15-147-2018 建筑智能工程施工、檢測(cè)與驗(yàn)收規(guī)范
- 《智能制造技術(shù)基礎(chǔ)》課件
- 2025年征信考試題庫(kù)-征信系統(tǒng)架構(gòu)與安全試題
- 建設(shè)工程結(jié)構(gòu)評(píng)價(jià)標(biāo)準(zhǔn)市政工程
評(píng)論
0/150
提交評(píng)論