姜益中,沈禮權,2,王向前,張兆楊,2
(1.上海大學 通信與信息工程學院,上海 200072;2.新型顯示技術及應用集成教育部重點實驗室,上海 200072)
碼率控制是無線傳輸和互聯(lián)網(wǎng)視頻流的一項重要技術。它不僅可以調(diào)整視頻編碼器的輸出碼流以適用于信道帶寬和緩沖器等傳輸限制,而且對傳輸視頻的主客觀質(zhì)量和視覺平滑度也有著直接的影響[1-2]。在 H.264/AVC中,量化步長QP既應用于碼率控制又應用于率失真優(yōu)化,大大提高了視頻序列的壓縮效率,但也產(chǎn)生了眾所周知的蛋雞悖論[3],這導致了傳統(tǒng)的碼率控制算法無法直接應用在H.264中。Li Z.等人基于MAD(絕對誤差均值)線性預測模型,在提案JVT-G012中提出了一種經(jīng)典的碼率控制算法[3]。該算法在IPPP和IBBP等大部分比特數(shù)分配于P幀的視頻序列中表現(xiàn)出了良好的控制力,并被JVT采納應用于JM(Joint Model)平臺。
隨著H.264/AVC的日益發(fā)展,特別是其擴展部分SVC(Scalable Video Coding)中時域分層架構體現(xiàn)出越來越高的編碼效率,基于分層B幀架構的視頻編碼技術引起了越來越廣泛的關注和應用[4]。然而基于JVT-G012的編碼器卻沒有準確預測B幀產(chǎn)生的比特數(shù),更沒有提出一種對分層B幀有效的碼率控制算法。因此國內(nèi)外眾多專家針對分層B幀的時域分級特性做了大量研究,并提出了一些現(xiàn)今較為流行的碼率控制算法。為解決時域分級層之間相互依賴的問題,Cho等人提出了一種新型的量化步長樹形選擇結構模型(Q-selection tree solution framework),并通過這種模型來預測當前幀的最佳量化步長值[5]。Xu等人利用可伸縮視頻編碼的分層特性,為各時域?qū)臃峙錂嘀乇嚷剩⒁源藶楦鲿r域?qū)臃峙浔忍財?shù)[6]。這些方法都在一定程度上提高了整個視頻序列的平均PSNR。此外,Liu等人在JVT-G012的基礎上引入了一種基于分層B幀結構的固定層級權重因子碼率控制算法[7],也使得整個視頻序列的平均PSNR取得了較大提高。加入部分的算法主要通過兩步來實現(xiàn)對各個B幀的比特分配。第一步根據(jù)當前幀編碼前的緩沖區(qū)水平、緩沖區(qū)目標水平、幀率和可利用的帶寬來預測出當前幀的緩沖區(qū)目標比特。第二步根據(jù)當前幀編碼前的剩余比特數(shù)和當前幀所在層的權重因子計算給予當前幀的比特預算。這種固定時域?qū)訖嘀氐乃惴ㄒ蕾囉诠潭ǖ臋嘀匾蜃?,體現(xiàn)各層級間的依賴關系,但卻忽視了視頻序列的多樣性和復雜性。當視頻序列中的各幀圖像運動平滑時,高質(zhì)量的低時域?qū)訄D像能夠為高時域?qū)訄D像提供高效的運動估計和運動補償,因此處于高層的各幀圖像只需要極少量的比特數(shù)就能夠取得高效的編碼質(zhì)量。然而當視頻序列中相鄰各幀間的圖像運動劇烈時候,高時域?qū)拥膱D像無法通過低時域?qū)訄D像得到精確的運動估計和運動補償,所以也需要相對較多的比特數(shù)才能取得較好的編碼效果。固定的時域?qū)訖嘀匾蜃语@然不可能實現(xiàn)這樣的比特分配調(diào)節(jié)。
本文提出的碼率控制算法在傳統(tǒng)碼率控制的GoP層碼率控制和幀層碼率控制之間插入了一種分級層碼率控制算法。該算法根據(jù)各時域?qū)幼赃m應調(diào)節(jié)的權重因子為同一個GoP中的各個時域?qū)臃峙淠繕吮忍亍M瑫r依據(jù)各幀的復雜度特性,為同一時域?qū)又械母鲙峙洳煌哪繕吮忍亍?/p>
分層B幀編碼架構的引入使得H.264/SVC在幀層的編碼靈活度上得到了巨大提高。相比于傳統(tǒng)的IBBP編碼結構,分層B幀大大地提高了編碼效率,但同時也為傳統(tǒng)的碼率控制帶來了兩個難題。首先,編碼順序和顯示順序之間的關系徹底被打亂了,任何一幀都有可能作為參考幀存在。其次,在比特分配時必須考慮各時域?qū)又g相互的依賴性。當前幀所在時域?qū)拥臋嘀刂祵O大地影響分配給當前幀的目標比特數(shù)。
典型的分層B幀編碼架構如圖1所示。
圖1 分層B幀編碼架構
圖1所示的分層B幀架構包含1個基本層(I0/P0)和3個分級層(B1,B2,B3),GoP長度為8。在一個GoP中除了一個關鍵幀之外,其余圖像都采用B幀編碼。由于B幀圖像的編碼質(zhì)量在很大程度上取決于其參考幀的編碼質(zhì)量,因此在這樣的經(jīng)典架構下,不同時域?qū)佑兄煌闹匾?。時域?qū)釉降停瑢幋a性能的貢獻越大,隨著時域?qū)拥脑龈?,時間分辨率不斷增加,但是編碼圖像對整個編碼性能的貢獻越小[8]。由此可見,只有低級時域?qū)拥囊曨l圖像取得了較高的編碼質(zhì)量才能有效地提高整個視頻序列的平均編碼質(zhì)量。
與以上提到的一系列針對分層B幀的碼率控制算法相比,本文提出的碼率控制算法能夠更為精確地控制輸出碼率。正如前文的分析,文獻[7]提出的固定時域權重值的分層B幀碼率控制算法雖然以大量的實驗經(jīng)驗為基礎,且在大部分序列中均能取得較好的編碼質(zhì)量,但卻不能適用于所有的視頻序列。根據(jù)各時域?qū)硬煌木幋a情況,本文提出了一種自適應調(diào)節(jié)權重因子的碼率控制策略。
分級層碼率控制的主要目標是依據(jù)當前GoP中各時域?qū)酉牡谋忍財?shù),更新原本的時域?qū)訖嘀匾蜃?,以預測下一個GoP中對應的時域?qū)臃峙涞哪繕吮忍?。每一層的目標比特?shù)的計算公式為
式中:ωi和Nr,i分別代表了第i層的權重因子和剩余的未編碼幀數(shù);RG,r表示分配給當前GoP的剩余比特數(shù)。
第k層權重因子的更新由前一個GoP信息預測得到,如下式所示
式中:Nk和Rf,i分別表示第k層的圖像幀總數(shù)和該層的第i幀編碼生成的紋理信息比特數(shù)。對于編碼視頻序列的第一個GoP,則根據(jù)預先設置的初始值為各時域?qū)臃峙浔忍財?shù),具體各時域?qū)拥臋嘀爻跏贾等绫?所示。
表1 分級時域?qū)映跏紮嘀刂担?]
分級層碼率控制中每個時域?qū)拥某跏糛P計算公式與GoP層碼率控制極為相似,QPst將根據(jù)可用信道帶寬和分級層的長度等信息作出自適應調(diào)整
式中:Nlevel表示當前時域?qū)又械膱D像幀總數(shù),SumQP表示比當前時域?qū)拥鸵患壍臅r域?qū)又幸丫幋a各幀的量化步長值總數(shù)。
同一時域?qū)又械母鱾€B幀具有不同的復雜度。但文獻[6]中提出的固定權重值的碼率控制算法并沒有將這種復雜度差異考慮在內(nèi),而為它們分配相同的權重度。顯然忽略這種復雜度差異將導致編碼效率和編碼質(zhì)量下降。在本文中提出的碼率控制算法將采用紋理信息編碼生成的比特數(shù)和編碼質(zhì)量PSNR來預測該幀的復雜度信息。然而,類似于H.264/AVC碼率控制中遇到的蛋雞悖論,一幀圖像的實際生成比特數(shù)和編碼質(zhì)量PSNR在該幀編碼完成之前是不可能準確得到的。因此,只能通過當前幀的參考幀復雜度信息來預測當前幀的編碼復雜度Cp
式中:Cf,1、Rf,1、PSNRf,1和 Cf,2、Rf,2、PSNRf,2分別代表前向和后向預測幀的復雜度、實際消耗比特數(shù)和編碼質(zhì)量PSNR。根據(jù)預測得到的編碼復雜度計算出當前幀的目標比特
式中:Nr,l和Rr,l分別表示第l層中的剩余圖像幀數(shù)和目標比特數(shù)。
基于JVT-G012中提出的線性跟蹤理論,緩沖器水平的目標比特數(shù)Tb可以通過目標緩沖區(qū)水平Bt、幀率f、可用信道帶寬W和實際的緩沖區(qū)水平Bc計算得到
式中:γ是一個常量,在實驗中依據(jù)經(jīng)驗設置為0.25[3]。最終,當前幀的目標比特由Tf和Tb加權計算得到
式中:常量 β 的值在實驗中設為 0.9[3]。
需要注意的是,基于經(jīng)典的二項式R-Q模型,視頻序列中的任意一個B幀都能夠通過式(7)計算得到的目標比特,來得到對應的量化步長QP。但是如果當前幀是時域分級層的第一幀,通過分級層碼率控制,當前幀將會得到另外一個QP值。前一個QP體現(xiàn)了當前幀的編碼復雜度,而后一個QP依據(jù)的是它所在層的權重因子。當遇到上述情況時,本文提出的碼率控制算法在實驗中采用了取均值的方法。
在實驗參數(shù)設置方面,GoP的長度為8,在水平方向和豎直方向上均采用1/4亞像素搜索,搜索范圍為32。另外,采用TZSearch的快速搜索方式。為了客觀準確地評估本文提出的碼率控制算法,仿真環(huán)境采用了JSVM 9.12軟件參考平臺[10]。文中給出了QCIF格式的Akiyo、Foreman和CIF格式的News、Mobile共4個標準序列。這4個視頻序列具有廣泛的代表意義。其中Akiyo和New序列運動平滑,主要由靜止或相對穩(wěn)定的區(qū)域組成。Foreman和Mobile序列運動劇烈,圖像復雜度高,這些特性與前一組視頻序列恰好相反。
表2列出了該算法與Liu等人所提出算法[6]的比較結果。表2給出了目標碼率、實際碼率、碼率控制誤差Δ、峰值信噪比PSNR與兩種算法間的PSNR差值等指標。其中碼率控制誤差Δ的定義為
式中:Ractual和Rtarget分別表示實際碼率和目標碼率。根據(jù)表2給出的數(shù)據(jù),該算法在各種視頻序列中均表現(xiàn)出了高于文獻[6]中算法的編碼效率。尤其在PSNR的表現(xiàn)上,由于本文提出的碼率控制策略中加入了分級層碼率控制,使得編碼質(zhì)量無論在低碼率還是高碼率的視頻序列中都得到了顯著提高。雖然在目標比特為256 kbit/s時的Foreman序列編碼中,該算法只提高了0.1 dB,但卻大大節(jié)省了編碼比特數(shù)的消耗。而在目標比特為1 200 kbit/s時的Mobile序列編碼中,該算法高出了0.41 dB。在碼率控制誤差方面,該算法與文獻[6]中的算法表現(xiàn)相近,基本都將誤差范圍控制在目標碼率的1%以內(nèi)。
表2 實驗結果
圖2~5分別給出了這4個視頻序列的Bit-PSNR曲線圖。從圖中曲線可知,相比于Liu等人提出的算法,本文的碼率控制算法將整個視頻序列的平均PSNR提高了0.1 ~0.4 dB。
本文提出了一種分級層碼率控制算法,該算法基于前一個GoP中各時域?qū)訉嶋H產(chǎn)生的比特數(shù),自適應調(diào)節(jié)當前GoP中各時域?qū)拥臋嘀匾蜃?,為各時域?qū)臃峙涓侠淼哪繕吮忍?。此外,碼率控制算法還引入了一種針對同一時域?qū)又懈鲙瑥碗s度差異的比特分配模型。實驗結果表明,該算法不僅能精確地控制輸出碼率,還能明顯提高整個視頻序列的編碼效率。
圖5 Mobile的Bit-PSNR曲線圖
[1] DING Wei,LIU B.Rate control of MPEG video coding and recording by rate-quantization modeling[J].IEEE Trans.Circuits Syst.Video Technol,1996,6(1):12-20.
[2] RIBAS-CORBERA J,LEI S.Rate control in DCT video coding for lowdelay communications[J].IEEE Trans.Circuits Syst.Video Technol,1999,9(1):172-185.
[3] LI Z,PAN F,PANG K.Adaptive basic unit layer rate control for JVT:Doc.JVT-G012[R].[S.l.]:JVT,2003.
[4]徐龍,高文,季向陽,等.一種面向SVC的碼率控制算法[J].計算機學報,2008,31(5):1175-1184.
[5] CHO Y,KUO C,HSIEH M,et al.GoP-based rate control for H.264/SVC with hierarchical B-pictures[C]//Proc.IIHMSP 2007.[S.l.]:IEEE Press,2007:387-390.
[6] XU Long,GAO Wen,JI Xiangyang,et al.Rate control for hierarchical B-picture coding with scaling-factors[C]//Proc.ISCAS 2007.[S.l.]:IEEE Press,2007:49-52.
[7] LIU Y,LI Z,SOH Y.Rate control of H.264/AVC scalable extension[J].IEEE Trans.Circuits Syst.Video Technol,2008,18(1):116-121.
[8]李振剛,安平,嚴濤,等.面向多視點視頻編碼的宏塊級碼率控制[J].應用科學學報,2009,27(5):502-507.
[9] SEO C,KANG J,HAN J,et al.Efficient bit allocation and rate control algorithm for hierarchical video coding[J].IEEE Trans.Circuits Syst.Video Technol,2010,20(9):1210-1223.
[10] VETRO A,PANDIT P,KIMATA H,et al.Joint Multiview Video Model(JMVM):Doc.JVT-X207[R].Geneva:JVT,2007.