摘 要: 基于對快速分?jǐn)?shù)運(yùn)動估計算法和參考軟件JM18.4中分?jǐn)?shù)運(yùn)動估計算法的研究,針對H.264/AVC提出了一種快速分?jǐn)?shù)運(yùn)動估計算法。實驗結(jié)果表明,該算法能夠有效減少H.264/AVC 編碼器的計算復(fù)雜度,并能夠保證峰值信噪比降低(<0.045 dB),視頻質(zhì)量下降微乎其微。
關(guān)鍵詞: H.264/AVC; 快速算法; 分?jǐn)?shù)運(yùn)動估計
H.264/AVC是ITU-T視頻編碼專家組和ISO/IEC運(yùn)動圖像專家組共同制定的視頻編碼標(biāo)準(zhǔn)[1]。在保證圖像質(zhì)量不變的情況下,H.264/AVC的壓縮效率期望比之前視頻編碼標(biāo)準(zhǔn)高一倍,高數(shù)據(jù)壓縮率必然要求H.264/AVC編碼方式較之前標(biāo)準(zhǔn)更為復(fù)雜。在H.264/AVC中,幀間預(yù)測占用60%以上編碼時間,是影響編碼器整體性能最重要的一個組成部分[2]。為了縮短運(yùn)動估計時間,研究人員提出了不同的快速算法,其出發(fā)點都是在視頻質(zhì)量下降不大的情況下大幅度縮短編碼時間,本文依據(jù)該思想提出一種通過減少分割模式來縮短編碼時間的快速分?jǐn)?shù)運(yùn)動估計算法。
1 快速分?jǐn)?shù)運(yùn)動估計算法分析
1.1 JM18.4參考軟件分?jǐn)?shù)運(yùn)動估計
H.264/AVC 采用塊尺寸可變的運(yùn)動估計,JM18.4中采用圖1所示的7種模式來描述H.264/AVC中宏塊的分割方式[3]。分?jǐn)?shù)運(yùn)動估計分為1/2像素運(yùn)動估計和1/4像素運(yùn)動估計兩個階段。1/2像素運(yùn)動估計利用6抽頭濾波器插值半像素點,然后在整數(shù)運(yùn)動向量所指向區(qū)域內(nèi)進(jìn)一步細(xì)化整數(shù)運(yùn)動向量,從而得到41個1/2像素運(yùn)動向量;緊接著執(zhí)行1/4像素運(yùn)動估計,從而得到41個1/4像素運(yùn)動向量。接下來就要確定宏塊的最終分割模式,即模式選擇。模式選擇首先為每一個8×8子宏塊找到最優(yōu)的分割方式,然后為宏塊找到最優(yōu)的分割方式。
1.2 基于減少模式的分?jǐn)?shù)運(yùn)動估計
在分?jǐn)?shù)運(yùn)動估計階段,為了找到41個宏塊和子宏塊的分?jǐn)?shù)運(yùn)動向量,分?jǐn)?shù)運(yùn)動估計本應(yīng)該像整數(shù)運(yùn)動估計一樣要遍歷宏塊的7種模式,但為了降低分?jǐn)?shù)運(yùn)動估計的復(fù)雜度,本分?jǐn)?shù)運(yùn)動估計算法僅遍歷其中部分模式。通過對JM18.4做大量的實驗,發(fā)現(xiàn)單方面大幅度減少分割模式,視頻的峰值性噪比會急劇下降。為了保證編碼效率不會大幅度降低,可通過其他方法將最可能的模式限定在少數(shù)的模式之中,這樣既能保證編碼效率又能降低分?jǐn)?shù)運(yùn)動估計復(fù)雜度。
1.3 基于模式相關(guān)的分?jǐn)?shù)運(yùn)動估計
實驗發(fā)現(xiàn),不同幀中的宏塊分割模式存在很大的差異,但是在同一幀中宏塊分割模式的分布卻呈現(xiàn)一定的局部性,即宏塊的分割模式與其相鄰宏塊的分割模式有很大的關(guān)系,對于子宏塊也呈現(xiàn)這種規(guī)律。表1給出了相鄰宏塊的分割全為16×16時,在不同測試序列中當(dāng)前宏塊編碼模式為16×16以及編碼模式為16×16、16×8或者8×16所占百分比。由表1可以看出,當(dāng)前宏塊編碼模式為16×16的概率高達(dá)90%以上,當(dāng)前宏塊編碼模式為16×16、16×8或者8×16的概率比16×16略高。
從以上分析中可看出,宏塊的編碼模式之間有很強(qiáng)的相關(guān)性,因此可以利用這種相關(guān)性來預(yù)測宏塊的編碼模式,利用這種方法可以將編碼模式限定在為數(shù)不多的幾個模式中,從而減少編碼器的計算復(fù)雜度。
2 快速分?jǐn)?shù)運(yùn)動估計算法描述
通過以上分析可知,當(dāng)前宏塊和子宏塊的最優(yōu)分割模式與相鄰宏塊和子宏塊的分割模式密切相關(guān),基于此,本文提出了一種快速分?jǐn)?shù)運(yùn)動估計算法,利用該算法能夠?qū)⒋幚淼?種模式減少到兩種模式,從理論上應(yīng)該可以減少 71%的計算量。該算法步驟具體如下。
(1) 根據(jù)相鄰宏塊的分割模式預(yù)測當(dāng)前宏塊的分割模式;
(2) 如果當(dāng)前宏塊的分割模式為8×8,則利用相鄰子宏塊的分割模式進(jìn)一步確定當(dāng)前子宏塊的分割模式;
(3) 考慮到宏塊或者子宏塊的分割模式并不總是與其相鄰塊的分割模式一致,因此可在整數(shù)運(yùn)動估計結(jié)束后,根據(jù)殘差代價和運(yùn)動向量殘差代價確定宏塊和子宏塊的另一種分割模式;
(4) 優(yōu)化整數(shù)運(yùn)動向量,得到分?jǐn)?shù)運(yùn)動向量,并從這兩種模式中找到一種最優(yōu)的分割方式。
2.1 當(dāng)前宏塊預(yù)測模式
表2給出了當(dāng)前宏塊的預(yù)測模式,具體預(yù)測方法為:(1)相鄰左邊宏塊的分割模式為16×16或者8×16,相鄰右邊宏塊的分割模式16×16或者16×8,則當(dāng)前宏塊的預(yù)測模式為16×16;(2)相鄰左邊宏塊的模式為16×8或者8×8,相鄰右邊宏塊的分割模式16×16或者16×8,則當(dāng)前宏塊的預(yù)測模式為16×8; (3)相鄰左邊宏塊的分割模式為16×16或者8×16,相鄰右邊宏塊的分割模式為8×16或者8×8,則當(dāng)前宏塊的預(yù)測模式為8×16;(4)相鄰左邊宏塊的分割模式為16×8或者8×8,相鄰右邊宏塊的分割模式為8×16或者8×8,則當(dāng)前宏塊的預(yù)測模式為8×8。
2.2 當(dāng)前子宏塊預(yù)測模式
表3給出了當(dāng)前子宏塊的預(yù)測模式。子宏塊預(yù)測模式的預(yù)測方法與宏塊預(yù)測模式的預(yù)測方法非常類似,只是其對應(yīng)模式的高度和寬度僅為對應(yīng)宏塊的一半。
3 實驗結(jié)果及分析
為了驗證本文提出的快速分?jǐn)?shù)運(yùn)動估計算法,對JM18.4作了相應(yīng)的修改并采用BUS和CREW兩個測試序列來驗證本算法,每個測試序列為100幀,寬高比為352×288,Y:U:V格式為4:2:0。測試環(huán)境為Pentium(R) Dual Core E5300 2.60 GHz CPU,2 GB內(nèi)存的PC, Windows 7 Ultimate操作系統(tǒng)。實驗結(jié)果如表4和圖2所示。從表4可以看出,本文提出的優(yōu)化算法可以在PSNR降低小于0.045 dB、比特率增加不超過2.0%的前提下,整體編碼速率提高25%~31%。同時,從圖2可以看出,利用該算法編碼的視頻PSNR基本上沒有降低。
本文為解決H.264/AVC分?jǐn)?shù)運(yùn)動估計運(yùn)算量大的問題,根據(jù)其相鄰分割和子分割模式之間相關(guān)性強(qiáng)的特點,提出了一種快速分?jǐn)?shù)運(yùn)動估計算法。該算法充分利用已編碼宏塊和子宏塊的分割模式來預(yù)測當(dāng)前宏塊和子宏塊的編碼模式,使得宏塊和子宏塊的最終分割模式與全模式的宏塊和子宏塊的分割模式更為接近,從而保證了在圖像質(zhì)量基本不變的情況下大幅度降低編碼器計算復(fù)雜度。
參考文獻(xiàn)
[1] ITU-T. H.264, ITU-T rec advanced video coding for generic audio visual[S].2012.
[2] 凃成,余諒.運(yùn)動估計UMHexagonS算法的研究與改進(jìn)[J].微型機(jī)與應(yīng)用, 2013,32(7):40-45.
[3] Song Hongtao, Gao Zhiyong, Zhang Xiaoyun. Novel fastmotion estimation and mode decision for H.264 real-timehigh-definition encoding[J]. IEEE Transations on Circuits Systems for Video Technology, 2012,22(13):43-48.
[4] 朱凱迪,陳一民,譚志鵬,等.H.264 運(yùn)動估計算法研究[J].計算機(jī)工程,2011,37(19):286-28.
[5] 姜有田,李金良.一種適用于H.264的分?jǐn)?shù)像素快速運(yùn)動估計算法[J].計算機(jī)工程與設(shè)計, 2006,27(19):3682-3685.