姜益中,沈禮權,2,王向前,張兆楊,2
(1.上海大學 通信與信息工程學院,上海 200072;2.新型顯示技術及應用集成教育部重點實驗室,上海 200072)
碼率控制是無線傳輸和互聯網視頻流的一項重要技術。它不僅可以調整視頻編碼器的輸出碼流以適用于信道帶寬和緩沖器等傳輸限制,而且對傳輸視頻的主客觀質量和視覺平滑度也有著直接的影響[1-2]。在 H.264/AVC中,量化步長QP既應用于碼率控制又應用于率失真優化,大大提高了視頻序列的壓縮效率,但也產生了眾所周知的蛋雞悖論[3],這導致了傳統的碼率控制算法無法直接應用在H.264中。Li Z.等人基于MAD(絕對誤差均值)線性預測模型,在提案JVT-G012中提出了一種經典的碼率控制算法[3]。該算法在IPPP和IBBP等大部分比特數分配于P幀的視頻序列中表現出了良好的控制力,并被JVT采納應用于JM(Joint Model)平臺。
隨著H.264/AVC的日益發展,特別是其擴展部分SVC(Scalable Video Coding)中時域分層架構體現出越來越高的編碼效率,基于分層B幀架構的視頻編碼技術引起了越來越廣泛的關注和應用[4]。然而基于JVT-G012的編碼器卻沒有準確預測B幀產生的比特數,更沒有提出一種對分層B幀有效的碼率控制算法。因此國內外眾多專家針對分層B幀的時域分級特性做了大量研究,并提出了一些現今較為流行的碼率控制算法。為解決時域分級層之間相互依賴的問題,Cho等人提出了一種新型的量化步長樹形選擇結構模型(Q-selection tree solution framework),并通過這種模型來預測當前幀的最佳量化步長值[5]。Xu等人利用可伸縮視頻編碼的分層特性,為各時域層分配權重比率,并以此為各時域層分配比特數[6]。這些方法都在一定程度上提高了整個視頻序列的平均PSNR。此外,Liu等人在JVT-G012的基礎上引入了一種基于分層B幀結構的固定層級權重因子碼率控制算法[7],也使得整個視頻序列的平均PSNR取得了較大提高。加入部分的算法主要通過兩步來實現對各個B幀的比特分配。第一步根據當前幀編碼前的緩沖區水平、緩沖區目標水平、幀率和可利用的帶寬來預測出當前幀的緩沖區目標比特。第二步根據當前幀編碼前的剩余比特數和當前幀所在層的權重因子計算給予當前幀的比特預算。這種固定時域層權重的算法依賴于固定的權重因子,體現各層級間的依賴關系,但卻忽視了視頻序列的多樣性和復雜性。當視頻序列中的各幀圖像運動平滑時,高質量的低時域層圖像能夠為高時域層圖像提供高效的運動估計和運動補償,因此處于高層的各幀圖像只需要極少量的比特數就能夠取得高效的編碼質量。然而當視頻序列中相鄰各幀間的圖像運動劇烈時候,高時域層的圖像無法通過低時域層圖像得到精確的運動估計和運動補償,所以也需要相對較多的比特數才能取得較好的編碼效果。固定的時域層權重因子顯然不可能實現這樣的比特分配調節。
本文提出的碼率控制算法在傳統碼率控制的GoP層碼率控制和幀層碼率控制之間插入了一種分級層碼率控制算法。該算法根據各時域層自適應調節的權重因子為同一個GoP中的各個時域層分配目標比特。同時依據各幀的復雜度特性,為同一時域層中的各幀分配不同的目標比特。
分層B幀編碼架構的引入使得H.264/SVC在幀層的編碼靈活度上得到了巨大提高。相比于傳統的IBBP編碼結構,分層B幀大大地提高了編碼效率,但同時也為傳統的碼率控制帶來了兩個難題。首先,編碼順序和顯示順序之間的關系徹底被打亂了,任何一幀都有可能作為參考幀存在。其次,在比特分配時必須考慮各時域層之間相互的依賴性。當前幀所在時域層的權重值將會極大地影響分配給當前幀的目標比特數。
典型的分層B幀編碼架構如圖1所示。

圖1 分層B幀編碼架構
圖1所示的分層B幀架構包含1個基本層(I0/P0)和3個分級層(B1,B2,B3),GoP長度為8。在一個GoP中除了一個關鍵幀之外,其余圖像都采用B幀編碼。由于B幀圖像的編碼質量在很大程度上取決于其參考幀的編碼質量,因此在這樣的經典架構下,不同時域層有著不同的重要性。時域層越低,對編碼性能的貢獻越大,隨著時域層的增高,時間分辨率不斷增加,但是編碼圖像對整個編碼性能的貢獻越小[8]。由此可見,只有低級時域層的視頻圖像取得了較高的編碼質量才能有效地提高整個視頻序列的平均編碼質量。
與以上提到的一系列針對分層B幀的碼率控制算法相比,本文提出的碼率控制算法能夠更為精確地控制輸出碼率。正如前文的分析,文獻[7]提出的固定時域權重值的分層B幀碼率控制算法雖然以大量的實驗經驗為基礎,且在大部分序列中均能取得較好的編碼質量,但卻不能適用于所有的視頻序列。根據各時域層不同的編碼情況,本文提出了一種自適應調節權重因子的碼率控制策略。
分級層碼率控制的主要目標是依據當前GoP中各時域層消耗的比特數,更新原本的時域層權重因子,以預測下一個GoP中對應的時域層分配的目標比特。每一層的目標比特數的計算公式為

式中:ωi和Nr,i分別代表了第i層的權重因子和剩余的未編碼幀數;RG,r表示分配給當前GoP的剩余比特數。
第k層權重因子的更新由前一個GoP信息預測得到,如下式所示

式中:Nk和Rf,i分別表示第k層的圖像幀總數和該層的第i幀編碼生成的紋理信息比特數。對于編碼視頻序列的第一個GoP,則根據預先設置的初始值為各時域層分配比特數,具體各時域層的權重初始值如表1所示。

表1 分級時域層初始權重值[9]
分級層碼率控制中每個時域層的初始QP計算公式與GoP層碼率控制極為相似,QPst將根據可用信道帶寬和分級層的長度等信息作出自適應調整

式中:Nlevel表示當前時域層中的圖像幀總數,SumQP表示比當前時域層低一級的時域層中已編碼各幀的量化步長值總數。
同一時域層中的各個B幀具有不同的復雜度。但文獻[6]中提出的固定權重值的碼率控制算法并沒有將這種復雜度差異考慮在內,而為它們分配相同的權重度。顯然忽略這種復雜度差異將導致編碼效率和編碼質量下降。在本文中提出的碼率控制算法將采用紋理信息編碼生成的比特數和編碼質量PSNR來預測該幀的復雜度信息。然而,類似于H.264/AVC碼率控制中遇到的蛋雞悖論,一幀圖像的實際生成比特數和編碼質量PSNR在該幀編碼完成之前是不可能準確得到的。因此,只能通過當前幀的參考幀復雜度信息來預測當前幀的編碼復雜度Cp

式中:Cf,1、Rf,1、PSNRf,1和 Cf,2、Rf,2、PSNRf,2分別代表前向和后向預測幀的復雜度、實際消耗比特數和編碼質量PSNR。根據預測得到的編碼復雜度計算出當前幀的目標比特

式中:Nr,l和Rr,l分別表示第l層中的剩余圖像幀數和目標比特數。
基于JVT-G012中提出的線性跟蹤理論,緩沖器水平的目標比特數Tb可以通過目標緩沖區水平Bt、幀率f、可用信道帶寬W和實際的緩沖區水平Bc計算得到

式中:γ是一個常量,在實驗中依據經驗設置為0.25[3]。最終,當前幀的目標比特由Tf和Tb加權計算得到

式中:常量 β 的值在實驗中設為 0.9[3]。
需要注意的是,基于經典的二項式R-Q模型,視頻序列中的任意一個B幀都能夠通過式(7)計算得到的目標比特,來得到對應的量化步長QP。但是如果當前幀是時域分級層的第一幀,通過分級層碼率控制,當前幀將會得到另外一個QP值。前一個QP體現了當前幀的編碼復雜度,而后一個QP依據的是它所在層的權重因子。當遇到上述情況時,本文提出的碼率控制算法在實驗中采用了取均值的方法。
在實驗參數設置方面,GoP的長度為8,在水平方向和豎直方向上均采用1/4亞像素搜索,搜索范圍為32。另外,采用TZSearch的快速搜索方式。為了客觀準確地評估本文提出的碼率控制算法,仿真環境采用了JSVM 9.12軟件參考平臺[10]。文中給出了QCIF格式的Akiyo、Foreman和CIF格式的News、Mobile共4個標準序列。這4個視頻序列具有廣泛的代表意義。其中Akiyo和New序列運動平滑,主要由靜止或相對穩定的區域組成。Foreman和Mobile序列運動劇烈,圖像復雜度高,這些特性與前一組視頻序列恰好相反。
表2列出了該算法與Liu等人所提出算法[6]的比較結果。表2給出了目標碼率、實際碼率、碼率控制誤差Δ、峰值信噪比PSNR與兩種算法間的PSNR差值等指標。其中碼率控制誤差Δ的定義為

式中:Ractual和Rtarget分別表示實際碼率和目標碼率。根據表2給出的數據,該算法在各種視頻序列中均表現出了高于文獻[6]中算法的編碼效率。尤其在PSNR的表現上,由于本文提出的碼率控制策略中加入了分級層碼率控制,使得編碼質量無論在低碼率還是高碼率的視頻序列中都得到了顯著提高。雖然在目標比特為256 kbit/s時的Foreman序列編碼中,該算法只提高了0.1 dB,但卻大大節省了編碼比特數的消耗。而在目標比特為1 200 kbit/s時的Mobile序列編碼中,該算法高出了0.41 dB。在碼率控制誤差方面,該算法與文獻[6]中的算法表現相近,基本都將誤差范圍控制在目標碼率的1%以內。

表2 實驗結果
圖2~5分別給出了這4個視頻序列的Bit-PSNR曲線圖。從圖中曲線可知,相比于Liu等人提出的算法,本文的碼率控制算法將整個視頻序列的平均PSNR提高了0.1 ~0.4 dB。



本文提出了一種分級層碼率控制算法,該算法基于前一個GoP中各時域層實際產生的比特數,自適應調節當前GoP中各時域層的權重因子,為各時域層分配更合理的目標比特。此外,碼率控制算法還引入了一種針對同一時域層中各幀復雜度差異的比特分配模型。實驗結果表明,該算法不僅能精確地控制輸出碼率,還能明顯提高整個視頻序列的編碼效率。

圖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.