視頻復雜度自適應(yīng)的H.264基本單元層碼率控制方法
摘要:為了提高JVT-H017碼率控制提案中的基本單元層比特數(shù)分配方法在視頻序列復雜度較高時分配的準確度,提出了一種視頻復雜度自適應(yīng)的基本單元層碼率控制方法。利用DMAD參數(shù)來判斷視頻場景的復雜度,對JVT-H017的比特數(shù)分配方法進行了改進;同時提出了一種基本單元層編碼的理想情況,并以此理想情況下的比特數(shù)消耗情況來對基本單元的比特數(shù)進行修正。仿真結(jié)果表明,該方法有效地提高了視頻編碼的峰值信噪比(PSNR),最大可提高0.49 dB,并且輸出碼率更接近預定編碼碼率。
關(guān)鍵詞:H.264;碼率控制;預測模型;視頻復雜度
碼率控制一直是H.264/AVC視頻編碼標準的研究熱點。由Li和Ma等人提出的JVT-H017提案在碼率、圖像質(zhì)量和緩沖器占用度上達到了良好平衡,已成為最主流的碼率控制方法。JVT-H017使用待編碼基本單元的MAD(平均絕對誤差)預測模型的參數(shù)來預測當前幀剩余所有基本單元的MAD,并根據(jù)所得結(jié)果為當前基本單元分配比特數(shù)。當視頻復雜度較高時,基本單元的時空相關(guān)性都明顯降低,此時這種基本單元比特數(shù)分配方法會產(chǎn)生較大誤差。
對此,許多學者提出了很多改進的碼率控制方法。Jianpeng提出使用二維窗口來選取模型參數(shù)的歷史數(shù)據(jù)點,但二維窗口通常數(shù)據(jù)點較少,準確度受到限制;Yang提出了空域的MAD預測模型來增加MAD預測的精確度,但計算復雜度比較高;Yin提出使用相鄰已編碼基本單元的MAD加權(quán)平均值來計算當前基本單元的MAD,但沒有準確利用基本單元空域時域的相關(guān)性;Jen-Yeu提出利用DMAD(Difference of MAD)改進JVT-H017的幀間比特數(shù)分配方法并將其應(yīng)用到基本單元層,改善了高復雜度視頻和場景變換時的編碼質(zhì)量。
文中在Jen-Yeu提出的基本單元層碼率控制方法的基礎(chǔ)上,對其復雜度參數(shù)進行了重新定義,提高了復雜度估計的準確性,同時利用理想狀況下的比特數(shù)消耗情況來對基本單元比特數(shù)預測值進行修正。文中所有仿真均以官方驗證軟件JMl3.2為實驗平臺。
1 JVT-H017基本單元層碼率控制誤差分析
JM軟件采用了JVT-H017算法中的基本單元目標比特數(shù)計算方法
其中,i表示當前幀的序號,j表示當前基本單元在當前幀中的序號,Ti(j)表示基本單元的目標比特數(shù),PMAD表示基本單元MAD的線性預測值,TRi(j)表示第i幀中第j個基本單元編碼前該幀剩余比特數(shù),Nunit表示當前幀的基本單元總數(shù)。
JVT-H017的比特數(shù)分配方法并沒有充分考慮相鄰幀的基本單元間的時間和空間相關(guān)性,當視頻內(nèi)容變化速度比較快或發(fā)生場景變換時,基本單元之間的時空相關(guān)性變差,此時使用當前基本單元j的線性預測系數(shù)去預測當前幀剩余基本單元的MAD而得到的PMADi(k){k=j+1,j+2…Nunit}會有較大的誤差,而基于PMADi(k)計算的目標比特數(shù)的準確度也會有較大幅度下降,使得基本單元的比特數(shù)分配變得不準確。
2 基于DMAD的基本單元比特分配方法
在JVT-H017算法中,最終為待編碼P幀分配的比特數(shù)f(i)由和兩部分組成
其中,是從當前GOP剩余比特數(shù)角度為待編碼P幀分配的比特數(shù),是從編碼碼率和緩沖器占用度角度分配給待編碼P幀的比特數(shù)。在JM13.2模型中,β設(shè)為常數(shù)0.5。
Jen-Yeu通過實驗發(fā)現(xiàn)式(2)中的系數(shù)β與圖像的時間相關(guān)性有很大的關(guān)系,進而影響了幀間比特數(shù)分配和幀圖像的編碼信噪比,并基于此提出用DMAD(Difference of MAD)來判斷視頻序列的復雜度。第i幀第j個基本單元的DMAD為
DMAD(i,j)=|MAD(i,j)-MAD(i-1,j)| (3)
當DMAD值較大時,表明連續(xù)的兩幀之間某一幀的預測誤差較大,此時圖像中極有可能有高速的物體運動或發(fā)生場景變換。
DMAD(i,j)被進一步歸一化為
用來代替式(2)中的權(quán)重系數(shù)β。由于H.264是以基本單元為基本單位進行編碼的,所以式(2)被進一步改進并用來計算基本單元的目標比特數(shù),如式(5)所示。
其中,f(i,j)表示第i幀第j個基本單元的目標比特數(shù),Nunit為一幀中的基本單元總數(shù)。
但由于式(4)的分母選自幀內(nèi)已編碼基本單元的最大值,如果當前基本單元的DMAD只是局部最大,而其本身絕對值并不高,也會使取得比較大的值,從而被誤判斷為高復雜度,因此并不能很好的反應(yīng)不同視頻序列間復雜度的區(qū)別。
對此,文中將復雜度從低到高排列的akiyo,mother daughter,suzie,foreman,coastguard,mobile 6個序列(在常見碼率下編碼,6個序列的PSNR以約2.5~4 dB遞減,表明6個序列的復雜度有比較明顯的差異,能夠反映不同視頻序列編碼的普遍情況)以24 kbits/s,48kbits/s和64 kbits/s的碼率進行150幀編碼,記錄各序列每次編碼時所有P幀基本單元的DMAD值。對同一序列在3種碼率下編碼的基本單元DMAD記錄值進行統(tǒng)一排序并求取排序結(jié)果的中位數(shù),該中位數(shù)代表了對應(yīng)序列的基本單元的中等復雜度。求得6個序列編碼結(jié)果的中位數(shù)的平均值為0.18,它反映了不同視頻序列編碼時基本單元的中等復雜度的均值。
選取0.18作為判斷基數(shù),將改進為β(i,j)。
β(i,j)與視頻復雜度成正相關(guān),可以有效反映相鄰幀間圖像復雜度的變化情況和不同視頻序列復雜度的區(qū)別。若DMAD(i,j)=0.18,則當前基本單元為具有中等復雜度的基本單元,此時β(i,j)=0.5;當視頻復雜度降低時,DMAD(i,j)減小,β(i,j)也會相應(yīng)減??;反之亦然。而當DMAD接近或大于0.36時,即認為視頻復雜度很高,或發(fā)生場景變換,此時β(i,j)取值為0.9?;?beta;(i,j),將式(5)改進為
在實際編碼時,由于在編碼前無法得到當前基本單元的DMAD,所以用當前基本單元的PMAD來計算其DMAD的近似值
DMAD(i,j)≈|PMD(i,j)-MAD(i-1,j)| (8)
3 理想的比特數(shù)消耗情況
JVT-H017在幀內(nèi)比特數(shù)消耗量超過幀預測值后,采用簡單增加量化參數(shù)的方法來減少后續(xù)基本單元的比特數(shù)消耗,但在此之前并無其它的比特數(shù)限制措施。因此提出一種視頻編碼的理想條件,并用這種理想條件下的比持數(shù)消耗情況來修正超過幀預測值前基本單元的比特數(shù)分配。假設(shè)待編碼幀的比特數(shù)預測完全準確,剛好等于該幀實際比特數(shù)消耗量,幀內(nèi)各基本單元的MAD均相等,且消耗比特數(shù)相同,則該幀比特數(shù)消耗情況如圖1所示。
圖1中,Nunit是幀內(nèi)基本單元總數(shù),TRi(j)表示第i幀中第j個基本單元編碼前該幀剩余比特數(shù),設(shè)首基本單元的序號為1,那么易知TRi(1)即為當前幀比特數(shù)預測值,TRi(1)/Nunit為上述理想狀況下一個基本單元所消耗的比特數(shù)(各基本單元消耗比特數(shù)相同)。
根據(jù)圖1易知,第i幀中第j個基本單元編碼完成后該幀消耗的總比特數(shù)的理想值與實際值的差Di(j)可由式(9)表示。
其中,TAi(k)表示編碼第i幀中第k個基本單元實際消耗的比特數(shù)。
當Di(j)0時,即認為該幀比特數(shù)消耗過多,此時適當增加量化參數(shù)(仿真中為增加1)以更強的控制后續(xù)基本單元的比特數(shù)消耗。
4 仿真結(jié)果與分析
文中以H.264官方驗證軟件JM13.2作為實驗平臺,對提出的基本單元層碼率控制方法進行仿真。測試序列為QCIF格式,共編碼150幀,首幀為I幀,其余為P幀,不考慮跳幀,幀率為15幀每秒,I幀和首P幀的初始量化步長的計算采用默認方法。分別對復雜度相差較大的akiyo,earphone,foreman和mobile序列進行編碼測試。
表1所示為在24 kbits/s,48 kbits/s和64 kbits/s 3種編碼碼率下對上述序列進仃編碼的結(jié)果。從表1可見,除了在24kbits/s碼率下編碼mobile 序列外,采用本文算法編碼的平均峰值信噪比均要高于JM軟件和[6]中提出的算法,最大可比JM提高0.49dB,比[6]中的算法提高0,18dB。碼率控制的結(jié)果也更為精確,JM13.2的實際碼率與預定碼率的平均誤差是0.37%,[6]中算法的碼率平均誤差是0.32%,而本文算法的碼率平均誤差是0.28%,可見本文算法更符合預定的碼率要求。
為了驗證算法在場景變換時的編碼性能,在48 kbits/s碼率下,用3種方法分別對carphone序列和akiyo序列的混合序列C55A55進行編碼測試,混合序列在第55幀發(fā)生場景變換。編碼結(jié)果如圖2和圖3所示。由圖2可見,本文提出的方法在場景變換幀及后續(xù)幀均取得了更高的編碼信噪比,提高了新場景的編碼質(zhì)量。
圖3對3種碼率控制方法在編碼過程中的緩沖區(qū)狀態(tài)進行了對比。從圖3可見,文中方法比JM更接近目標緩沖區(qū)占用度,并且在場景變換時有效降低了緩沖區(qū)占用度,在編碼器緩沖區(qū)尺寸有限的情況下,為新場景提供丁更多可用編碼資源。
5 結(jié)論
文中提出了一種復雜度自適應(yīng)的基本單元層碼率控制算法。該算法利用DMAD參數(shù)來判斷視頻復雜度,對JVT-H017的比特數(shù)分配方法進行了改進,并利用理想的基本單元層編碼情況來對基本單元比特數(shù)分配進行修正。仿真表明,該方法在一般情況和場景變換時的編碼質(zhì)量均高于JM模型,平均峰值信噪比最大可提高0.49 dB,實際編碼碼率更接近預定要求。
評論