姜益中,沈禮權(quán),2,王向前,張兆楊,2
(1.上海大學(xué) 通信與信息工程學(xué)院,上海 200072;2.新型顯示技術(shù)及應(yīng)用集成教育部重點(diǎn)實(shí)驗(yàn)室,上海 200072)
碼率控制是無(wú)線傳輸和互聯(lián)網(wǎng)視頻流的一項(xiàng)重要技術(shù)。它不僅可以調(diào)整視頻編碼器的輸出碼流以適用于信道帶寬和緩沖器等傳輸限制,而且對(duì)傳輸視頻的主客觀質(zhì)量和視覺平滑度也有著直接的影響[1-2]。在 H.264/AVC中,量化步長(zhǎng)QP既應(yīng)用于碼率控制又應(yīng)用于率失真優(yōu)化,大大提高了視頻序列的壓縮效率,但也產(chǎn)生了眾所周知的蛋雞悖論[3],這導(dǎo)致了傳統(tǒng)的碼率控制算法無(wú)法直接應(yīng)用在H.264中。Li Z.等人基于MAD(絕對(duì)誤差均值)線性預(yù)測(cè)模型,在提案JVT-G012中提出了一種經(jīng)典的碼率控制算法[3]。該算法在IPPP和IBBP等大部分比特?cái)?shù)分配于P幀的視頻序列中表現(xiàn)出了良好的控制力,并被JVT采納應(yīng)用于JM(Joint Model)平臺(tái)。
隨著H.264/AVC的日益發(fā)展,特別是其擴(kuò)展部分SVC(Scalable Video Coding)中時(shí)域分層架構(gòu)體現(xiàn)出越來(lái)越高的編碼效率,基于分層B幀架構(gòu)的視頻編碼技術(shù)引起了越來(lái)越廣泛的關(guān)注和應(yīng)用[4]。然而基于JVT-G012的編碼器卻沒有準(zhǔn)確預(yù)測(cè)B幀產(chǎn)生的比特?cái)?shù),更沒有提出一種對(duì)分層B幀有效的碼率控制算法。因此國(guó)內(nèi)外眾多專家針對(duì)分層B幀的時(shí)域分級(jí)特性做了大量研究,并提出了一些現(xiàn)今較為流行的碼率控制算法。為解決時(shí)域分級(jí)層之間相互依賴的問題,Cho等人提出了一種新型的量化步長(zhǎng)樹形選擇結(jié)構(gòu)模型(Q-selection tree solution framework),并通過(guò)這種模型來(lái)預(yù)測(cè)當(dāng)前幀的最佳量化步長(zhǎng)值[5]。Xu等人利用可伸縮視頻編碼的分層特性,為各時(shí)域?qū)臃峙錂?quán)重比率,并以此為各時(shí)域?qū)臃峙浔忍財(cái)?shù)[6]。這些方法都在一定程度上提高了整個(gè)視頻序列的平均PSNR。此外,Liu等人在JVT-G012的基礎(chǔ)上引入了一種基于分層B幀結(jié)構(gòu)的固定層級(jí)權(quán)重因子碼率控制算法[7],也使得整個(gè)視頻序列的平均PSNR取得了較大提高。加入部分的算法主要通過(guò)兩步來(lái)實(shí)現(xiàn)對(duì)各個(gè)B幀的比特分配。第一步根據(jù)當(dāng)前幀編碼前的緩沖區(qū)水平、緩沖區(qū)目標(biāo)水平、幀率和可利用的帶寬來(lái)預(yù)測(cè)出當(dāng)前幀的緩沖區(qū)目標(biāo)比特。第二步根據(jù)當(dāng)前幀編碼前的剩余比特?cái)?shù)和當(dāng)前幀所在層的權(quán)重因子計(jì)算給予當(dāng)前幀的比特預(yù)算。這種固定時(shí)域?qū)訖?quán)重的算法依賴于固定的權(quán)重因子,體現(xiàn)各層級(jí)間的依賴關(guān)系,但卻忽視了視頻序列的多樣性和復(fù)雜性。當(dāng)視頻序列中的各幀圖像運(yùn)動(dòng)平滑時(shí),高質(zhì)量的低時(shí)域?qū)訄D像能夠?yàn)楦邥r(shí)域?qū)訄D像提供高效的運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償,因此處于高層的各幀圖像只需要極少量的比特?cái)?shù)就能夠取得高效的編碼質(zhì)量。然而當(dāng)視頻序列中相鄰各幀間的圖像運(yùn)動(dòng)劇烈時(shí)候,高時(shí)域?qū)拥膱D像無(wú)法通過(guò)低時(shí)域?qū)訄D像得到精確的運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償,所以也需要相對(duì)較多的比特?cái)?shù)才能取得較好的編碼效果。固定的時(shí)域?qū)訖?quán)重因子顯然不可能實(shí)現(xiàn)這樣的比特分配調(diào)節(jié)。
本文提出的碼率控制算法在傳統(tǒng)碼率控制的GoP層碼率控制和幀層碼率控制之間插入了一種分級(jí)層碼率控制算法。該算法根據(jù)各時(shí)域?qū)幼赃m應(yīng)調(diào)節(jié)的權(quán)重因子為同一個(gè)GoP中的各個(gè)時(shí)域?qū)臃峙淠繕?biāo)比特。同時(shí)依據(jù)各幀的復(fù)雜度特性,為同一時(shí)域?qū)又械母鲙峙洳煌哪繕?biāo)比特。
分層B幀編碼架構(gòu)的引入使得H.264/SVC在幀層的編碼靈活度上得到了巨大提高。相比于傳統(tǒng)的IBBP編碼結(jié)構(gòu),分層B幀大大地提高了編碼效率,但同時(shí)也為傳統(tǒng)的碼率控制帶來(lái)了兩個(gè)難題。首先,編碼順序和顯示順序之間的關(guān)系徹底被打亂了,任何一幀都有可能作為參考幀存在。其次,在比特分配時(shí)必須考慮各時(shí)域?qū)又g相互的依賴性。當(dāng)前幀所在時(shí)域?qū)拥臋?quán)重值將會(huì)極大地影響分配給當(dāng)前幀的目標(biāo)比特?cái)?shù)。
典型的分層B幀編碼架構(gòu)如圖1所示。
圖1 分層B幀編碼架構(gòu)
圖1所示的分層B幀架構(gòu)包含1個(gè)基本層(I0/P0)和3個(gè)分級(jí)層(B1,B2,B3),GoP長(zhǎng)度為8。在一個(gè)GoP中除了一個(gè)關(guān)鍵幀之外,其余圖像都采用B幀編碼。由于B幀圖像的編碼質(zhì)量在很大程度上取決于其參考幀的編碼質(zhì)量,因此在這樣的經(jīng)典架構(gòu)下,不同時(shí)域?qū)佑兄煌闹匾浴r(shí)域?qū)釉降?,?duì)編碼性能的貢獻(xiàn)越大,隨著時(shí)域?qū)拥脑龈?,時(shí)間分辨率不斷增加,但是編碼圖像對(duì)整個(gè)編碼性能的貢獻(xiàn)越?。?]。由此可見,只有低級(jí)時(shí)域?qū)拥囊曨l圖像取得了較高的編碼質(zhì)量才能有效地提高整個(gè)視頻序列的平均編碼質(zhì)量。
與以上提到的一系列針對(duì)分層B幀的碼率控制算法相比,本文提出的碼率控制算法能夠更為精確地控制輸出碼率。正如前文的分析,文獻(xiàn)[7]提出的固定時(shí)域權(quán)重值的分層B幀碼率控制算法雖然以大量的實(shí)驗(yàn)經(jīng)驗(yàn)為基礎(chǔ),且在大部分序列中均能取得較好的編碼質(zhì)量,但卻不能適用于所有的視頻序列。根據(jù)各時(shí)域?qū)硬煌木幋a情況,本文提出了一種自適應(yīng)調(diào)節(jié)權(quán)重因子的碼率控制策略。
分級(jí)層碼率控制的主要目標(biāo)是依據(jù)當(dāng)前GoP中各時(shí)域?qū)酉牡谋忍財(cái)?shù),更新原本的時(shí)域?qū)訖?quán)重因子,以預(yù)測(cè)下一個(gè)GoP中對(duì)應(yīng)的時(shí)域?qū)臃峙涞哪繕?biāo)比特。每一層的目標(biāo)比特?cái)?shù)的計(jì)算公式為
式中:ωi和Nr,i分別代表了第i層的權(quán)重因子和剩余的未編碼幀數(shù);RG,r表示分配給當(dāng)前GoP的剩余比特?cái)?shù)。
第k層權(quán)重因子的更新由前一個(gè)GoP信息預(yù)測(cè)得到,如下式所示
式中:Nk和Rf,i分別表示第k層的圖像幀總數(shù)和該層的第i幀編碼生成的紋理信息比特?cái)?shù)。對(duì)于編碼視頻序列的第一個(gè)GoP,則根據(jù)預(yù)先設(shè)置的初始值為各時(shí)域?qū)臃峙浔忍財(cái)?shù),具體各時(shí)域?qū)拥臋?quán)重初始值如表1所示。
表1 分級(jí)時(shí)域?qū)映跏紮?quán)重值[9]
分級(jí)層碼率控制中每個(gè)時(shí)域?qū)拥某跏糛P計(jì)算公式與GoP層碼率控制極為相似,QPst將根據(jù)可用信道帶寬和分級(jí)層的長(zhǎng)度等信息作出自適應(yīng)調(diào)整
式中:Nlevel表示當(dāng)前時(shí)域?qū)又械膱D像幀總數(shù),SumQP表示比當(dāng)前時(shí)域?qū)拥鸵患?jí)的時(shí)域?qū)又幸丫幋a各幀的量化步長(zhǎng)值總數(shù)。
同一時(shí)域?qū)又械母鱾€(gè)B幀具有不同的復(fù)雜度。但文獻(xiàn)[6]中提出的固定權(quán)重值的碼率控制算法并沒有將這種復(fù)雜度差異考慮在內(nèi),而為它們分配相同的權(quán)重度。顯然忽略這種復(fù)雜度差異將導(dǎo)致編碼效率和編碼質(zhì)量下降。在本文中提出的碼率控制算法將采用紋理信息編碼生成的比特?cái)?shù)和編碼質(zhì)量PSNR來(lái)預(yù)測(cè)該幀的復(fù)雜度信息。然而,類似于H.264/AVC碼率控制中遇到的蛋雞悖論,一幀圖像的實(shí)際生成比特?cái)?shù)和編碼質(zhì)量PSNR在該幀編碼完成之前是不可能準(zhǔn)確得到的。因此,只能通過(guò)當(dāng)前幀的參考幀復(fù)雜度信息來(lái)預(yù)測(cè)當(dāng)前幀的編碼復(fù)雜度Cp
式中:Cf,1、Rf,1、PSNRf,1和 Cf,2、Rf,2、PSNRf,2分別代表前向和后向預(yù)測(cè)幀的復(fù)雜度、實(shí)際消耗比特?cái)?shù)和編碼質(zhì)量PSNR。根據(jù)預(yù)測(cè)得到的編碼復(fù)雜度計(jì)算出當(dāng)前幀的目標(biāo)比特
式中:Nr,l和Rr,l分別表示第l層中的剩余圖像幀數(shù)和目標(biāo)比特?cái)?shù)。
基于JVT-G012中提出的線性跟蹤理論,緩沖器水平的目標(biāo)比特?cái)?shù)Tb可以通過(guò)目標(biāo)緩沖區(qū)水平Bt、幀率f、可用信道帶寬W和實(shí)際的緩沖區(qū)水平Bc計(jì)算得到
式中:γ是一個(gè)常量,在實(shí)驗(yàn)中依據(jù)經(jīng)驗(yàn)設(shè)置為0.25[3]。最終,當(dāng)前幀的目標(biāo)比特由Tf和Tb加權(quán)計(jì)算得到
式中:常量 β 的值在實(shí)驗(yàn)中設(shè)為 0.9[3]。
需要注意的是,基于經(jīng)典的二項(xiàng)式R-Q模型,視頻序列中的任意一個(gè)B幀都能夠通過(guò)式(7)計(jì)算得到的目標(biāo)比特,來(lái)得到對(duì)應(yīng)的量化步長(zhǎng)QP。但是如果當(dāng)前幀是時(shí)域分級(jí)層的第一幀,通過(guò)分級(jí)層碼率控制,當(dāng)前幀將會(huì)得到另外一個(gè)QP值。前一個(gè)QP體現(xiàn)了當(dāng)前幀的編碼復(fù)雜度,而后一個(gè)QP依據(jù)的是它所在層的權(quán)重因子。當(dāng)遇到上述情況時(shí),本文提出的碼率控制算法在實(shí)驗(yàn)中采用了取均值的方法。
在實(shí)驗(yàn)參數(shù)設(shè)置方面,GoP的長(zhǎng)度為8,在水平方向和豎直方向上均采用1/4亞像素搜索,搜索范圍為32。另外,采用TZSearch的快速搜索方式。為了客觀準(zhǔn)確地評(píng)估本文提出的碼率控制算法,仿真環(huán)境采用了JSVM 9.12軟件參考平臺(tái)[10]。文中給出了QCIF格式的Akiyo、Foreman和CIF格式的News、Mobile共4個(gè)標(biāo)準(zhǔn)序列。這4個(gè)視頻序列具有廣泛的代表意義。其中Akiyo和New序列運(yùn)動(dòng)平滑,主要由靜止或相對(duì)穩(wěn)定的區(qū)域組成。Foreman和Mobile序列運(yùn)動(dòng)劇烈,圖像復(fù)雜度高,這些特性與前一組視頻序列恰好相反。
表2列出了該算法與Liu等人所提出算法[6]的比較結(jié)果。表2給出了目標(biāo)碼率、實(shí)際碼率、碼率控制誤差Δ、峰值信噪比PSNR與兩種算法間的PSNR差值等指標(biāo)。其中碼率控制誤差Δ的定義為
式中:Ractual和Rtarget分別表示實(shí)際碼率和目標(biāo)碼率。根據(jù)表2給出的數(shù)據(jù),該算法在各種視頻序列中均表現(xiàn)出了高于文獻(xiàn)[6]中算法的編碼效率。尤其在PSNR的表現(xiàn)上,由于本文提出的碼率控制策略中加入了分級(jí)層碼率控制,使得編碼質(zhì)量無(wú)論在低碼率還是高碼率的視頻序列中都得到了顯著提高。雖然在目標(biāo)比特為256 kbit/s時(shí)的Foreman序列編碼中,該算法只提高了0.1 dB,但卻大大節(jié)省了編碼比特?cái)?shù)的消耗。而在目標(biāo)比特為1 200 kbit/s時(shí)的Mobile序列編碼中,該算法高出了0.41 dB。在碼率控制誤差方面,該算法與文獻(xiàn)[6]中的算法表現(xiàn)相近,基本都將誤差范圍控制在目標(biāo)碼率的1%以內(nèi)。
表2 實(shí)驗(yàn)結(jié)果
圖2~5分別給出了這4個(gè)視頻序列的Bit-PSNR曲線圖。從圖中曲線可知,相比于Liu等人提出的算法,本文的碼率控制算法將整個(gè)視頻序列的平均PSNR提高了0.1 ~0.4 dB。
本文提出了一種分級(jí)層碼率控制算法,該算法基于前一個(gè)GoP中各時(shí)域?qū)訉?shí)際產(chǎn)生的比特?cái)?shù),自適應(yīng)調(diào)節(jié)當(dāng)前GoP中各時(shí)域?qū)拥臋?quán)重因子,為各時(shí)域?qū)臃峙涓侠淼哪繕?biāo)比特。此外,碼率控制算法還引入了一種針對(duì)同一時(shí)域?qū)又懈鲙瑥?fù)雜度差異的比特分配模型。實(shí)驗(yàn)結(jié)果表明,該算法不僅能精確地控制輸出碼率,還能明顯提高整個(gè)視頻序列的編碼效率。
圖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]徐龍,高文,季向陽(yáng),等.一種面向SVC的碼率控制算法[J].計(jì)算機(jī)學(xué)報(bào),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]李振剛,安平,嚴(yán)濤,等.面向多視點(diǎn)視頻編碼的宏塊級(jí)碼率控制[J].應(yīng)用科學(xué)學(xué)報(bào),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.