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

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

表1 不同圖像組大小(SGoP)的編碼性能比較
表1中給出了常用碼率情況下,測試序列對應不同圖像組大小的層次B幀預測結構的編碼性能。從表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。
根據實際序列所具有的運動特性對應表1所給實驗結果進行分析,可以得出:對運動變化比較劇烈或復雜的圖像序列用較小的圖像組大小會取得較好的編碼性能,對運動變化比較緩慢的圖像序列,用較大的圖像組大小能取得較好的編碼性能。
具體原因為:對一個運動變化比較劇烈的圖像序列,當采取較大的圖像組大小進行編碼時,可能會出現以下2種情況:
1)由于運動矢量搜索范圍的限制,對關鍵幀或等級較低的B幀,如圖1所示的顯示順序第8幀(關鍵幀,采用P幀編碼)或第4幀(第1等級的B幀),在編碼過程中可能會采取不合適的運動矢量進行預測編碼,這將影響該幀圖像的編碼性能。由于該幀的編碼性能不好,將導致下一級的B幀圖像預測編碼效率降低。
2)由于運動矢量搜索范圍的限制,對關鍵幀或等級較低的B幀,在編碼過程可能會找不到合適的匹配塊,這時可能會采取幀內預測模式對該圖像塊進行編碼。這將影響該幀圖像的編碼性能。同樣,由于該幀的編碼性能不好,將導致下一級B幀圖像編碼效率降低。
在這種情況下,如果采取較小的圖像組大小,由于當前編碼圖像和參考圖像的時間距離不遠,從而能夠得到較高的編碼效率。
因此,在對圖像序列采取層次B幀預測結構進行編碼時,采用符合序列特性的自適應圖像組大小的技術可以進一步提高視頻編碼效率。在具體選擇圖像組大小時,本文通過實驗觀察發現,可以通過運動矢量的絕對值大小和幀內預測模式圖像塊的選取比例來判斷選擇相應的圖像組大小。
下面給出基于H.264/AVC平臺,層次B幀預測結構采取不同圖像組大小編碼時,關鍵幀P幀(例如,圖1中圖像組大小為8時的第8幀)的運動矢量絕對值均值和幀內預測模式圖像塊選擇比例。表2的實驗結果是在運動矢量搜索范圍為[-96,96]時測試所得。

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

圖2 基于層次B幀預測的自適應圖像組大小編碼過程
2)統計該編碼圖像中采用幀內預測模式塊的所占比例λIntraRatio和運動矢量絕對值的平均值Avg(|MV|)。
4)對參數λ按照如下方式進行判決

判決閾值 λ0,λ1,λ2,λ3可在實際編碼中,根據具體的編碼配置條件訓練可得。根據參數λ所在的取值范圍,可以對圖像組大小進行選取。
5)確定更新的圖像組大小之后,如果圖像組大小與預測值相同,則可接著第一步繼續操作。首先將已編碼的關鍵幀碼流直接輸出,然后對這個GoP按照圖像組大小為2p的層次B幀預測結構進行編碼。
6)如果圖像組大小與預測值不同,假設為2p-k。則將距離上一個GoP的最后一個關鍵幀的幀間距離為2p-k的圖像設置為關鍵幀,然后對這個GoP按照圖像組大小為2p-k的層次B幀預測結構進行編碼。
7)重復步驟1)~6),可以完成整段圖像序列的自適應圖像組大小層次B幀預測編碼。
為了衡量所提出的基于層次 B幀結構的自適應圖像組大小算法的編碼性能,將該技術集成到參考軟件JM14.2中。為了使測試序列中既包含運動變化比較快的視頻片斷也包含運動變化比較緩慢的視頻片斷 (這種情況在實際編碼中經常出現),將幾個視頻序列進行連接,形成一個長序列。其中長序列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幀預測結構相比,提出的基于層次B幀結構的自適應圖像組大小預測編碼技術的編碼性能比較結果如表4所示[4]。

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

表5 編碼器編碼時間比較
由表5可知,提出的基于層次B幀的自適應圖像組大小算法相對于固定圖像組大小的層次B幀算法,編碼時間增加了5%~10%左右。
本文提出了基于層次B幀預測結構的自適應圖像組大小編碼算法并給出了具體的編碼過程和圖像組大小的選取方法。相對于固定圖像組大小的層次B幀預測編碼技術,筆者提出的方法在編碼時間增加了5%~10%的前提下,編碼性能提高了0.60 dB左右。
[1]梁凡.AVS視頻標準的技術特點[J].電視技術,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.