霍利嶺,張有會(huì),王志巍,楊會(huì)云,趙 金
(河北師范大學(xué) 數(shù)學(xué)與信息科學(xué)學(xué)院,河北 石家莊 050016)
基于空域的幀內(nèi)預(yù)測(cè)是H.264/AVC[1]的重要組成部分。H.264/AVC采用全搜索算法進(jìn)行幀內(nèi)預(yù)測(cè),使幀內(nèi)預(yù)測(cè)具有很高的計(jì)算復(fù)雜度。因此,人們提出了很多快速算法。F.Pan等提出基于邊緣方向直方圖的幀內(nèi)模式快速選擇算法[2];Kim等通過(guò)計(jì)算4×4塊的SAD和SATD值,根據(jù)兩者直方圖的混合特征減少候選模式的個(gè)數(shù)[3];Jong-ho Kim等利用幀間信息來(lái)進(jìn)行幀內(nèi)模式的快速選擇[4]。國(guó)內(nèi)也有大量文獻(xiàn)進(jìn)行了相關(guān)研究[5-7]。筆者利用宏塊內(nèi)部相鄰像素值的差異判定宏塊的類(lèi)型,進(jìn)行Intra_4×4和 Intra_16×16的快速選擇。 對(duì)于 Intra_4×4模式,根據(jù)4×4塊的紋理方向排除不必要的候選模式。
H.264/AVC的幀內(nèi)預(yù)測(cè)充分利用圖像的空間相關(guān)性,用當(dāng)前塊的左邊和上邊像素值進(jìn)行預(yù)測(cè)(如圖1所示)。編碼時(shí),只對(duì)宏塊實(shí)際值和預(yù)測(cè)值的差值進(jìn)行編碼,從而減少編碼的碼率。H.264/AVC標(biāo)準(zhǔn)算法有3類(lèi)幀內(nèi)預(yù)測(cè)方式:4×4 亮度塊預(yù)測(cè)(Intra_4×4)、16×16 亮度塊預(yù)測(cè)(Intra_16×16)、8×8 色度塊預(yù)測(cè)(Intra_chroma)。其中,Intra_4×4 有 9種預(yù)測(cè)模式,包括8種方向性預(yù)測(cè)和1種均值預(yù)測(cè)(如圖2所示)。Intra_16×16有4種預(yù)測(cè)模式 (如圖3所示)。Intra_chroma預(yù)測(cè)方式與Intra_16×16相似,有4種預(yù)測(cè)模式[1]。
圖1 宏塊預(yù)測(cè)
圖2 Intra_4×4預(yù)測(cè)方向
圖3 Intra_16×16幀內(nèi)預(yù)測(cè)模式
JVT提供的參考模型中,色度塊的預(yù)測(cè)方式較為簡(jiǎn)單,亮度塊的預(yù)測(cè)方式較為復(fù)雜。因此這里只討論亮度塊預(yù)測(cè)方式的快速算法。
宏塊可以分為平坦宏塊和非平坦宏塊。Intra_16×16模式適用于平坦宏塊,而Intra_4×4模式適用于非平坦宏塊。如果可以提前判斷出宏塊的類(lèi)型,就可以提前從Intra_4×4和Intra_16×16中選擇一種模式,排除不必要的模式。
通過(guò)分析可知,平坦宏塊內(nèi)部相鄰像素間的灰度值變化不大,即宏塊在水平和垂直方向相鄰像素值的差異較小。因此,可以利用宏塊在水平和垂直方向的相鄰像素值差異來(lái)判定宏塊的平坦性。
設(shè)Ghor,Gver分別表示水平和垂直方向相鄰像素值的差異,表示如下
其中,f(x,y)為在(x,y)處的像素值。
令G=Ghor+Gver,既考慮了宏塊在水平方向的像素值的差異,又考慮了在垂直方向像素值的差異,因此G的大小可以在一定程度上反映宏塊的平坦性。
如圖4所示,宏塊1、宏塊2、宏塊3為Foreman序列第0幀中的3個(gè)平坦程度不同的宏塊。相應(yīng)的差異值如表1所示。
圖4 Foreman序列的第0幀
表1 不同宏塊的相應(yīng)差異值
由表1可知,G的值越小宏塊越平坦。因此,可以設(shè)定閾值T,如果G<T,則表明當(dāng)前宏塊比較平坦,只進(jìn)行Intra_16×16幀內(nèi)預(yù)測(cè);否則表明當(dāng)前宏塊紋理復(fù)雜,只進(jìn)行Intra_4×4幀內(nèi)預(yù)測(cè)。
蘭氏距離(也稱(chēng)Canberra距離)是由Lance和Williams最早提出的[8],它是聚類(lèi)分析中一種度量距離的常用方法。X1和X2的蘭氏距離計(jì)算公式如下
式中:d(X1,X2)越小表示 X1和 X2的接近程度越大,d(X1,X2)越大表示X1和X2接近程度越小。
本文以蘭氏距離為度量,提取4×4塊的紋理方向,主要思想如下: 計(jì)算 4×4 塊在 0°,45°,90°和 135°這 4 個(gè)主要方向的蘭氏距離和,然后比較大小,找出最小值。由于蘭氏距離和越小,表示該方向上的像素值變化越小,因此蘭氏距離和的最小值對(duì)應(yīng)的方向即為當(dāng)前4×4塊的紋理方向。
為了得到更準(zhǔn)確的紋理方向,獲取當(dāng)前4×4子塊的像素值以及上邊一行和左邊一列的像素值,組成1個(gè)5×5的圖像塊 X。計(jì)算 X 在 0°,45°,90°和 135°這 4 個(gè)方向的蘭氏距離 Dθ(θ=0°,45°,90°,135°),每行相鄰像素間的蘭氏距離之和D0的公式如下
式中:f(x,y)為 X 在(x,y)處像素值。 同理可定義 D90為
D45的計(jì)算方法如圖5所示,圖中的箭頭方向?yàn)椴罘址较颉135的計(jì)算公式與D45類(lèi)似。
D0,D45,D90,D135中的最小值對(duì)應(yīng)的方向?yàn)楫?dāng)前4×4子塊的紋理方向。將與此紋理方向?qū)?yīng)的預(yù)測(cè)模式(mode)加入到預(yù)測(cè)范圍??紤]到預(yù)測(cè)模式的相關(guān)性以及DC模式的特殊性,將與mode相鄰的2個(gè)模式mode1,mode2和DC模式也加入預(yù)測(cè)范圍,使Intra_4×4的預(yù)測(cè)模式由9個(gè)減少為4個(gè),從而加快編碼速度。
圖5 D45的差分方向
算法首先計(jì)算宏塊相鄰像素值的差異G,結(jié)合給定的閾值T判定宏塊的類(lèi)型,進(jìn)行Intra_4×4和Intra_16×16模式的快速選擇。其中,T的取值對(duì)編碼的性能影響很大,實(shí)驗(yàn)結(jié)果表明,T取值為600時(shí)獲得的編碼效果最好。而對(duì)于Intra_4×4模式,采用基于蘭氏距離的Intra_4×4模式快速選擇算法。
具體實(shí)現(xiàn)步驟如下:
1)獲取宏塊的亮度數(shù)據(jù),并設(shè)定閾值T。
2)計(jì)算當(dāng)前宏塊內(nèi)部相鄰像素值的差異G。
3)若 G<T,轉(zhuǎn)到 4),只進(jìn)行 Intra_16×16 模式選擇,否則,轉(zhuǎn)到5),只進(jìn)行Intra_4×4模式選擇。
4)采用H.264/AVC標(biāo)準(zhǔn)算法進(jìn)行Intra_16×16模式選擇,宏塊預(yù)測(cè)結(jié)束。
5)采用基于蘭氏距離的Intra_4×4快速選擇算法,具體過(guò)程如下:(1)獲得當(dāng)前4×4塊的數(shù)據(jù)以及其上邊行和左邊列的數(shù)據(jù),組成一個(gè)5×5圖像塊X;(2)計(jì)算X在 0°,45°,90°,135°這 4 個(gè)方向的蘭氏距離 D0,D45,D90,D135;(3)選取 D0,D45,D90,D135中的最小值對(duì)應(yīng)的模式mode以及與其相鄰的2個(gè)模式mode1,mode2和DC模式加入到預(yù)測(cè)范圍,則Intra_4×4的預(yù)測(cè)范圍為(mode,mode1,mode2,DC);(4)計(jì)算預(yù)測(cè)范圍內(nèi)4個(gè)模式的RD_Cost值,選取具有最小RD_Cost值的模式作為Intra_4×4的最佳模式;(5)重復(fù)(1)~(4)直到預(yù)測(cè)完宏塊內(nèi)所有 4×4 子塊,宏塊預(yù)測(cè)結(jié)束。
6)循環(huán)1)~5),直到預(yù)測(cè)完所有宏塊,算法結(jié)束。
為了驗(yàn)證算法的性能,在H.264參考模型JM13.2上對(duì)快速算法進(jìn)行了仿真實(shí)驗(yàn)。編碼配置為:幀率30 f/s(幀/秒); 全I(xiàn)幀序列; 編碼幀數(shù)為100幀;QP=28;RDO開(kāi);CAVLC 開(kāi)。 硬件配置為:AMD Athlon 64 X2 3600+;主頻 2.0 GHz;內(nèi)存 1.0 Gbyte。
表2列出了新算法與全搜索算法針對(duì)10個(gè)QCIF標(biāo)準(zhǔn)視頻序列的的結(jié)果比較。
表2 新快速算法與全搜索算法對(duì)比結(jié)果
表2中,Rt表示編碼時(shí)間變化的百分比,ΔPSNR表示峰值信噪比的變化,Rbit表示比特率變化幅度的百分比,由表2可知,本文算法與全搜索算法相比,各指標(biāo)變化的平均值為:速度提高51.53%;PSNR降低0.06 dB;碼率提高1.98%。
圖6給出了Foreman序列的RD曲線(xiàn)。由圖可知,本文算法的RD曲線(xiàn)與JM13.2全搜索算法的RD曲線(xiàn)基本重合。這表明本文算法在編碼時(shí)間明顯降低的同時(shí),圖像質(zhì)量和碼率的變化很小,從而驗(yàn)證了本文算法的有效性。
圖6 Foreman序列的RD曲線(xiàn)
本文首先利用宏塊相鄰像素值的差異結(jié)合預(yù)先給定的閾值判定宏塊的類(lèi)型,進(jìn)行Intra_16×16和Intra_4×4快速選擇。對(duì)于Intra_4×4模式,利用蘭氏距離提取圖像的紋理方向,根據(jù)得到的紋理方向排除可能性小的模式,進(jìn)而進(jìn)行Intra_4×4模式的快速選擇。實(shí)驗(yàn)結(jié)果表明,本文算法在PSNR和碼率變化很小的情況下,極大地提高了編碼速度。
[1]ISO/IEC 14496-10,Information technology coding of audio visual objects,Part 10[S].2004.
[2]PAN F,LIN X,RAHARDJA S,et al.A directional field based fast intra mode decision algorithm for H.264 video coding[EB/OL].[2009-09-10].http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1394420.
[3]KIM C,SHIH H H,KUO C J.Feature-based intra prediction mode decision for H.264[C]//Proc.2004 IEEE International Conference on Image Processing(ICIP).[S.l.]:IEEE Press, 2004:769-772.
[4]KIM Jong-ho,KIM Byung-gyu.Fast block mode decision algorithm in H.264/AVC video coding[J].Journal of Visual Communication and Image Representation,2008,19(3):175-183.
[5]劉代如,宋昊,李曉輝,等.H.264中一種快速幀內(nèi)預(yù)測(cè)判決算法[J].電視技術(shù),2007,31(4):10-11.
[6]王日霞,朱偉興,陳先勇.H.264基于宏塊自適應(yīng)的快速模式選擇算法[J].電視技術(shù),2009,33(2):14-17.
[7]王海勇,孫雁飛,吳啟宗.H.264編碼中幀內(nèi)預(yù)測(cè)算法研究[J].電視技術(shù),2009,33(8):11-12.
[8]朱玉全,楊鶴標(biāo),孫蕾.數(shù)據(jù)挖掘技術(shù)[M].南京:東南大學(xué)出版社,2006.