摘 要: 通過分析在H.264/AVC中預(yù)測初始量化參數(shù)的方法過于簡單,導致視頻序列整體編碼量化參數(shù)和重建圖像PSNR的波動,甚至PSNR急劇下降的問題,利用基于Cauchy分布的R-Q模型,結(jié)合I幀圖像復(fù)雜度建立R-C-Q模型,提出了自適應(yīng)的初始量化參數(shù)預(yù)測算法。該算法能夠根據(jù)不同視頻序列的特性,準確地預(yù)測I幀的初始量化參數(shù),有效地抑制視頻序列的整體量化參數(shù)及PSNR的波動,從而提高碼率控制精度和重建圖像質(zhì)量。
關(guān)鍵詞: H.264/AVC;碼率控制;初始量化參數(shù)
隨著數(shù)字視頻技術(shù)的快速發(fā)展,在人們?nèi)粘9ぷ魃钪谐霈F(xiàn)了形式多樣的視頻應(yīng)用,這些視頻業(yè)務(wù)給現(xiàn)有的存儲資源和通信系統(tǒng)帶來了巨大的挑戰(zhàn)。H.264/AVC是目前使用最廣泛的視頻編碼標準,因在碼率控制和率失真優(yōu)化過程之間存在編碼參數(shù)的依賴關(guān)系,使其碼率控制技術(shù)也更加復(fù)雜,如何提高碼率控制精度,更好地平衡編碼效率和圖像質(zhì)量之間的關(guān)系,成為碼率控制領(lǐng)域的研究熱點。
1 初始量化參數(shù)分析
初始量化參數(shù)(QP0)是指編碼視頻序列的I幀所使用量化參數(shù),在H.264/AVC的JVT-G012碼率控制算法提案中,初始量化參數(shù)QP0采用兩種方法進行預(yù)測:(1)預(yù)先定義的方法,QP0取值范圍為0~51;(2)在沒有預(yù)先定義的情況下,在參考軟件JM10.1中,QP0根據(jù)每像素的比特數(shù)bpp(bits per pixel)將信道分成4個級別,不同的級別采用不同的初始量化參數(shù),通過式(1)計算,bpp由式(2)確定。
其中,Rtarget為當前可用的信道帶寬,即目標比特數(shù);f為編碼時的幀率;Npixel為每幀圖像的像素個數(shù)。l1、l2、l3為經(jīng)驗常數(shù),對于QCIF視頻格式,取l1=0.1,l2=0.3,l3=0.6;CIF視頻格式,取l1=0.2,l2=0.6,l3=1.2;其他比CIF大的視頻格式,取l1=0.6,l2=1.4,l3=2.4。由式(1)、(2)可知,對于相同視頻格式不同圖像內(nèi)容的視頻序列,在信道帶寬、幀率相同的情況下,將使用相同的初始量化參數(shù)。
在編碼前預(yù)定義QP0,如果取值過小,編碼I幀將占用過多的目標比特數(shù),為了避免編碼緩沖區(qū)上溢,在編碼GOP中后續(xù)的圖像時,就會持續(xù)增加量化參數(shù),以減少后續(xù)圖像編碼碼率,導致圖像質(zhì)量急劇下降。另一方面,如果取值過大,就會浪費信道帶寬,甚至出現(xiàn)緩沖區(qū)下溢造成解碼端延遲,同時增加I幀的圖像失真,由于I幀是后續(xù)幀的參考幀,這些后續(xù)幀的重建圖像質(zhì)量也會相應(yīng)下降。顯然,在視頻編碼之前預(yù)先設(shè)定QP0,不能充分考慮視頻序列的特征,要設(shè)定合適的QP0是比較困難的。
在不預(yù)先設(shè)定QP0的情況下,分別選取Akiyo和Foreman兩個標準視頻序列,實驗參數(shù)設(shè)置為信道帶寬64 Kb/s,幀率30 f/s,視頻格式QCIF,序列結(jié)構(gòu)Ippp,編碼幀數(shù)100。實驗結(jié)果如圖1和圖2所示。
如圖1所示,兩個序列都采用了相同的QP0(QP0=35)。對于Foreman序列,QP0接近序列的平均量化參數(shù)(QPave=36),整個序列的量化參數(shù)和PSNR波動不大,如圖2所示。而Akiyo序列的平均量化參數(shù)為25,QP0與QPave之間的差為10,導致整個序列的PSNR和QP的劇烈波動。
由于視頻序列中I幀的圖像復(fù)雜度不同,采用相同的方式確定初始量化參數(shù),勢必會影響碼率控制的精度,造成重建圖像質(zhì)量的波動甚至下降。
2 I幀的R-C-Q模型
視頻序列中I幀沒有參考幀,使用幀內(nèi)預(yù)測方式編碼,因此應(yīng)考慮不同圖像的特性來預(yù)測QP0。通常在給定相同的信道帶寬時,對于空間紋理復(fù)雜或運動劇烈的視頻序列,需要較大的QP0,反之則對于空間內(nèi)容簡單或運動緩慢的視頻序列,則選擇較小的QP0。
參考文獻[1]中提出Cauchy分布比Laplace分布更接近殘差圖像DCT變換系數(shù)的實際分布情況,尤其是幀內(nèi)編碼的圖像,使用基于Cauchy分布的熵函數(shù)能使碼率估計的準確度得到很大提高,Cauchy熵函數(shù)可通過R-Q模型近似得到。
基于Cauchy分布的R-Q模型為:
其中,Rtotal為目標比特數(shù),包括頭比特數(shù)和紋理比特數(shù);Qstep為量化步長;C為模型參數(shù),與編碼圖像的內(nèi)容相關(guān),本文將其表示為圖像復(fù)雜度;?茁(?茁<0)為與DCT系數(shù)分布相關(guān)的常數(shù),當編碼I幀時,取值為{-0.75,-0.8,-0.85}。
假設(shè)在時間間隔ΔT內(nèi)編碼幀數(shù)為N,信道帶寬為B,C?琢表示N個幀的平均復(fù)雜度,則有:
為了驗證式(7)中QPave的有效性,選擇QCIF(Akiyo、Foreman、Mobile)及CIF(News、Waterfall、Bus)格式的標準測試序列,這些序列包含從簡單到復(fù)雜的紋理細節(jié)和從低到高的運動強度。在不同的信道帶寬下,對每個序列(QCIF:60~800 kb/s,CIF:80~1 600 kb/s)進行測試。圖3所示為序列實際編碼的QPave和信道帶寬B的線性擬合結(jié)果。圖中圓點代表序列在不同帶寬下編碼的QPave;相關(guān)系數(shù)R2表示線性擬合的準確度,其值越接近1說明樣本值越接近線性關(guān)系。從實驗結(jié)果可以看到在不同序列的和信道帶寬之間接近線性關(guān)系,說明最佳QP0可以通過式(6)得到。
3 I幀圖像復(fù)雜度
為了得到最佳QP0,在編碼視頻序列前首先要確定I幀的圖像復(fù)雜度。目前有多種圖像復(fù)雜度測量方法,在參考文獻[3]中將這些方法分為4類:基于方差的方法、DCT系數(shù)的方法、邊緣強度的方法和梯度的方法,這些方法在編碼前都不需要進行預(yù)處理,對4種方法的計算復(fù)雜度和性能進行比較,結(jié)果顯示基于梯度的方法最有效。通常圖像的梯度用于測量圖像局部的變化,圖像的亮度和色度直方圖則反映了圖像全局的變化,參考文獻[4]中用實驗驗證了通過結(jié)合圖像局部和全局的變化信息,其結(jié)果能更好地表示編碼圖像的復(fù)雜度。因此,本文借簽參考文獻[4]中方法,結(jié)合梯度和直方圖計算I幀的圖像復(fù)雜度。
如圖3所示,在相同的信道帶寬下,QCIF和CIF序列的QP0明顯不同,即使是相同格式序列的QP0也存在較大差異,QP0的差異是由I幀的圖像復(fù)雜度不同造成的。用式(11)計算所有測試序列的最佳QP0,實驗結(jié)果如圖4所示,最佳QP0呈線性分布,這說明式(11)能夠準確地反映不同內(nèi)容視頻序列I幀的特性。通過線性擬合方法得到式(11)中的參數(shù)?準和?漬,分別為?準=-6.532,?漬=51.44。參數(shù)?滋可根據(jù)應(yīng)用場景進行調(diào)整,對于空間內(nèi)容簡單或運動緩慢的場景,選擇較小值;反之,取較大值。
4 實驗結(jié)果及分析
將本文算法寫入JVT-G012參考軟件JM10.1中,選取QCIF和CIF格式的視頻序列,參數(shù)設(shè)置如表1所示。QCIF和CIF序列的信道帶寬分別設(shè)定為60~512 kb/s及120~1 024 kb/s。實驗結(jié)果如表2所示。
從表2可以看出,本文算法的平均碼率誤差?駐R降低了0.438%,說明能夠更準確地控制編碼輸出碼率。對于不同格式和不同圖像復(fù)雜度的序列,在不預(yù)定義QP0時,本文算法得到的初始QP0非常接近JM10.1算法的平均QP,兩者最大誤差僅為3,說明本文的QP0更加準確。本文算法有效提高了重建圖像質(zhì)量,PSNR的增益最高達到1.31 dB,平均PSNR增益達到0.61 dB,由于本文算法在編碼前僅需要計算視頻序列第一個I幀的圖像復(fù)雜度,計算復(fù)雜度增加有限,序列每幀的編碼時間僅比JM10.1平均增加了0.47%。
本文分析了JVT-G012碼率控制提案中預(yù)測初始量化參數(shù)的方法過于簡單、沒有考慮不同I幀圖像特性的問題,提出了基于Cauchy分布R-Q模型的自適應(yīng)初始量化參數(shù)預(yù)測方法。實驗結(jié)果表明,本文算法減少了視頻序列整體的量化參數(shù)和PSNR的波動,在提高碼率控制精度的同時,保持了穩(wěn)定的重建圖像質(zhì)。
參考文獻
[1] KAMACI N, ALTINBASAK Y, MERSEREAU R M. Frame bit allocation for the H.264/AVC video coder via cauchy density-based rate and distortion models[J]. IEEE Transactions on Circuits and System for Video Technology, 2005,15(8):994-1006.
[2] Ma Siwei, Gao Wen, Lu Yan. Rate-distortion analysis for H.264/AVC videocoding and its application to rate control[J]. IEEE Transactions on Circuits and System for Video Technology, 2005,15(12):1533-1544.
[3] KIM W J, YI J W, KIM S D. A bit allocation method based on pictureactivity for still image coding[J].IEEE Transactions on Image Processing,1999,8(7):974-977.
[4] Zhou Yimin, Sun Yu, Feng Zhidan, et al. New rate-distortion modeling and efficient rate controlfor H.264/AVC video coding[J]. Signal Processing: Image Communication,2009,24(5):345-356.