吳仲謀,梅順良
(清華大學(xué) 電子工程系,北京 100084)
將待編碼的視頻圖像序列看成一個整體,視頻序列中每幅圖像的內(nèi)容在時間域上往往和前面或后面出現(xiàn)的圖像序列有很大的相關(guān)性。要想使這段視頻序列的編碼效率逼近其高階熵,視頻序列的幀間預(yù)測方式設(shè)計成為很重要的因素。
幀間預(yù)測方式規(guī)定了圖像序列的編解碼順序,定義了每幅圖像在編解碼過程中采用哪些參考圖像作運(yùn)動補(bǔ)償。幀間預(yù)測方式主要包括兩方面:參考圖像的數(shù)目和預(yù)測結(jié)構(gòu)。通過幀間預(yù)測方式的優(yōu)化往往能較高地提高視頻編碼效率,但其是以增加編解碼器的時延和緩存作為代價的。
在AVS標(biāo)準(zhǔn)中,參考圖像的數(shù)目只有2幀,預(yù)測結(jié)構(gòu)可以是IPP結(jié)構(gòu)、IB…BP結(jié)構(gòu)[1]。在H.264/AVC標(biāo)準(zhǔn)中,參考圖像的數(shù)目最多可達(dá)到15幀,預(yù)測結(jié)構(gòu)可以是IPP預(yù)測結(jié)構(gòu),IB…BP預(yù)測結(jié)構(gòu)及層次 B幀(Hierarchical B)預(yù)測結(jié)構(gòu)。
為了論述不同預(yù)測方式的編碼性能,下面從兩方面進(jìn)行表述:
1)相同預(yù)測結(jié)構(gòu)的前提下,參考圖像數(shù)目的變化帶來編碼增益的變化。Thomas Wiegand等在文章[2]提到:在H.263平臺上,相同預(yù)測結(jié)構(gòu)前提下,例如IPP預(yù)測結(jié)構(gòu)。對Foreman序列,采取多參考圖像技術(shù),在相同碼率情況下,圖像客觀質(zhì)量PSNR最多可以提高2 dB;對Mother-Daughter序列,采取多參考圖像技術(shù),在相同碼率情況下,圖像客觀質(zhì)量PSNR最多可以提高1.5 dB。
2)相同參考圖像數(shù)目前提下,不同預(yù)測結(jié)構(gòu)帶來編碼增益的變化。
在相同參考圖像數(shù)目前提下,以參考圖像為2幀為例,在H.264/AVC平臺上,相對于IPP預(yù)測結(jié)構(gòu),IB…BP預(yù)測結(jié)構(gòu)對大部分序列,相同碼率情況下,其圖像客觀質(zhì)量PSNR平均提高了1~2 dB左右。
在相同參考圖像數(shù)目前提下,以參考圖像為5幀為例,在H.264/AVC平臺上,Heiko Schwarz在文章[3]提到:相對于IB…BP預(yù)測結(jié)構(gòu),層次B幀預(yù)測結(jié)構(gòu)對大部分序列,相同碼率情況下,其圖像客觀質(zhì)量PSNR平均提高了1 dB左右。
為了進(jìn)一步提高視頻編碼效率,筆者對層次B幀預(yù)測結(jié)構(gòu)進(jìn)行研究發(fā)現(xiàn):針對不同運(yùn)動特性的圖像序列,選擇不同圖像組大小(GoP Size,采用符號SGoP)的層次 B幀預(yù)測結(jié)構(gòu)對其進(jìn)行編碼,編碼性能差異較大。因此對視頻序列采取自適應(yīng)圖像組大小的層次B幀預(yù)測結(jié)構(gòu)能夠進(jìn)一步提高視頻壓縮效率。基于此,提出了基于層次B幀預(yù)測結(jié)構(gòu)的自適應(yīng)圖像組算法。
圖1給出了4級層次B幀預(yù)測結(jié)構(gòu)示意圖。在層次B幀預(yù)測結(jié)構(gòu)中,定義關(guān)鍵幀為:編碼順序在該幅圖像之前的圖像,解碼顯示順序也在該幅圖像之前,滿足此特點(diǎn)的該幅圖像即為關(guān)鍵幀。圖1中的第0幀和第8幀為關(guān)鍵幀,關(guān)鍵幀可以采用幀內(nèi)預(yù)測編碼或前向幀間預(yù)測編碼方式。定義時間上相鄰的兩個關(guān)鍵幀之間的圖像序列為1個圖像組(Group of Picture,GoP)。1個圖像組中包含的圖像幀數(shù)為GoP Size。按照此定義,圖1所示的4級層次B幀預(yù)測結(jié)構(gòu)的圖像組大小為8。

圖1 4級層次 B預(yù)測結(jié)構(gòu)示意圖
在層次B幀預(yù)測結(jié)構(gòu)中,兩個關(guān)鍵幀之間的B幀是分等級的。例如,在圖1中,顯示順序第4幀的B1圖像處于第1級;顯示順序第2幀,第6幀的B2圖像處于第2級;顯示順序第1幀,第3幀,第5幀,第7幀的B3圖像處于第3級。每個等級的B幀只能選擇等級比其低并且在時間上與其相鄰的圖像作為其參考圖像。圖1中標(biāo)示了不同等級的B幀參考與被參考的關(guān)系 (這里,圖1中每個B幀的參考圖像數(shù)目定義為2幀)。第1等級的B幀只能選擇關(guān)鍵幀 (第0幀和第8幀)作為其參考圖像;第2等級的B幀只能選擇比其等級低的圖像(如關(guān)鍵幀和第1等級的B幀)作為其參考圖像。如此類推,可得不同等級B幀的參考關(guān)系。
相對于IB…BP預(yù)測結(jié)構(gòu),層次B幀預(yù)測結(jié)構(gòu)由于充分利用了預(yù)測結(jié)構(gòu)的靈活性大大提高了視頻編碼效率。但是,筆者注意到:對不同運(yùn)動特性的圖像序列,選擇不同圖像組大小的層次B幀預(yù)測結(jié)構(gòu)對其進(jìn)行編碼,編碼性能差異較大。表1給出具體實(shí)驗(yàn)數(shù)據(jù)。

表1 不同圖像組大小(SGoP)的編碼性能比較
表1中給出了常用碼率情況下,測試序列對應(yīng)不同圖像組大小的層次B幀預(yù)測結(jié)構(gòu)的編碼性能。從表1可見,對序列Paris.cif和Mobile.cif采用圖像組大小為32能取得較好的編碼性能。序列Bus.cif采用圖像組大小為8能取得較好的編碼性能,序列Crew.cif采用圖像組大小為4能取得較好的編碼性能。其中,對序列Mobile.cif,采用圖像組大小為32相對于圖像組大小為4,編碼性能要高0.4 dB。對序列Crew.cif,采用圖像組大小為32相對于圖像組大小為4,編碼性能則低1 dB。
根據(jù)實(shí)際序列所具有的運(yùn)動特性對應(yīng)表1所給實(shí)驗(yàn)結(jié)果進(jìn)行分析,可以得出:對運(yùn)動變化比較劇烈或復(fù)雜的圖像序列用較小的圖像組大小會取得較好的編碼性能,對運(yùn)動變化比較緩慢的圖像序列,用較大的圖像組大小能取得較好的編碼性能。
具體原因?yàn)椋簩σ粋€運(yùn)動變化比較劇烈的圖像序列,當(dāng)采取較大的圖像組大小進(jìn)行編碼時,可能會出現(xiàn)以下2種情況:
1)由于運(yùn)動矢量搜索范圍的限制,對關(guān)鍵幀或等級較低的B幀,如圖1所示的顯示順序第8幀(關(guān)鍵幀,采用P幀編碼)或第4幀(第1等級的B幀),在編碼過程中可能會采取不合適的運(yùn)動矢量進(jìn)行預(yù)測編碼,這將影響該幀圖像的編碼性能。由于該幀的編碼性能不好,將導(dǎo)致下一級的B幀圖像預(yù)測編碼效率降低。
2)由于運(yùn)動矢量搜索范圍的限制,對關(guān)鍵幀或等級較低的B幀,在編碼過程可能會找不到合適的匹配塊,這時可能會采取幀內(nèi)預(yù)測模式對該圖像塊進(jìn)行編碼。這將影響該幀圖像的編碼性能。同樣,由于該幀的編碼性能不好,將導(dǎo)致下一級B幀圖像編碼效率降低。
在這種情況下,如果采取較小的圖像組大小,由于當(dāng)前編碼圖像和參考圖像的時間距離不遠(yuǎn),從而能夠得到較高的編碼效率。
因此,在對圖像序列采取層次B幀預(yù)測結(jié)構(gòu)進(jìn)行編碼時,采用符合序列特性的自適應(yīng)圖像組大小的技術(shù)可以進(jìn)一步提高視頻編碼效率。在具體選擇圖像組大小時,本文通過實(shí)驗(yàn)觀察發(fā)現(xiàn),可以通過運(yùn)動矢量的絕對值大小和幀內(nèi)預(yù)測模式圖像塊的選取比例來判斷選擇相應(yīng)的圖像組大小。
下面給出基于H.264/AVC平臺,層次B幀預(yù)測結(jié)構(gòu)采取不同圖像組大小編碼時,關(guān)鍵幀P幀(例如,圖1中圖像組大小為8時的第8幀)的運(yùn)動矢量絕對值均值和幀內(nèi)預(yù)測模式圖像塊選擇比例。表2的實(shí)驗(yàn)結(jié)果是在運(yùn)動矢量搜索范圍為[-96,96]時測試所得。

表2 不同圖像組大小的參數(shù)值
從表2所列不同圖像組大小的參數(shù)值和表1所列的不同圖像組大小的編碼性能對應(yīng)關(guān)系可知:完全可以根據(jù)上述兩個參數(shù)來對層次B幀預(yù)測結(jié)構(gòu)的圖像組大小進(jìn)行自適應(yīng)選擇。
對大量圖像序列進(jìn)行分析發(fā)現(xiàn):視頻序列的運(yùn)動特性都具有一定的時間延續(xù)性。一般情況下,如果視頻序列的運(yùn)動特性都具有一定的時間延續(xù)性。一般情況下,如果視頻序列前一個GoP運(yùn)動比較緩慢,則緊接著的后一個GoP運(yùn)動不會馬上變得很快。因此,可以將前一個圖像組大小作為后一個圖像組大小的預(yù)測初始值。
在用自適應(yīng)圖像組大小的層次B幀預(yù)測結(jié)構(gòu)編碼時,首先要確定圖像組大小的大小,確定了圖像組大小之后,這個GoP之間的圖像序列編碼順序和參考關(guān)系就能確定下來,從而可以完成這個GoP的編碼。具體的編碼步驟為:
1)用自適應(yīng)圖像組大小的層次B幀預(yù)測結(jié)構(gòu)進(jìn)行編碼時,假設(shè)上一個圖像組大小為2p,并已經(jīng)編碼。則有下一個圖像組大小的預(yù)測值為2p,如圖2所示,首先將距離上一個GoP的最后一個關(guān)鍵幀的幀間距離為2p的圖像設(shè)置為關(guān)鍵幀,對其采取前向幀間預(yù)測編碼(即P幀預(yù)測編碼)。

圖2 基于層次B幀預(yù)測的自適應(yīng)圖像組大小編碼過程
2)統(tǒng)計該編碼圖像中采用幀內(nèi)預(yù)測模式塊的所占比例λIntraRatio和運(yùn)動矢量絕對值的平均值A(chǔ)vg(|MV|)。
4)對參數(shù)λ按照如下方式進(jìn)行判決

判決閾值 λ0,λ1,λ2,λ3可在實(shí)際編碼中,根據(jù)具體的編碼配置條件訓(xùn)練可得。根據(jù)參數(shù)λ所在的取值范圍,可以對圖像組大小進(jìn)行選取。
5)確定更新的圖像組大小之后,如果圖像組大小與預(yù)測值相同,則可接著第一步繼續(xù)操作。首先將已編碼的關(guān)鍵幀碼流直接輸出,然后對這個GoP按照圖像組大小為2p的層次B幀預(yù)測結(jié)構(gòu)進(jìn)行編碼。
6)如果圖像組大小與預(yù)測值不同,假設(shè)為2p-k。則將距離上一個GoP的最后一個關(guān)鍵幀的幀間距離為2p-k的圖像設(shè)置為關(guān)鍵幀,然后對這個GoP按照圖像組大小為2p-k的層次B幀預(yù)測結(jié)構(gòu)進(jìn)行編碼。
7)重復(fù)步驟1)~6),可以完成整段圖像序列的自適應(yīng)圖像組大小層次B幀預(yù)測編碼。
為了衡量所提出的基于層次 B幀結(jié)構(gòu)的自適應(yīng)圖像組大小算法的編碼性能,將該技術(shù)集成到參考軟件JM14.2中。為了使測試序列中既包含運(yùn)動變化比較快的視頻片斷也包含運(yùn)動變化比較緩慢的視頻片斷 (這種情況在實(shí)際編碼中經(jīng)常出現(xiàn)),將幾個視頻序列進(jìn)行連接,形成一個長序列。其中長序列1由序列Paris.cif(288幀,30 Hz),序列 Crew.cif (128 幀,30 Hz)和 Husky.cif (250幀,30 Hz)連接而成。長序列2由序列 Mobile.cif(288幀 ,30 Hz),Bus.cif(128 幀 ,30 Hz), Dancer.cif (228幀,30 Hz)連接而成。測試條件如表3所示。

表3 主要測試條件
與固與圖像組大小的層次B幀預(yù)測結(jié)構(gòu)相比,提出的基于層次B幀結(jié)構(gòu)的自適應(yīng)圖像組大小預(yù)測編碼技術(shù)的編碼性能比較結(jié)果如表4所示[4]。

表4 基于層次 B幀結(jié)構(gòu)的自適應(yīng)圖像組大小算法編碼性能的改善效果
由表4可見,采用所提出的基于層次B幀結(jié)構(gòu)的自適應(yīng)圖像組大小編碼技術(shù)相對于固定圖像組大小的層次B幀編碼技術(shù)在編碼性能上有明顯的提高。針對序列1,自適應(yīng)圖像組大小編碼技術(shù)相對于固定圖像組大小為32的層次B幀編碼技術(shù)編碼增益為0.45 dB;針對序列2,自適應(yīng)圖像組大小編碼技術(shù)相對于固定圖像組大小為4的編碼技術(shù)編碼增益為0.60 dB。由此可見,采用筆者提出的自適應(yīng)圖像組大小編碼技術(shù)能夠取得很好的編碼增益。
為了比較提出的基于層次B幀結(jié)構(gòu)的自適應(yīng)圖像組大小編碼技術(shù)與固定圖像組大小為4,8,16或32時的層次B幀編碼技術(shù)編碼復(fù)雜度,本文針對長序列1在相同硬件運(yùn)行環(huán)境下(服務(wù)器硬件配置:CPU 3.0 GHz,內(nèi)存1.0 Gbyte),分別統(tǒng)計了上述幾種算法的編碼器編碼時間,如表5所示。

表5 編碼器編碼時間比較
由表5可知,提出的基于層次B幀的自適應(yīng)圖像組大小算法相對于固定圖像組大小的層次B幀算法,編碼時間增加了5%~10%左右。
本文提出了基于層次B幀預(yù)測結(jié)構(gòu)的自適應(yīng)圖像組大小編碼算法并給出了具體的編碼過程和圖像組大小的選取方法。相對于固定圖像組大小的層次B幀預(yù)測編碼技術(shù),筆者提出的方法在編碼時間增加了5%~10%的前提下,編碼性能提高了0.60 dB左右。
[1]梁凡.AVS視頻標(biāo)準(zhǔn)的技術(shù)特點(diǎn)[J].電視技術(shù),2005(7):12-15.
[2]WIEGAND T,ZHANG Xiaozheng,GIROD B.Long term memory motion compensated prediction[J].IEEE Trans.Circuits and Systems for Video Technology,1999,9(1):70-84.
[3]SCHWARZ H,MARPE D,WIEGAND T.Hierarchical B pictures[R].[S.l.]:ISO/IEC JTC1 and ITU-T, JVT-P014,2005.
[4]BJONTEGAARD G.CalculationofaveragePSNR differences between RD-curves[R].Austin, TX, USA: ITU-T SG16/Q6,M33,2001.