王 佳,殷海兵,周冰倩
(中國(guó)計(jì)量學(xué)院信息工程學(xué)院,浙江 杭州 310018)
碼率控制算法是在碼率受限的條件下,通過動(dòng)態(tài)調(diào)整編碼參數(shù)來優(yōu)化視頻質(zhì)量。假如沒有進(jìn)行碼率控制,當(dāng)通過有限的信道帶寬傳送壓縮的比特流時(shí),緩沖區(qū)就會(huì)上溢或者下溢。在視頻編碼標(biāo)準(zhǔn)中,有幾種碼率控制算法已經(jīng)被推薦作為參考算法,比如MPEG-2的TM5、H.263的TMN8、MPGE-4的VM8、H.264AVC 的G012 以及一些改進(jìn)算法[1-2]。
目前,大多數(shù)碼率控制算法是基于軟件實(shí)現(xiàn)的,且太過復(fù)雜而不能很好地適合硬件實(shí)現(xiàn)。對(duì)于一些MPEG-2或H.263的碼率控制算法已經(jīng)有人提出了硬件實(shí)現(xiàn)方案[3]。針對(duì)H.264/AVC提出的碼率控制算法參考提案G012更為復(fù)雜,其直接硬件實(shí)現(xiàn)需要大量的門電路。而對(duì)于那些已經(jīng)提出的,并且需要388.53—1 140 k門電路的H.264/AVC視頻編碼器來說,G012的硬件消耗非常大。Wu等人[4]提出了一種適合硬件實(shí)現(xiàn)的碼率控制算法。本文在H.264/AVC編碼器Zigzag宏塊編碼順序和宏塊級(jí)流水結(jié)構(gòu)的基礎(chǔ)上,利用時(shí)域和頻域的相關(guān)性,提出了新的低復(fù)雜度MAD預(yù)測(cè)算法,解決了硬件實(shí)現(xiàn)時(shí)的數(shù)據(jù)依賴問題。
通常硬件編碼器的實(shí)現(xiàn)面臨兩個(gè)問題,數(shù)據(jù)吞吐和存儲(chǔ)帶寬。為了提高數(shù)據(jù)處理效率,硬件編碼器通常采用Zigzag宏塊順序和宏塊級(jí)流水結(jié)構(gòu),二者結(jié)合導(dǎo)致碼率控制算法實(shí)現(xiàn)時(shí)產(chǎn)生復(fù)雜的數(shù)據(jù)依賴關(guān)系。并且G012算法MAD預(yù)測(cè)模塊的高復(fù)雜度會(huì)消耗大量的硬件資源。
硬件編碼器為了實(shí)現(xiàn)數(shù)據(jù)的水平和垂直復(fù)用,通常采用Zigzag[5]宏塊編碼順序代替軟件實(shí)現(xiàn)時(shí)的光柵掃描順序。編碼順序的改變導(dǎo)致數(shù)據(jù)的水平和垂直的依賴關(guān)系有所改變,如圖1所示,每3個(gè)宏塊行采用Zigzag宏塊編碼順序。
H.264/AVC硬件編碼器宏塊級(jí)通常采用3級(jí)或者4級(jí)的流水結(jié)構(gòu)。如圖2所示,在宏塊流水開始前,通過碼率控制(RC)模塊獲取Qp,依次經(jīng)過整像素運(yùn)動(dòng)估計(jì)(IME),亞像素運(yùn)動(dòng)估計(jì)/幀內(nèi)預(yù)測(cè)(FME/INTRAL),熵編碼/去塊效應(yīng)濾波(EC/DB)3級(jí)流水[6]。故編碼MBn宏塊時(shí),MAD值只能依賴于MBn-2及之前已編碼的宏塊預(yù)測(cè)得到。
在H.264/AVC的碼率控制算法G012中,采用線性預(yù)測(cè)的方法計(jì)算MAD,公式為
式中:參數(shù)a1和a2采用線性回歸的方法進(jìn)行更新。
參數(shù)a1和a2的計(jì)算如公式[4]為
其計(jì)算復(fù)雜度很高,如果直接采用硬件實(shí)現(xiàn),會(huì)消耗大量的硬件資源。
根據(jù)上文提及的硬件編碼器實(shí)現(xiàn)的特點(diǎn)和挑戰(zhàn),該改進(jìn)碼率控制算法結(jié)構(gòu)如圖3所示。幀級(jí)采用G012算法,然后通過宏塊自適應(yīng)調(diào)整模塊和Qp決策模塊對(duì)得到每個(gè)宏塊的量化參數(shù)。Zigzag編碼條件下幀級(jí)和宏塊級(jí)碼率控制如圖3所示。從圖中可知,在Zigzag條件下,G012算法幀級(jí)碼率控制率失真性能好于宏塊級(jí)碼率控制,同時(shí)也說明了G012幀級(jí)碼率控制獲取的Qp是相對(duì)準(zhǔn)確的。并且考慮到硬件實(shí)現(xiàn)的數(shù)據(jù)吞吐和存儲(chǔ)帶寬問題,基于CPU的幀級(jí)碼率控制的實(shí)現(xiàn)每幀只需通過總線與編碼器交互1次數(shù)據(jù),對(duì)如高清編碼器可以大大降低數(shù)據(jù)吞吐。圖4中陰影部分模塊是本文重點(diǎn)改進(jìn)的部分,幀級(jí)和宏塊級(jí)MAD預(yù)測(cè),宏塊量化參數(shù)自適應(yīng)調(diào)整模塊,如后文中的式(4),(5),(6),(7)所示。
由于幀內(nèi)宏塊的復(fù)雜度不同,根據(jù)觀察部分宏塊MAD值相差很大,故通過宏塊自適應(yīng)模塊更加精細(xì)地調(diào)整量化參數(shù),而不產(chǎn)生視頻質(zhì)量的波動(dòng),同時(shí)降低緩沖區(qū)的波動(dòng)。公式(4)中QPM[i]為當(dāng)前幀的幀級(jí)量化參數(shù),QPU[i]和 QPL[i]分別表示自適應(yīng)調(diào)整值,二者相差不超過2。公式(5)計(jì)算幀級(jí)MAD預(yù)測(cè)值(MADP,F(xiàn))和宏塊級(jí)MAD預(yù)測(cè)值(MADP,M)的MADratio值。最后通過公式(6)計(jì)算宏塊量化參數(shù),其中a,b通過Matlab計(jì)算分別得到1.217 3和0.816 0。為了適合硬件的移位計(jì)算,近似規(guī)整為a等于155/128,b等于105/128。
2.2.1 幀級(jí)MAD預(yù)測(cè)
為了降低G012碼率控制算法中MAD線性預(yù)測(cè)部分參數(shù)更新的復(fù)雜度,本文幀級(jí)MAD直接采用前3幀MAD(n-1),MAD(n-2),MAD(n-3)來預(yù)測(cè)當(dāng)前幀MAD(n)的值。根據(jù) Matlab計(jì)算得到 a,b,c分別為1.054 4,0.053 0,0.109 5,規(guī)整后分別為 135/128,7/128,15/128。Foreman,Carphone,Miss,News測(cè)試序列 MAD 預(yù)測(cè)值和實(shí)際值如圖5所示,預(yù)測(cè)誤差如表1所示。
圖5 Foreman,Carphone,Miss,News 的 MAD 值預(yù)測(cè)
表1 MAD預(yù)測(cè)誤差
2.2.2 宏塊級(jí)MAD預(yù)測(cè)
由于Zigzag宏塊編碼順序和宏塊流水結(jié)構(gòu)產(chǎn)生數(shù)據(jù)依賴關(guān)系,并考慮到周圍宏塊和當(dāng)前編碼宏塊MBC的相關(guān)性,選擇當(dāng)前編碼宏塊的上方宏塊MBU和左邊宏塊MBL,如圖6所示。其中陰影表示前1編碼幀相對(duì)位置的宏塊。采用這4個(gè)宏塊的MAD值,并考慮到邊界情況和3級(jí)流水特性,來預(yù)測(cè)MBC的MAD值。預(yù)測(cè)流程圖如圖7所示,其中加權(quán)系數(shù)通過Matlab計(jì)算得到,a,b,c分別為3/4,7/8,4/5。
本算法基于JM10.2參考模型,搭建每3個(gè)宏塊行采用Zigzag宏塊編碼順序和宏塊流3級(jí)水模型,在該模型上仿真本文提出的碼率控制算法。分別在60 kbit/s,80 kbit/s,100 kbit/s,120 kbit/s 目標(biāo)碼率下測(cè)試了低速News序列,高速Foreman和Carphone序列,以及復(fù)雜序列Mobile。實(shí)驗(yàn)結(jié)果如圖8和表2所示。經(jīng)計(jì)算,本文提出的算法平均PSNR提高了0.12 dB,幀級(jí)MAD預(yù)測(cè)精度也有所提高,解決了硬件實(shí)現(xiàn)時(shí)的數(shù)據(jù)依賴問題,且適合硬件實(shí)現(xiàn)。
圖8 Foreman,Carphone,News,Mobile 序列率失真曲線
表2 本文算法與G012算法實(shí)驗(yàn)結(jié)果對(duì)比
[1]呂振斌,王惠南.一種H.264基本單元層的碼率控制算法[J].電視技術(shù),2009,33(S1):45-47.
[2]程飛,鄒雪妹,滕國(guó)偉,等.一種宏塊級(jí)碼率控制方案[J].電視技術(shù),2010,34(6):23-25.
[3] CHEN T,CHIEN S,HUANG Y,et al.Analysis and architecture design of an HDTV 720p 30 frames/s H.264/AVC encoder[J].IEEE Trans.CSVT,2006,16(6):673-688.
[4] WU P T,CHANG T C,SU C L,et al.A H.264 basic-unit level rate control algorithm facilitating hardware realization[C]//Proc.ICASSP 2008.[S.l.]:IEEE Press,2008:2185-2188.
[5] CHEN C,HUANG C,CHEN Y,et al.Level C+data reuse scheme for motion estimation with corresponding coding orders[J].IEEE Trans.CSVT,2006,16(4):553-558.
[6] KUO C,CHANG L,F(xiàn)AN K,et al.Hardware/software codesign of a lowcost rate control scheme for H.264/AVC[J].IEEE Trans.CSVT,2010,20(2):250-261.