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