陳 石,鄭建宏
(重慶郵電大學(xué)通信與信息工程學(xué)院,重慶 400065)
由于H.264/AVC視頻編碼標(biāo)準(zhǔn)比以前的視頻編碼標(biāo)準(zhǔn)擁有更高的編碼效率,所以獲得了廣泛的使用(如可視電話、視頻會議、視頻監(jiān)控)。但是,H.264/AVC的新功能同時大大地增加了運算復(fù)雜度。這也影響到其在可移動設(shè)備(如手機,PDA等)上的發(fā)展。因此,對解碼算法進(jìn)行優(yōu)化已經(jīng)成為了H.264/AVC在便攜設(shè)備上發(fā)展的一個重要方向。
去塊效應(yīng)濾波器是H.264/AVC新增的一個重要功能,它用于消除運動補償和離散余弦變換(discrete cosine transform,DCT)產(chǎn)生的方塊效應(yīng)。雖然去塊濾波器提高了輸出視頻的質(zhì)量,但是H.264的計算復(fù)雜度也比H.263和MPEG-4高出2~3倍之多。經(jīng)過其他學(xué)者的研究[1]發(fā)現(xiàn)H.264的解碼器消耗的時間分配如下:去塊濾波 (33%)、插值(25%)、熵解碼(13%)和圖像重建(13%)。很明顯,去塊濾波的計算量是最大的。因此,降低去塊效應(yīng)濾波的運算復(fù)雜度對H.264的廣泛使用具有一定的實用價值。
目前,國內(nèi)外大量的去塊濾波算法的研究重點都放在硬件實現(xiàn)方面,其中文獻(xiàn)[2]首次基于 H.264的濾波算法提出了其硬件實現(xiàn)結(jié)構(gòu),然后文獻(xiàn)[3-5]在其基礎(chǔ)上針對不同的硬件環(huán)境提出了各自的硬件構(gòu)架的優(yōu)化方案。這些研究在去塊濾波算法的硬件實現(xiàn)上取得了一定的進(jìn)步,但是這也局限在硬件實現(xiàn)方面,對去塊濾波算法并沒有進(jìn)行優(yōu)化改進(jìn)。
本文在文獻(xiàn)[6-7]的基礎(chǔ)之上,結(jié)合相鄰的4×4塊邊界強度(boundary strength,BS)的相似性,優(yōu)化了原有的快速算法。并使用H.264標(biāo)準(zhǔn)的參考軟件JM8.6對優(yōu)化后的算法進(jìn)行測試。結(jié)果顯示,優(yōu)化算法較文獻(xiàn)[7]的算法雖然在峰值信噪比(peak signal to noise ration,PSNR)值上有稍微的降低,但是能進(jìn)一步減少去塊濾波所消耗的時間。
在H.264/AVC的標(biāo)準(zhǔn)中,去塊濾波器將每個已解碼中16×16宏塊作為一個濾波單元進(jìn)行相應(yīng)的濾波過程,如圖1所示。圖1中,已解碼的16×16宏塊總共有8條邊界需要進(jìn)行濾波,分別為4條垂直邊界(a/b/c/d)和4條水平邊界(e/f/g/h)。每條垂直或者水平邊界需要進(jìn)行16次像素線(0~15)的數(shù)據(jù)處理得到各自的BS。每條像素線包括了邊界兩側(cè)的4×4塊(Q 塊和 P 塊)的 4 個像素點(Q0,Q1,Q2,Q3和P0,P1,P2,P3)。決定每條像素線的BS規(guī)則如表1所示[8]。
圖1 16×16宏塊計算邊界強度的順序Fig.1 Order of computing boundary strength inmacroblock
表1 像素線的BS判決規(guī)則Tab.1 Rule of judging boundary strength of the line of pixels
根據(jù)上面的描述,基于Baseline Profile的H.264 BS求解的標(biāo)準(zhǔn)過程如下:首先對4條垂直邊界按照abcd的順序進(jìn)行處理,每條垂直邊界按照0到15的順序(從上到下),根據(jù)表1中BS的判斷條件進(jìn)行16次BS的計算。然后,對4條水平的邊界按照efgh的順序進(jìn)行處理。類似地,每條水平邊界從左到右進(jìn)行BS的計算。最終,經(jīng)過計算后得到128(16×8)的BS值。在這里,僅僅以亮度宏塊作為例子介紹了求解去塊濾波的BS過程。而色度宏塊的BS和亮度宏塊的BS相似,具體過程可以參考文獻(xiàn)[8]。
從文獻(xiàn)[9]中可知,在去塊濾波的運算中,有大約90%的計算量都集中在了求解濾波強度上。因此,我們將優(yōu)化的重點放在BS算法上。
根據(jù)H.264/AVC的編解碼原理,編解碼中的運動估計、運動補償、DCT等過程的最小處理單元是4×4塊。一個4×4塊作為一個獨立的單元,其中的像素點擁有相同的幀內(nèi)或幀間編碼模式和運動向量以及量化后的變換系數(shù)。憑借這一特點可以推斷,在圖1中的垂直邊界或者水平邊界上的處于同一個4×4塊中的4條像素線有相同的BS。因此,BS算法優(yōu)化的第一步就是在計算每條BS時,只需要對像素線0/4/8/12進(jìn)行處理。由于像素線1/2/3和像素線0處于同一個4×4塊中,所以像素線1/2/3的BS值等于像素線0的值。同理,像素線5/6/7的BS值等于像素線4的值,像素線9/10/11的BS值等于像素線8的值,像素線13/14/15的BS值等于像素線12的值。通過這樣的處理可以足足減少3/4的運算量。
從表1去塊濾波BS的判決規(guī)程可知,P塊或者Q塊的預(yù)測模式是否為幀內(nèi)預(yù)測模式和判決的邊界是否為宏塊的邊界這2個條件決定了BS值為4或者3,而跟具體的某條像素線無關(guān)。所以,根據(jù)邊界兩邊宏塊的預(yù)測模式以及判決邊界的位置情況就能夠清楚BS取值,即BS=4或者BS=3。這樣,就可以省略掉重復(fù)地對幀內(nèi)預(yù)測模式中的16個邊界強度相同的像素線進(jìn)行計算的過程。
H.264/AVC的幀間預(yù)測與以往的視頻標(biāo)準(zhǔn)有所不同,它的宏塊分割方式更多。16×16宏塊總共有5種分割方式(1個16×16子宏塊;2個16×8子宏塊;2個8×16子宏塊;4個8×8子宏塊;Skip宏塊),而8×8子宏塊又可以進(jìn)一步分割成為1個8× 8;2個8× 4;2個4× 8;4個4×4。從文獻(xiàn)[10]可知,較大的宏塊分割模式(skip,16 ×16,16 ×8,8 ×16)占所有分割模式的60%,而且,skip模式所占的比例隨著量化參數(shù)(quantization parameter,QP)值的增大還將繼續(xù)增加。當(dāng)QP值為40時,僅僅skip模式所占的比例就接近60%了。這種特點給我們進(jìn)一步優(yōu)化BS算法提供了依據(jù)。
根據(jù)H.264/AVC標(biāo)準(zhǔn),在幀間預(yù)測模式為16×16模式、16×16×8模式、8×16模式中的4×4塊擁有相同的參考幀和運動向量。其幀內(nèi)預(yù)測模式簡化地界強度計算的情況如圖2所示。圖2中以16×8模式為例說明如何對原算法進(jìn)行優(yōu)化。對于垂直邊界而言,邊界b兩邊的P塊和Q塊都處于同一個16×8模式中,所以P塊和Q塊有相同的參考幀和運動向量,根據(jù)表1的BS判決規(guī)則可知BS=0。同理,邊界c和d的BS也等于 0;對于水平邊界而言,邊界f和h兩邊的P塊和Q塊也處于同一個16×8模式中,所以提前判定邊界f和h的邊界強度為 0;而對于邊界g,由于兩邊的P塊和Q塊處于不同的16×8模式中,則只能按照原有規(guī)則進(jìn)行判決。同樣的道理,在16×16的模式中,把垂直邊界b,c,d和水平邊界f,g,h的邊界強度提前判決為 0;在8×16模式中,把垂直邊界b,d和水平邊界f,g,h的邊界強度提前判決為0。最后對進(jìn)行了提前判決的邊界還要判斷其量化后的變換系數(shù)值。如果邊界處于4×4塊有非零系數(shù),則BS修改為 2;否則保持不變。圖2中的虛線表示提前判決的邊界。
圖2 幀內(nèi)預(yù)測模式簡化邊界強度計算的情況Fig.2 Situation of simplifying the computation of BS in inter-prediction
在H.264/AVC的幀間預(yù)測中有一類比較特殊的模式—skip模式。在skip模式中,宏塊必須滿足下面4個條件。
·幀間預(yù)測模式為16×16模式;
·參考幀只能為前一幀圖像;
·運動向量為 0;
·量化后的變換系數(shù)全為 0;
很明顯,在滿足skip模式條件的宏塊的邊界上不會產(chǎn)生方塊效應(yīng)的。特別是當(dāng)大量的預(yù)測模式是skip模式的時候,通過不對skip模式的宏塊的邊界進(jìn)行判斷,能夠節(jié)省大量的計算,降低去塊濾波消耗的時間。
綜上所述,幀間預(yù)測優(yōu)化的過程如下。
在H.264/AVC中,相鄰近的4×4塊往往具有很高的相似性。由于這樣的特點,使得相鄰的4×4塊的邊界具有相同邊界強度。為了得出邊界強度的相關(guān)性,針對不同復(fù)雜度的標(biāo)準(zhǔn)視頻測試序列(foreman,container,news,silent)不同的 QP 值(23,28,33,38)的情況下,對同一條邊界的邊界強度相等的情況進(jìn)行統(tǒng)計。表2顯示了不同序列中不同QP值的情況下滿足同一條邊界的BS相等的概率。
表2 同一邊界中BS相等的概率Tab.2 Probability of the same BS in the same boundary
由表2可知,在大部分的情況下,整條邊界的邊界強度相等的概率很高。這樣,在求解同一邊界的16個邊界強度值的時候,可以只對第一個像素線進(jìn)行處理得到BS[0]。這樣處理后,可以減少計算邊界強度的次數(shù),進(jìn)一步減少運算量。
綜上所述,本文結(jié)合H.264/AVC編解碼的原理中的特點,并且根據(jù)幀內(nèi)預(yù)測模式和幀間預(yù)測模式中各自的特點優(yōu)化了求解邊界強度的流程。最后,依據(jù)相鄰邊界強度高度的相似性進(jìn)一步減少了求解BS的計算量。圖3為優(yōu)化后BS計算的算法流程。
圖3 優(yōu)化后的快速算法流程Fig.3 Flow of improved fast algorithm
為了驗證該算法的性能,使用H.264標(biāo)準(zhǔn)的參考軟件JM8.6,以不同的標(biāo)準(zhǔn)視頻測試序列作為測試向量,對快速去塊濾波算法進(jìn)行性能測試,并且將文獻(xiàn)[7]中的算法以及本文提出的算法進(jìn)行比較。在試驗中,使用到的測試序列主要有foreman,container,news,silent等 4 種(共 300 幀),測試序列是基于Baseline Profile的QCIF格式(176×144)。幀率為30 frame/s,視頻序列的類型為IPPP,量化參數(shù)QP 分別為 23,28,33,38。
在計算時間消耗方面,使用Intel VTune對參考軟件JM8.6進(jìn)行測試。圖4列舉出了本次測試的結(jié)果。其中,Time(*)為解碼器的去塊濾波消耗的時間,ΔTime為時間減少率。顯然,本文算法在減少計算量上的效果優(yōu)于參考算法中的效果。
圖4 不同算法中減少去塊濾波耗時的效果Fig.4 Effect of reducing time of deblcoking filter in different algorithm
本次測試中,使用峰值信噪比PSNR作為客觀視頻質(zhì)量的評審依據(jù)。表3列舉出了本次測試的結(jié)果。
表3 不同序列的ΔPSNRTab.3 ΔPSNR in different video sequence
PSNR(*)為某種算法得到的PSNR值,ΔPSNR為該算法與原始算法的平均PSNR差值。
通過表3可以發(fā)現(xiàn),參考算法(文獻(xiàn)[7]的算法)是一種無損失的算法,因為它僅僅利用了H.264標(biāo)準(zhǔn)中的一些特點,對去塊濾波算法進(jìn)行優(yōu)化。而本文提出的算法在其基礎(chǔ)上,引入了一些會帶來損失的改進(jìn),這也使得PSNR值有大約0.15 dB的下降。
雖然PSNR存在稍微的下降,但是人眼根本無法感覺到這樣細(xì)微的損耗,從而不會對圖像的主觀質(zhì)量造成任何影響。所以這樣的損耗是在允許范圍之類的。圖5a為JM8.6解碼后的原始圖像,而圖5b為經(jīng)本文優(yōu)化算法解碼后的圖像。單單從肉眼上很難發(fā)現(xiàn)兩幅圖像的差別。
針對在H.264/AVC解碼器中去塊濾波的復(fù)雜度較高的情況下,本文根據(jù)H.264標(biāo)準(zhǔn)自身的特點以及大量試驗得到規(guī)律,優(yōu)化了基于Baseline的去塊濾波算法中的求解BS的算法。經(jīng)過軟件試驗證明,在不影響主觀質(zhì)量的前提下,雖然PSNR有較小的減小(大約-0.15 dB),但是獲得了更大的時間減少量(平均時間減少量大約為56.4%)。通過這樣的結(jié)果,可以說明去塊濾波模塊的復(fù)雜度大大地減少,這有助于H.264/AVC在其他硬件平臺中的實現(xiàn)。
圖5 2種算法處理的比較Fig.5 Comparison of two algorithms
[1]HOROWITZ M,JOCH A,KOSSENTINI F,et al.H264/AVC Baseline Profile Decoder Complexity Analysis[J].IEEE Transactions on Circuit and System for Video Technology,2003,13(7):704-716.
[2]HUANG Yu-wen,CHEN To-wei,HSIEH Bing-Yu,et al.Architecture Design for Deblocking Filter in H.264/AVC[C]//Proc of ICME 2003.Baltimore,Maryland,USA:IEEE Press,2003:693-696.
[3]SHENG Bin,GAOWen,WU Di.An Implemented Architecture of Deblocking Filter for H.264/AVC[C]//Proc of 2004 International Conference on Image Processing(ICIP).Singapore:IEEE Press,2004:665-668.
[4]CHANG Shih Chien,PENG Wen Hsiao,WANG Shih Hao,et al.A Platform Based Bus-interleaved Architecture for Deblocking Filter in H.264/AVC[J].IEEE Trans Consum Electron,2005,51:249-255.
[5]SIMA M,ZHOU Yuan-h(huán)ua,ZHANGWei.An Efficient Architecture for Adaptive Deblocking Filter of H.264/AVC Video Coding[J].IEEE Trans Consum Electron,2004,50(1):292-296.
[6]高媛,胡瑞敏,陳皓.基于BS預(yù)判的H.264去塊濾波優(yōu)化算法[J]. 計算機工程與應(yīng)用,2007,34:38-40.
GAO Yuan,HU Rui-min,CHEN Hao.Optimization of deblocking filter for H.264/AVC based on pre-juudging BS[J].Computer Engineering and Applications,2007,34:38-40.
[7]YUAN Li,NING Han,CHEN Chen.A Novel Deblocking Filter Algorithm In H.264 for Real Time Implementation[C]//MUE.Third International Conference on Multimedia and Ubiquitous Engineering.Qingdao:Computer Society Press,2009:26-30.
[8]LIST P,JOCH A,LAINEMA J,etal.Adaptive Deblocking Filter[J].IEEE Transactions on Circuits and Systems for Video Technology,2003,13(7):614-619.
[9]LAM kin-h(huán)ung.Reduced Complexity Deblocking Filter for H.264 Video Coding[C]//ACSSC.The Thirty-Ninth Asilomar Conference on Signals,Systems and Computers.Pacific Grove:IEEE Press,2005:1372-1374.
[10]ZHANG Dong-ming,SHEN Yan-fei,LIN Shou-xun.Fast Inter Frame Encoding Based on Modes Pre-Decision in H.264[C]//ICME.IEEE International Conference on Multimedia and Expo.Amsterdam:IEEE press,2005:530-533.
(編輯:劉 勇)