康伏云,陳 磊,許城鋼,陶 曦,劉子豪
(北京郵電大學 信息與通信工程學院,北京 100876)
與幀間預測消除時間冗余不同,幀內預測利用當前幀已編碼像素進行預測,從而消除空間冗余。幀內預測是基于編碼單元進一步劃分的預測單元,采用有限個預測角度方向,根據圖像特征選擇出率失真代價最小的預測模式作為最佳預測方向。
為了更加精細化地劃分,得到更準確的預測值,AVS3在AVS2所采用的基于四叉樹(QT)的塊劃分結構基礎上,引入了二叉樹(BT)和擴展四叉樹(EQT)劃分方式,因此編碼單元、預測單元會出現非方形,如圖1所示。

圖1 塊劃分方式
圖1 從左至右的劃分方式依次為QT、水平BT、垂直BT、水平EQT、垂直EQT。
在此塊劃分基礎上,幀內預測的尺寸有:4×4、4×8、4×16、4×32、8×4、8×16、8×32及8×64等。最小塊為4×4,最大塊64×64。
多叉樹的劃分方式與非方形的編碼、預測單元可以更好地匹配各種不同紋理的圖像,但是劃分種類的增多大大增加了預測時判斷最終劃分和預測模式所需的時間。
1.2.1 幀內預測角度
為了更好地去除幀內冗余,AVS3在AVS2的33種角度模式基礎上提供了更豐富、細致的幀內預測模式。AVS3亮度預測塊幀內預測編碼采用像素插值技術,一共有66種模式,包括DC預測模式、Plane預測模式、Bilinear預測模式以及63種角度預測模式[1],如圖2所示。其中,預測模式12和24分別為垂直模式、水平模式。垂直模式是直接使用最上方的相鄰像素點的值作為PU中整列像素點的預測值。同理,水平模式作為整行像素點的預測值,使用的是最左側相鄰像素點的值。其中,Plane模式和DC模式適用于逐漸變化和平滑的內容塊。對于角度預測模式,預測值由給定方向的預測函數通過參考像素計算得到。

圖2 AVS3幀內預測模式
1.2.2 AVS3幀內預測角度選擇算法
隨著標準的不斷發展,預測角度越來越精細和復雜,為了降低遍歷的復雜度,編碼器中往往會加入針對幀內角度預測的選擇算法。以最新的AVS3為例,選擇算法主要分為3部分。
(1)粗 選 擇(Rough Mode Decision,RMD)。RMD具體步驟為先從非角度預測模式和4倍角模式(如表1所示)組成初始粗選模式候選列表作為輸入,粗選出最優的10個角度;然后對這10個角度計算左右相鄰的2倍角,更新得到最優6個角度;對6個角度計算左和右的1倍角,更新得到最終進入率失真優化(Rate Distortion Optimization,RDO)的角度。

表1 AVS3幀內預測模式分類
(2)最可 能編碼 模 式(Most Probable Mode,MPM)。由于預測單元在空間上具有預測模式的相關性,不必每次都進行獨立編碼,可以按照一定規則確定候選模式集,這樣對于很多命中候選模式的PU,在編碼時只需傳輸模式集中的索引值即可,減少獨立編碼的冗余。
(3)率失真優化(Rate Distortion Optimization,RDO)過程。對候選模式集計算率失真優化,RD cost最小的預測模式作為最佳角度預測模式[2]。
該選擇算法大大減少了幀內預測時間復雜度,其基本思想是先進行粗選后細選。但其RMD過程需要遍歷18個角度,粗選的范圍仍然較大。本文提出的算法利用頻域DCT系數計算預測得到預測塊的紋理方向,更進一步地縮小粗選的遍歷 范圍。
幀內預測的基本思想是使用一幀圖像中相鄰像素的相關性來消除空間上的冗余,它主要分為塊劃分和模式判決兩個部分。不做任何加速處理的幀內預測需要對劃分進行遞歸,對模式進行窮舉,是一個非常耗時的過程。
視頻編碼中,對預測殘差進行二維DCT,可以將時域圖像轉為頻域能量分布圖,實現能量集中,從而去除空間冗余。DCT系數除了有能量集中的特性外,還可以反映原始圖像的紋理方向信息[3]。


式中:Fu,v代表DCT系數,f(i, j)表示像素值,N表示所做DCT變換塊的大小。
由式(1)~式(3)可得,每個DCT系數Fu,v都是塊內所有像素值的線性組合。DCT系數矩陣F0,0左上角的系數為直流系數,它表示塊的平均亮度。其余的系數都稱為交流系數,每個交流系數的值以一定的強度反映了一定方向上灰度值的變化。以8×8DCT系數的F1,0為例:

因為cos(π-θ)=cosθ,故:

F1,0的值取決于輸入塊的上下部分之間的垂直方向上的強度差。對于每個塊中的DCT系數來說,不同位置的系數反映了原始圖像中不同的方向信息,如果圖像塊在水平、垂直、對角方向具有明顯的邊緣特征,那么其變換后的DCT系數將相應地在水平、垂直、對角方向上的值較大。
基于以上推導,第1行DCT系數絕對值的大小代表了圖像垂直的紋理的強度,第1列的DCT系數代表了圖像水平紋理特性的強度。
有研究使用Energyv、Energyh分別表示原始待預測塊具有垂直或水平紋理特征的可能性。從而推導出圖像紋理方向為:

式中:變量θ表示圖像紋理方向與水平軸正向間角度值。
由以上理論基礎可知,DCT系數矩陣水平絕對值和與垂直絕對值和的反正切可以得到圖像的基本紋理角度。本文算法的基本思想是,根據預測塊DCT系數計算得到當前預測塊的紋理角度,從而在AVS3現有幀內預測角度選擇算法基礎上,減少進入粗選遍歷的角度模式數目,從而在盡可能小的性能損失情況下達到降低時間復雜度的目的。結合AVS3預測塊存在非方形的特點,需要利用方形小塊DCT系數特征組合得到預測塊的預測角度[4]。故算法需考慮DCT系數計算復雜度、DCT基礎塊大小以及組合方式。
算法需要計算圖像的DCT系數,需要盡可能地降低因計算DCT而引入的復雜度。AVS3塊劃分過程包含幀內預測,其塊劃分過程為一個自上而下的嘗試過程,若選擇在每次進入幀內預測前針對當前預測塊進行DCT計算,則會引入大量重復計算[5]。如圖3所示,對于一個8×4大小的塊,當嘗試不劃分即預測塊大小也為8×4時,需要將其劃分為a、b兩塊分別進行DCT計算,再進行組合得到當前8×4大小塊的預測角度。當下一次嘗試劃分時,a將作為一個獨立的4×4塊進入角度預測流程,將再次被計算一次DCT,b塊同理。相反,如果可以自下而上,先算出小塊的結果并保留,當遇到大塊時,讀取大塊范圍內的小塊結果,則會減少許多重復計算。

圖3 8×4塊劃分過程
定義a、b為基礎塊,將一幀圖像以基塊劃分計算所有基塊的DCT系數,并依據式(8)計算每個基塊的紋理角度保存于數組Angle[]中。
實驗證明,式(8)只適用于簡單、單一紋理。當圖像內紋理為一條或多條為同一個方向時,根據式(8)所得到的值能夠準確反映圖像塊的紋理方向。當圖像紋理方向比較復雜,塊內紋理方向有多個角度時,計算所得的角度并不能夠準確地反映紋理 方向。
現實生活中,視頻圖像的紋理復雜度也并非簡單的一個方向,但是當圖像塊盡可能小時,小塊內的紋理復雜度較低的概率會增大,故本算法選用AVS3幀內預測所支持的最小塊4×4塊為基礎塊做DCT變換,并以此組合得到大塊的角度,提升預測的準確度。
同時,AVS3支持的最小預測塊為4×4且所有預測塊寬高都是4的倍數,若使用非4×4塊為基礎塊,則會出現不可組合或不可使用的情況。
綜上以上分析,本文算法選擇使用4×4大小為基塊進行DCT計算。
當前預測塊大小為4×4時,可直接根據其DCT系數得到一個角度;當預測塊大小大于4×4時,使用加權平均的組合方式得到其預測角度。由式(8)計算出的角度在0到90之間,將此區間等分為6等份,統計落入每個區間的個數記錄為Interval[i],并由以下算法計算得到其紋理角度值:
angle_mid[i]=7.5*(2*i+1)
num_sum=cu_width/4*cu_height/4;
for(int i=0;i<6;i++){
s=interval[i]/num_sum*angle_mid[i];
angle+=s;}
其中,angle_mid[i]表示每個區間的中間值,num_sum表示當前預測塊內4×4塊個數,angle即為當前預測塊的紋理角度。
AVS3預測模式角度非0~180°內分布,基于上述得到的預測塊的紋理角度與AVS3的幀內預測RMD中模式的映射關系如表2所示。

表2 紋理角度與預測模式映射關系
上述算法原理的實現步驟如下:
(1)對當前幀以4×4為基本單位做DCT變換,根據式(8)計算其紋理角度,保存于數組angle[];
(2)對當前預測塊讀取其范圍內基塊角度,按照算法計算得到其加權平均角度angle;
(3)根據angle大小依據表2初始化其RMD過程中的rmd_search_step[];
(4)遍歷rmd_search_step[],選擇出最優的5個角度;
(5)對這5個角度計算左右相鄰的2倍角,更新得到3個最優角度,對3個角度計算左和右的1倍角,更新得到最終進入RDO的角度。
在AVS3參考軟件HPM6.0基礎上加入本算法進行測試,并與HPM6.0標注算法(開啟內置的快速選擇算法)進行比較,實驗條件如表3所示。分析性能損失采用BD-rate來評價編碼質量好壞。BDrate由編碼比特率和Y、U、V分量的峰值信噪比(Peak Signal to Noise Ratio,PSNR)決定。若BDrate的數值為正值,說明編碼比特率有上升或者PSNR下降,編碼性能相比參考軟件下降;反之,則說明編碼性能有提升。編碼時間ΔT同理。實驗結果如表4、表5所示。

表3 測試條件

表4 本文算法與標準算法實驗對比結果

表5 本文算法與標準算法實驗對比平均結果
從表5、表6可以看出,本文提出的基于圖像頻域紋理特征的幀內預測模式快速選擇算法可顯著降低幀內編碼時間,且編碼性能只有極小的損失。針對不同分辨率,平均編碼時間都有超過30%的下降,分辨率越高,時間復雜度降的越多。特別地,對于紋理較為豐富清晰的序列,本算法的性能損失會更少,如720 P的City、1 080 P的MarketPlace及 2 160 P的ParkRunning3。因為該算法采用4×4基塊進行組合得到預測塊的紋理角度,所以紋理越復雜,其被最終被劃分為小塊的可行性越高,小塊組合預測也就越準確。同時,分辨率越高,其紋理方向越分明,預測也就越準確。
本文針對AVS3幀內預測模式細分帶來的編碼復雜度增加問題,利用頻域DCT系數提取出圖像的紋理角度信息,縮小幀內角度預測RMD過程中遍歷的角度模式范圍,達到降低編碼時間復雜度的目的。實驗結果表明,本文算法在參考軟件 HPM6.0開啟快速選擇算法的基礎上,能降低編碼時間平均約39%,而Y分量的編碼性能只損失平均約1.09%,U、V性能損失更小。且高分辨率性能損失更小,編碼時間復雜度降得更低,這有助于AVS3的實時編碼及在高清超高清領域的應用。