張 英,魏忠義,石 娟
(西安工程大學(xué) 電子信息學(xué)院,陜西 西安 710048)
H.264[1]是最新的國際視頻編碼標(biāo)準(zhǔn),它不僅使視頻壓縮比以往標(biāo)準(zhǔn)有明顯提高,而且具有良好的網(wǎng)絡(luò)親和性,特別是對 IP互聯(lián)網(wǎng)、無線移動網(wǎng)等易誤碼、易阻塞、QoS不易保證的網(wǎng)絡(luò)視頻傳輸性能有明顯的改善。因此,H.264已成為現(xiàn)今圖像壓縮研究的一個熱點。同時,碼率控制作為視頻壓縮算法的一個重要方面,也引起了研究者的很大重視。
在 H.264碼率控制經(jīng)典算法里,JVT-H017[2]因?qū)嶋H碼率和PSNR的控制更加準(zhǔn)確,并能更好地逼近限制的碼率,而與JVT-G012[3]一起成為目前最常用的H.264碼率控制算法。但JVT-H017算法仍然存在明顯的不足[4]: 同時引用率失真(R-D)模型和MAD線性模型會增加編碼的計算量;算法中圖像組GOP(Group of Pictures)碼率的分配方法和HRD機制限制了前后質(zhì)量平緩度的進一步提高;編碼后的跳幀策略仍然采用類似于MPEG-4Q2中的簡單方法,嚴(yán)重影響了運動劇烈圖像的質(zhì)量。本文在介紹JVT-H017碼率控制算法的基礎(chǔ)上,提出了一種利用運動復(fù)雜度作為跳幀判別的算法,合理地分配緩存空間給運動劇烈的幀,較好地保留了圖像的細節(jié),進一步提高了圖像的質(zhì)量。
JVT-H017碼率控制策略包含 3個層次:GOP層、幀層和基本單元層。其中基本單元層指的是同一幀中一組連續(xù)的宏塊,每個基本單元層至少包含一個宏塊。
GOP層碼率控制主要任務(wù)是計算當(dāng)前GOP中剩余圖像幀的比特數(shù),初始化即時解碼刷新(IDR)和第一個存儲幀的量化參數(shù)。當(dāng)?shù)趇個GOP的第j幀被編碼時,當(dāng)前GOP中剩余幀的比特數(shù)計算如下:
式中,f是預(yù)定義的編碼幀率;Ni是第 i個 GOP的總幀數(shù);Ri(j)、Vi(j)分別是當(dāng)?shù)?i個 GOP的第 j幀被編碼時,當(dāng)前可用的比特率和虛擬緩沖(buffer)的占用率;bi(j-1)是第j-1幀的比特數(shù)。
當(dāng)前幀為IDR幀或第i個GOP的第1個存儲幀時,則需初始量化參數(shù)QPi(1):
式中,NP(i-1)是第i-1個GOP的已存儲幀總數(shù),SumPQP(i-1)
是所有已存儲幀的平均幀量化參數(shù)和。
幀層的碼率控制包括編碼前和編碼后兩個階段。
1.2.1 編碼前階段
編碼階段是計算每一幀的量化參數(shù)。對于存儲幀和非存儲幀,方法是不一樣的。本文介紹的是只有存儲幀的情況。這一過程分兩個步驟完成:
(1)確定每個幀的目標(biāo)碼率
①確定當(dāng)前GOP中每個存儲幀的目標(biāo)碼率
每一個存儲幀的目標(biāo)緩沖由第一個IDR或存儲幀的編碼比特和平均復(fù)雜度得到。在編碼完第i個GOP的第1個存儲幀后,目標(biāo)緩沖的初始值為:
后續(xù)存儲幀的目標(biāo)緩沖計算為:
②計算當(dāng)前幀的目標(biāo)比特
第i個GOP中第j幀的目標(biāo)比特的分配是根據(jù)目標(biāo)緩存、幀率、可用信道帶寬以及實際的緩存占用率進行計算的:
其中:
為了符合假定解碼器HRD的要求,目標(biāo)比特的定義為:
式中,Zi(j)、Ui(j)分別是HRD的上下限。在沒有 B幀的情況下,β=0.5;否則,β=0.9。
(2)計算量化參數(shù)和執(zhí)行率失真優(yōu)化(RDO)
首先采用式(9)計算與目標(biāo)比特關(guān)聯(lián)的量化步長,相應(yīng)的量化參數(shù)QPi(j)由量化步長和高級視頻編碼(AVC)的量化參數(shù)計算得到:
式中,mh,i(j)是所有頭信息和運動矢量的編碼比特和,c1、c2是系數(shù)。為了保證連續(xù)幀之間的平滑性,量化參數(shù)QPi(j)調(diào)整為:
1.2.2 編碼后階段
編碼一幀以后,系數(shù) a1、a2及 c1、c2采用類似 MPEG-4 Q2部分的線性回歸模型進行更新。在此過程中,實際編碼產(chǎn)生的比特加入到緩存中。為保證更新后的緩存占用率不要過高,采用類似MPEG-4 Q2部分的跳幀策略進行調(diào)整。
基本單元碼率控制和幀層碼率控制的方法類似,為每個基本單元預(yù)測MAD,計算目標(biāo)比特,用二次R-D模型計算基本單元層的QP時需考慮:(1)對當(dāng)前幀的第一個基本單元,QP需設(shè)為前一幀所有基本單元量化參數(shù)的平均值;(2)當(dāng)前幀中還有未編碼的基本單元,而分配給它們的剩余比特數(shù)卻小于零。這時,當(dāng)前基本單元的QP應(yīng)相應(yīng)地增大;(3)其他情況下,通過二次R-D模型來獲得QP。
在實際的編碼中,如果每個GOP都超過了預(yù)先分配給它的比特數(shù),這時緩沖就會溢出,從而導(dǎo)致跳幀現(xiàn)象,使得圖像的質(zhì)量下降[4]。JVT-H017碼率控制算法采用的跳幀方法仍是MPEG-4 Q2中的簡單方法,即只是簡單地設(shè)置緩存區(qū)占有度上限達到80%時,就執(zhí)行跳幀。(同樣在以往的跳幀控制算法中[5],一般都只是將緩存的上限定為80%來作為跳幀的依據(jù),當(dāng)緩存容量超過80%時,將此幀定為跳幀)。相反,當(dāng)緩存容量低于25%時,也將此幀定為跳幀,但是這樣處理沒有充分考慮到簡單的跳幀會影響運動劇烈的圖像的細節(jié)表現(xiàn),導(dǎo)致圖像質(zhì)量嚴(yán)重下降。于是參考文獻[6]根據(jù)高運動復(fù)雜度對應(yīng)高比特數(shù)、低運動復(fù)雜度對應(yīng)低比特數(shù)這一比特分配法則,利用過濾掉運動平穩(wěn)的幀而保存運動劇烈的幀,并為運動劇烈的幀分配更多緩存空間的思想,提出了用前一幀預(yù)測得到的比特數(shù)與前面已編碼幀的實際比特數(shù)的平均值的比值作為衡量跳幀的標(biāo)準(zhǔn)。但參考文獻[5]并未考慮到出現(xiàn)比特數(shù)較多和比特數(shù)較少的幀交錯的幀序列這一情況。若前一幀比特數(shù)較少,當(dāng)前幀比特數(shù)較多,則得到的比值偏小;反之,得到的比值偏大??梢娪么朔椒ㄗ鳛樘鴰呐袛喾椒ǎ瑴?zhǔn)確率并不高。所以本文算法從圖像復(fù)雜度算法本身入手,并考慮到相鄰幀之間具有很強的相關(guān)性,重新定義一個跳幀判別方法,力求得到的跳幀判別方法能較準(zhǔn)確地優(yōu)化圖像質(zhì)量。
為了更好地適應(yīng)AVS編碼器的實時應(yīng)用,減少B幀延時帶來的影響,本文只考慮有I幀、P幀的圖像格式。由于I幀編碼需要較多的比特數(shù),它將占據(jù)多個幀間間隔傳輸,因此,本文為了減小緩沖延時,緊鄰I幀的前兩個P幀仍按原算法進行跳幀。即從第3個P幀開始定義當(dāng)前P幀的運動復(fù)雜度因子ci:
式中,Wp,i(j-1)表示當(dāng)前幀的前1個 P幀的實際復(fù)雜度,Wp,i(j-2)表示當(dāng)前幀前面第 2個 P 幀的實際復(fù)雜度,Wp,i(k)為 前 面 已 編 碼 幀 的 實 際 復(fù) 雜 度 ,Wp,i(j)=bp,i(j)×QPp,i(j),a1、a2是經(jīng)驗值。
GOP結(jié)構(gòu)為 IPPP,即第一幀為I幀,后面的為P幀。設(shè)定緩存容量的百分比為w1、w2(w1
表1 針對foreman本算法與其他兩種算法的信噪比的比較
表2 針對 mobile本算法與其他兩種算法的信噪比的比較
為了對算法進行分析,在JM8.6上對本跳幀算法進行仿真。實驗中分別使用QCIF序列foreman和CIF序列mobile,共編碼 100幀,GOP的結(jié)構(gòu)是 IPPP…IPPP…,幀內(nèi)編碼刷新周期為20幀,第一幀的量化步長為28,a=0.6,b=0.8,w1=60%,w2=70%,a1=3/2,a2=1/2。 在 JM8.6現(xiàn)有的碼率控制算法的基礎(chǔ)上,分別對跳幀策略與參考文獻[2]和參考文獻[5]中的跳幀策略進行測試,截取其中的20~40幀進行顯示。比較3種算法的PSNR。在相同的條件下,本文提出的跳幀算法相對其他兩個跳幀算法有所改進,更加準(zhǔn)確地做到了跳過平穩(wěn)運動的圖像,保留運動劇烈的圖像這準(zhǔn)則。從表1、表2可以看出,本文提出的跳幀算法,使信噪比有所提高,優(yōu)化了圖像的質(zhì)量。
本文針對JVT-H017碼率控制算法中跳幀策略仍然采用類似MPEG-4 Q2的簡單方法這一缺點,提出的跳幀算法合理地利用了圖像運動復(fù)雜度這一尺度來作為判別標(biāo)準(zhǔn),與參考文獻[2]的(JVT-H017)相比,使得圖像信噪比有所提升,優(yōu)化了圖像質(zhì)量。但是,本算法并沒有考慮到出現(xiàn)場景切換和B幀存在的圖像序列的跳幀問題,所以將來的工作將是在此算法的基礎(chǔ)上,提出一種更好的優(yōu)化算法,使其能提高不同圖像序列的圖像質(zhì)量。
[1]余兆明,查日勇,黃磊,等.圖像編碼標(biāo)準(zhǔn) H.264技術(shù)[M].北京:人民郵電出版社,2005.
[2]MA Si Wei, LI Zheng Guo, WU Feng, et al.JVT-H017-2003 proposed draft of adaptive rate control[S].2003.
[3]MA Si Wei, LI Zheng Guo, WU Feng, et al.JVT-G012-2003 proposed draft of adaptive rate control[S].2003.
[4]李記苗,劉彥明,高峰.H.264碼率控制及其改進策略[J].計算機與數(shù)學(xué)工程,2006(6):52-54.
[5]鄭從卓,李均利,陳剛,等.AVS實時編碼的VBR碼率控制[J].計算機程,2009(35):240-242.
[6]周駿華,石旭剛,宋瑋.一種基于運動復(fù)雜度的新的 H.264碼率控制算法[J].浙江工業(yè)大學(xué)學(xué)報,2006(6):672-675.