基于統(tǒng)計分析的H.264快速模式選擇算法
H.264是由ISO/IEC(國際標準化組織/國際電子技術(shù)委員會)的MPEG和ITU-T(國際電信聯(lián)盟)聯(lián)合成立的JVT(聯(lián)合視頻專家組)制定的新一代數(shù)字視頻壓縮標準。H.264采用很多新的技術(shù),包括可變宏塊大小分割、多參考幀、1/4像素精度運動估計、幀內(nèi)預(yù)測、環(huán)形濾波等,大大提高了編碼性能。從統(tǒng)計的角度和宏塊紋理預(yù)測的角度出發(fā),提出了一種綜合的快速模式選擇算法,大大地減少了編碼時間。
1 宏塊模式選擇
對于每一個宏塊,H.264可以選擇SKIP,inter16×16,inter16×8,inter8×16,inter8×8五種幀間模式和intra16×16,intra4×4兩種幀內(nèi)模式。而其中in-ter8×8又進一步可分成inter8×8,inter8×4,inter4×8,inter4×4四種子模式;intra16×16和intra4×4又分別有4種和9種預(yù)測模式。在JM 8.6參考軟件中,選擇所有模式中率失真代價值最小的模式作為最佳模式。其中率失真代價函數(shù)定義如下:
式中:SK為相應(yīng)宏塊;IK為相應(yīng)的編碼模式;Q為量化參數(shù);DREC是失真度;RREC為碼率。
從而每個宏塊都要經(jīng)過168次率失真代價值的計算,才能最終選出一種最佳模式,且每次率失真代價值計算都要對殘差進行整數(shù)DCT變換、量化、熵編碼、熵解碼、反量化、逆整數(shù)DCT變換。因此,參考軟件對于模式選擇的計算量非常大。
2 宏塊模式的統(tǒng)計特征分析
表1是JM 8.6模型中,未采用任何快速模式選擇,并且運動搜索采用全搜索的情況下,各序列所采用的編碼模式的百分比。其中編碼幀數(shù)為100幀,I幀周期為30幀,碼率為73 Kb/s,QP=28。
由表1可知,無論哪種序列,7種編碼模式所占的比重并不均衡,SKIP模式和inter16×16模式占據(jù)了很大的比重。這說明圖像細節(jié)還是占據(jù)了一幀圖像的少部分,視頻序列中大部分依然由緩慢變化的背景組成。而選中概率大的SKIP模式的率失真代價計算很簡單,因為沒有殘差,也就不存在DCT變換,且沒有多參考幀的選擇、運動搜索;inter16×16模式稍顯復(fù)雜,但也遠遠沒有其他幾種模式復(fù)雜。相反,出現(xiàn)概率很小的其他模式運算量卻非常大,尤其是inter8×8(inter8×8的運動搜索運算量非常大且子模式多)和intra4×4(預(yù)測模式非常多)。因此,對所有模式進行遍歷選擇時,實際上很大一部分時間是消耗在并未最后起決定作用的幾種模式的代價值計算上。因此如果能對概率非常大的幾種模式進行早期判決,或者對運算量非常大但選中概率非常小的inter8×8和intra4×4縮小選擇范圍,從整體編碼的性能上來講,應(yīng)該能節(jié)省大量的編碼時間,提高編碼速度。
3 SKIP模式快速判決算法
3.1 SKIP模式的特征
在對當前宏塊采用SKIP模式進行編碼時,它具有以下4個特征:
(1)它不在5幀備選參考幀中進行選擇。只以第0個參考幀作為參考幀;
(2)它并不進行運動搜索,因此它的運動矢量經(jīng)過相鄰宏塊的運動矢量的預(yù)測得到預(yù)測值MVp后,并沒有運動矢量的殘差MVD;
(3)在對它進行運動矢量的預(yù)測的時候,是以16×16(即一個宏塊)大小為單位;
(4)它經(jīng)過幀間預(yù)測后,并不編碼殘差,那么也就沒有整數(shù)DCT變換,或者可以看成它的DCT值為0。
在采用SKIP模式編碼后,性能是否最佳,通常情況下要用率失真代價值跟其他模式進行比較才能決定。但是,如果在采用其他正常方式進行編碼后,反過來,發(fā)現(xiàn)整個宏塊的編碼數(shù)據(jù)具有上述的某些或全部特征后,或許可以作為提前判斷當前編碼宏塊模式為SKIP模式的依據(jù),即將上述4個必要條件的某幾個作為判斷當前宏塊最佳模式為SKIP模式的充分條件。當然,這樣處理的結(jié)果并不準確,但是如果準確率較高,應(yīng)該對編碼效果的影響并不大。
3.2 SKIP模式快速判決方法分析
文獻[1]提出了一種以DCT系數(shù)是否為全0作為判斷條件來進行判斷。這種方法比較簡單,從理論上講應(yīng)該有一定的準確性,因為除了SKIP模式,其他模式的DCT系數(shù)為全零可能性并不大。文獻[2]則提出提出了一種比較苛刻的方法,它利用SKIP模式的所有特征,然后作為判決條件,即當一個宏塊滿足第3.1節(jié)的4個條件時,便判斷為SKIP模式。表2是對兩種方法進行實驗后判斷準確性的統(tǒng)計值。
由表2可知,這兩種方法準確性比較高,尤其是方法2,因為它的條件非常苛刻,這也符合文獻[2]中的敘述。但是這兩種方法判斷正確性高,文獻中卻忽略了一個重要參數(shù),即漏判決率。該兩方法對于已經(jīng)判決出的模式,正確性非常高,但是由于條件比較苛刻,它卻未判斷出很多本該是SKIP模式的宏塊,那么這些宏塊依然需要使用最原始的方法進行判斷,快速判決也就失去了其意義。
3.3 該文的SKIP模式快速判決方法
基于前一節(jié)的考慮,在此對文獻[2]提出的方法,將整數(shù)DCT系數(shù)為全0這一條件舍去,實驗結(jié)果顯示如表3中方法3所示。由表3可知,漏判率有所下降,但是依然很高。
最終,摒棄了采用SKIP模式的某幾種特征的組合作為判決條件,依然采用率失真代價來判斷。但是實驗中利用SKIP模式的率失真代價跟inter16×16模式的率失真代價值比較作為判決條件,即當滿足RDcost (SKIP)≤RDcost(inter16×16)時,認為當前宏塊的最佳模式為SKIP模式。這出于這樣的假設(shè),即在分塊大小都為16×16的情況下,如果沒有采用多參考幀選擇、運動估計以及對殘差進行編碼這樣非常簡陋的模式的率失真代價值依然比采用了相關(guān)技術(shù)的inter16×16模式的率失真代價值還小,則說明這一宏塊的細節(jié)非常少,該宏塊為SKIP模式的概率應(yīng)該非常大。當然不排除一種情況就是當前宏塊采用SKIP模式和inter16×16模式本身失真都非常嚴重,遠遠高于其他采用更細的分塊模式。此時率失真值主要由碼率決定,那么由于SKIP模式的碼率要低得多,從而SKIP的率失真值比inter16×16要小,導(dǎo)致誤判。表3是經(jīng)實驗得到的準確度表。由該表看出,該方法(方法4)判斷準確性也很高,但卻沒有一個漏判,這是因為此方法本身用的是率失真代價值與inter16×16的比較,符合所有模式中率失真代價值最低必然符合比inter16×16模式的代價低這一條件。因此這里采用此方法作為SKIP模式的快速判決方法。
評論