趙 金,張有會,王志巍,楊會云,霍利嶺
(河北師范大學(xué) 數(shù)學(xué)與信息科學(xué)學(xué)院,河北 石家莊 050016)
H.264[1]是ITU-T VCEG和ISO MPEG聯(lián)合頒布的新一代視頻壓縮標(biāo)準(zhǔn),與之前的視頻壓縮標(biāo)準(zhǔn)及技術(shù)相比,H.264不僅壓縮性能更高,而且具有良好的網(wǎng)絡(luò)適應(yīng)特性。
幀內(nèi)預(yù)測是H.264的重要組成部分,它通過利用圖像的空間相關(guān)性來提高壓縮效率。然而幀內(nèi)預(yù)測算法復(fù)雜度很高[2],以至于它不能應(yīng)用于實(shí)時(shí)性要求高的場合,一些快速算法正是在這種情況下出現(xiàn)的。目前,減小幀內(nèi)預(yù)測復(fù)雜度的方法大致可分為兩類:一類是簡化代價(jià)函數(shù),另一類是縮小預(yù)測模式選擇的范圍。對于第二類方法,可以利用當(dāng)前塊及其周圍像素的某些特征,預(yù)先排除某些可能性小的預(yù)測模式,或提前終止某些可能性小的模式的代價(jià)計(jì)算,由此降低幀內(nèi)預(yù)測的復(fù)雜度。Pan Feng等[3]提出了基于邊緣方向直方圖的幀內(nèi)預(yù)測模式快速選擇算法,使得對每個(gè)4×4像素塊只需要進(jìn)行3~4個(gè)預(yù)測方向的計(jì)算;羅亮等[4]充分利用像素塊的紋理特性及相鄰塊預(yù)測模式的相關(guān)性,將4×4亮度塊的候選模式從9種降低到1~4種;文獻(xiàn)[5]利用SAD值對Intra_4×4方式進(jìn)行預(yù)判,根據(jù)SATD特征排除可能性小的Intra_4×4預(yù)測模式,提高編碼速度。
筆者充分利用圖像塊本身的特征,提出了一種幀內(nèi)預(yù)測模式快速選擇算法。根據(jù)隸屬度函數(shù)預(yù)先判斷宏塊的平坦程度,確定宏塊類型,進(jìn)而判定塊的紋理方向,縮小預(yù)測模式選擇范圍,從而實(shí)現(xiàn)快速、有效的幀內(nèi)預(yù)測模式選擇。
對亮度信息,H.264提供了2種幀內(nèi)預(yù)測方式:基于16×16 宏塊的預(yù)測方式(Intra_16×16)和基于 4×4 塊的預(yù)測方式(Intra_4×4)。對色度信息,預(yù)測是基于8×8塊進(jìn)行的。
H.264支持 4種 Intra_16×16預(yù)測模式,8×8色度塊只是預(yù)測模式的順序與Intra_16×16有所不同。Intra_4×4方式提供了9種預(yù)測模式。

圖1 Intra_4×4幀內(nèi)預(yù)測模式
在H.264的幀內(nèi)預(yù)測模式下,采用全搜索方式來尋找率失真代價(jià)(RD_Cost)最小的模式作為最優(yōu)編碼模式

式中:SSD為誤差平方和,表示當(dāng)前塊與重建塊差值的平方和;λmode=0.85×2(QP-12)/3, QP 為量化參數(shù);Rate為熵編碼后的碼率。確定最優(yōu)編碼模式的步驟如下:
1)分別計(jì)算宏塊中的每個(gè)4×4塊在9種模式下的代價(jià)RD_Cost,把每個(gè)4×4塊對應(yīng)的最小的RD_Cost相加得到該宏塊Intra_4×4方式下的RD_Cost。
2)分別計(jì)算宏塊在4種模式下的絕對誤差和SAD(Sum of Absolute Difference),選擇 SAD 最小的模式,然后計(jì)算該模式下RD_Cost得到該宏塊Intra_16×16方式下的 RD_Cost。
3)比較 Intra_16×16方式和 Intra_4×4方式下的RD_Cost,選擇RD_Cost最小的模式作為該宏塊的幀內(nèi)預(yù)測模式。
由計(jì)算過程可知,為了確定一個(gè)宏塊的幀內(nèi)預(yù)測模式,需計(jì)算大量不同的模式組合,而且RD_Cost計(jì)算量相當(dāng)大,因此,幀內(nèi)預(yù)測模式選擇的計(jì)算復(fù)雜度非常大。
對于亮度塊的預(yù)測,存在Intra_16×16和Intra_4×4兩種幀內(nèi)預(yù)測方式,通常Intra_4×4適合于紋理比較豐富的區(qū)域,而Intra_16×16適合于較為平坦的區(qū)域。而全搜索算法不能預(yù)先判斷出宏塊所屬的幀內(nèi)預(yù)測方式,要對兩種幀內(nèi)預(yù)測方式分別進(jìn)行檢測。如果能夠提前對宏塊是否平坦作出判斷,就可以預(yù)先判斷出預(yù)測模式所屬的幀內(nèi)預(yù)測方式,而不需要對兩種方式都進(jìn)行測試。這既在一定程度上縮小了候選模式的范圍,也降低了模式?jīng)Q定過程的復(fù)雜度。
因此,本算法分兩步進(jìn)行幀內(nèi)預(yù)測:首先進(jìn)行宏塊類型的判定,即判定宏塊是否平坦,由此確定當(dāng)前宏塊采用Intra_16×16模式預(yù)測還是采用Intra_4×4模式預(yù)測;然后對Intra_4×4模式進(jìn)行最佳預(yù)測模式判定,即通過判定紋理類型,進(jìn)一步將預(yù)測模式鎖定在較小的范圍內(nèi),在此范圍內(nèi)計(jì)算最佳預(yù)測模式。
本文算法主要是基于模糊隸屬度進(jìn)行幀內(nèi)預(yù)測。
在采用模糊技術(shù)時(shí),整個(gè)算法的關(guān)鍵是隸屬度函數(shù)的設(shè)計(jì),隸屬度函數(shù)的不同對算法的處理結(jié)果以及算法實(shí)現(xiàn)的難易程度產(chǎn)生的影響也不同,這要求隸屬度函數(shù)必須能準(zhǔn)確客觀地反映系統(tǒng)中樣本存在的不確定性。目前有很多構(gòu)造隸屬度函數(shù)的方法,但還沒有一個(gè)可遵循的一般性準(zhǔn)則。在處理實(shí)際情況時(shí),通常需要根據(jù)經(jīng)驗(yàn)針對具體問題來確定合理的隸屬度函數(shù)。
本文算法是基于參考文獻(xiàn)[7]的隸屬度函數(shù)進(jìn)行設(shè)計(jì)的。在參考文獻(xiàn)[7]中,對于某一像素點(diǎn)x,定義x點(diǎn)的模糊隸屬度函數(shù)為其對周圍點(diǎn)的歸屬度

式中:x表示要處理的點(diǎn),xi表示x鄰域的點(diǎn),λ為一常數(shù),取為圖像灰度均值的平方。從隸屬度函數(shù)定義可知,uxi(x)越大,x與xi越相似,x與xi歸為一類的概率越大。由此可見,模糊隸屬度函數(shù)可以反映像素間灰度值的相似程度。文獻(xiàn)[8]利用該隸屬度函數(shù)進(jìn)行圖像平滑,取得了很好的效果。本文選擇該隸屬度函數(shù)進(jìn)行宏塊類型判定和4×4塊模式選擇。
根據(jù)上述分析可知,要判斷圖像的平坦程度,可選擇圖像中各像素灰度值作為待處理元素,計(jì)算其關(guān)于圖像灰度均值的隸屬度,隸屬度之和越大,表明各像素灰度值越接近,據(jù)此可以衡量圖像中像素灰度的相似程度,從而判斷圖像的平坦程度。
對宏塊進(jìn)行模式預(yù)測前,先計(jì)算各像素灰度關(guān)于宏塊灰度均值的模糊隸屬度,根據(jù)隸屬度之和從Intra_16×16模式與Intra_4×4模式中選擇最優(yōu)預(yù)測模式。為此,設(shè)定閾值T,若隸屬度之和大于T,則說明宏塊平坦,僅對Intra_16×16的模式進(jìn)行擇優(yōu);否則,說明宏塊細(xì)節(jié)豐富,對Intra_4×4的模式擇優(yōu)。
通過大量的實(shí)驗(yàn),并綜合考慮PSNR、碼率及編碼速度的情況,確定閾值T為0.8。
在H.264的幀內(nèi)預(yù)測模式中,大部分的預(yù)測模式都是基于方向的,特別是4×4亮度塊,9種預(yù)測模式中有8種是基于方向的預(yù)測 (如圖2),在塊的紋理方向上像素點(diǎn)的像素值是近似的。并且最優(yōu)模式和次優(yōu)模式往往具有類似的預(yù)測方向,即在預(yù)測方向圖中最優(yōu)模式和次優(yōu)模式通常是相鄰的。所以,可以選擇最可能模式及其相鄰的模式作為候選模式。這就為尋找Intra_4×4預(yù)測模式選擇的快速算法提供了線索。
定義方向隸屬度為某一方向上像素灰度值關(guān)于該方向灰度均值的模糊隸屬度之和,和越大,表明該方向上像素灰度越接近,該方向越有可能是塊的紋理方向。
對于 4 個(gè)主要方向(水平、垂直、45°和 135°方向),分別計(jì)算其方向隸屬度,值最大的方向所對應(yīng)的模式確定為主要候選模式,主要候選模式及其相鄰模式連同DC模式一起作為最終的候選模式,在其中選擇最優(yōu)模式。

圖2 4×4塊的預(yù)測模式方向
基于上述原理,模式快速選擇的步驟為:
1)計(jì)算各像素灰度值關(guān)于宏塊灰度均值的模糊隸屬度之和sum,與閾值T進(jìn)行比較;
2)當(dāng)sum≥T時(shí),說明宏塊平坦,采用全搜索算法進(jìn)行Intra_16×16的模式擇優(yōu);
3)當(dāng)sum (1)分別計(jì)算 4個(gè)主要方向(水平、垂直、45°和 135°方向)的方向隸屬度; (2)值最大的方向所對應(yīng)的模式及其相鄰模式連同DC模式一起作為候選模式; (3)對候選模式進(jìn)行RDO計(jì)算,選取RD_cost最小的模式作為當(dāng)前4×4塊的最佳預(yù)測模式。 表1 主要候選模式及其相鄰模式 為了驗(yàn)證本文快速算法的有效性,在H.264的官方平臺JM13.2上對10個(gè)具有不同紋理復(fù)雜度的QCIF序列進(jìn)行了測試,并在編碼時(shí)間、輸出碼率和峰值信噪比(PSNR)3個(gè)性能指標(biāo)上與全搜索算法作了比較。 測試的實(shí)驗(yàn)參數(shù)設(shè)置為:RDO有效;Hadamard變換有效;CAVLC熵編碼;每個(gè)序列分別取100幀,并全部為I幀編碼。分別在量化參數(shù)QP為24,28和32這3種情況下和全搜索算法進(jìn)行比較,結(jié)果如表2所示。 表2 QCIF序列快速算法與原算法的比較 其中△t表示編碼時(shí)間的變化、△Rbit表示碼率的變化、△PSNR表示Y分量的峰值信噪比的變化。“-”表示比原來降低,“+”表示增加。 實(shí)驗(yàn)結(jié)果表明,本文提出的算法與原算法相比,可以節(jié)約36%左右的編碼時(shí)間,碼率平均增加2.58%,信噪比平均下降0.03 dB。 圖3是標(biāo)準(zhǔn)視頻序列coastguard在全I(xiàn)幀情況下JM13.2全搜索算法和本文算法的RD曲線的比較。 由圖3可見,本文算法和全搜索算法的RD曲線基本重合,表明和全搜索算法相比,本文算法的率失真編碼性能基本不變,但計(jì)算復(fù)雜度明顯降低,編碼時(shí)間減少,從而證明了本文算法的有效性。其他測試序列的RD曲線也說明了同樣的結(jié)論。 圖3 coastguard序列的RD曲線 本文利用模糊隸屬度函數(shù)提出一種新的幀內(nèi)預(yù)測算法,該算法預(yù)先從Intra_4×4與Intra_16×16兩種預(yù)測模式中選擇一種最佳預(yù)測模式,并通過判斷紋理方向減少Intra_4×4的候選模式。實(shí)驗(yàn)測試表明,該算法的碼率增加少,信噪比下降低,有效地縮短了編碼時(shí)間,是一種快速的H.264幀內(nèi)預(yù)測算法。該算法在基本保持H.264圖像質(zhì)量與編碼效率的基礎(chǔ)上,有效降低了幀內(nèi)預(yù)測算法的復(fù)雜度。 [1]ITU-T Rec.H.264/ISO/IEC14496-10 AVC (Doc JVT 3/G050),Draft ITU-T recommendation and final draft international standard of joint video specifications[S].2003. [2]紀(jì)永昭,張穎,張兆揚(yáng).H.264幀內(nèi)模式快速選擇算法研究[J].電視技術(shù),2004(9):8-10. [3]PAN F, LIN X, RAHARDJA S, et al.Fast mode decision for intra prediction[C]//JVT-G013,JVT of ISO/IEC MPEG&ITU-T VCEG.Thailand∶[s.n.], 2003. [4]羅亮,劉春生,周蘆明.H.264/AVC快速幀內(nèi)預(yù)測模式選擇算法[J].計(jì)算機(jī)應(yīng)用,2008,28(4):1006-1008. [5]謝翠蘭,鄭藝玲.基于SAD和SATD的H.264快速幀內(nèi)預(yù)測算法[J].計(jì)算機(jī)工程,2008,34(10)∶215-217. [6]王維哲,周兵,張行進(jìn).H.264編碼中的幀內(nèi)預(yù)測模式選擇算法[J].計(jì)算機(jī)工程,2008,34(2):226-231. [7]岡薩雷斯.數(shù)字圖像處理[M].2版.阮秋琦,阮宇智,譯.北京:電子工業(yè)出版社,2003. [8]韓彩夏,王曉宇.基于Mean-shift算法與模糊熵的圖像平滑[J].計(jì)算機(jī)應(yīng)用,2009,29(1):63-67.
4 實(shí)驗(yàn)結(jié)果與分析


5 小結(jié)