本發明涉及一種avs2幀間預測模式快速判決方法,是一種基于編碼塊的時空域相關性和紋理特種的算法。
背景技術:
avs2是新一代國家自主音視頻編碼標準,其壓縮效率相比上一代標準(簡稱avs1)和國際標準h.264/avc提高了約一倍,特別在場景視頻編碼方面有更高的性能提升。avs2采用了很多先進的編碼技術,最具代表性的是靈活的四叉樹劃分結構和多樣化的預測模式。其中在幀內預測方面,亮度有30個方向預測模式及3個非方向預測模式;在幀間預測方面則添加了雙前向預測等幀間預測模式。先進的編碼技術使編碼效率提高了,但是編碼過程更加復雜了。例如在采用四叉樹劃分結構進行編碼時,如果最小編碼單元的尺寸為8×8,則每個64×64的塊共有1+174=83522種可能的劃分方式。而且avs2采用了多參考幀技術,幀間預測的時候每個編碼塊都需要遍歷緩沖區中的參考幀以找到最佳參考塊,進一步增加了復雜度。
大量耗時的計算嚴重影響了avs2在實際中的應用。avs2在幀間預測過程中,并沒有考慮序列的紋理特征,都是遍歷嘗試所有的預測模式以找到最佳模式。實際上,時域和空域相鄰的編碼塊的紋理特征都非常接近,它們采用相同劃分模式的概率也很大。而且各模式之間也有一定的聯系,比如當水平對稱模式的率失真比垂直對稱的率失真小時,那么垂直非對稱模式不太可能是最佳模式。以往針對這方面的研究也有不少,如把周圍已編碼圖像塊的預測模式作為候選模式對當前正在編碼的塊進行預測,雖然這些方法對減小當前塊的模式計算有一定效果,但是往往因為信息利用得不全產生誤差,而且誤差會對預測下一編碼單元產生影響。有的算法還會設定一個閾值用于判斷是否進行預測,該閾值設定的精確性非常關鍵,其精確度直接影響模式選擇的效果。
技術實現要素:
本發明的目的是提供一種avs2幀間預測模式快速判決算法,該方法利用編碼單元(cu,codingunit)以及預測單元(pu,predictionunit)時域與空域的信息再結合編碼單元的紋理信息來預測其劃分方式,從而在幀間編碼過程中避免遍歷所有劃分模式。
為達到上述目的,本發明的構思是:
對當前cu進行模式預測之前,可以選取多個時域、空域相鄰塊作為參考塊,并且從參考塊中選取一個和當前編碼塊紋理最接近的參考塊作為最佳參考塊。接著分析當前cu的紋理特性,根據紋理特性判斷進行水平對稱劃分還是進行垂直對稱劃分,同時將最佳參考塊的預測模式作為對比,避免產生差錯。在確定了水平還是垂直劃分之后,進一步分析cu的紋理特征,決定是否進行非對稱劃分。通過該算法可以使幀間預測的復雜度大大減小,而且最佳參考塊的存在保證了算法的準確性。
根據以上構思,本發明的技術方案是:
一種avs2幀間預測模式快速判決方法,操作步驟如下:
(1)對當前cu進行編碼前,選取上一幀對應位置相同深度的cu,以及同一幀左邊和上邊相鄰位置同一深度的cu作為參考cu,計算各參考cu和當前cu的紋理復雜度,并從所有的參考cu中選擇一個與當前cu紋理最接近的作為最佳參考塊,記錄最佳參考塊的劃分模式為mode0;
(2)計算no_split模式的率失真代價,并將當前cu的最佳預測模bestmode設為no_split模式;
(3)比較當前cu水平均方誤差msehor和垂直均方誤差msever的大小,若msehor<msever,跳轉到步驟(4);若msever<msehor,跳轉到步驟(5);
(4)若mode0為三種垂直劃分模式ver_sym、ver_left、ver_right中的一種,則計算水平對稱模式hor_sym和垂直對稱模式ver_sym的率失真代價,并且與當前最佳模式相比,選擇代價最小的模式作為最佳預測模式bestmode;否則只計算水平對稱模式hor_sym的率失真代價,并與當前最佳模式比較得到最佳模式bestmode;
(5)若mode0為三種水平劃分模式hor_sym、hor_up、hor_down中的一種,則計算垂直對稱模式ver_sym和水平對稱模式hor_sym的率失真代價,并且與當前最佳模式相比,選擇代價最小的模式作為最佳預測模式bestmode;否則只計算垂直對稱模式ver_sym的率失真代價,并與當前最佳模式比較得到最佳模式bestmode;
(6)若經過步驟(4)或步驟(5)之后最佳模式bestmode為no_split模式,則結束后續非對稱模式計算,跳轉到步驟(9);
(7)若經過步驟(4)或步驟(5)之后最佳模式bestmode為水平對稱模式hor_sym,則計算水平非對稱模式hor_up(hor_down)上方位置pu的水平均方誤差mseupup(msedownup)和下方位置pu的水平均方誤差mseupdown(msedowndown)。若mseupup<mseupdown(msedowndown<msedownup),則對水平非對稱模式hor_up(hor_down)進行模式計算;否則跳過該模式。
(8)若經過步驟(4)或步驟(5)之后最佳模式bestmode為垂直對稱模式ver_sym,則計算垂直非對稱模式ver_left(ver_right)左側位置pu的垂直均方誤差mseleftleft(mserightleft)和右側位置pu的垂直均方誤差mseleftright(mserightright)。若mseleftleft<mseleftright(mserightright<mserightleft),則對垂直非對稱模式ver_left(ver_right)進行模式計算;否則跳過該模式。
(9)比較其它剩余模式。
上述步驟(1)中編碼塊的紋理復雜度本發明使用最小均方誤差mse來表示。可以利用公式(1)和(2)計算cu垂直方向和水平方向的均方誤差。
式中,msever和msehor表示cu垂直方向和水平方向的均方誤差;w和h分別是待編碼cu的寬度和高度(以像素點為單位);α、β是系數值,用于調整不同劃分模式下的水平與垂直方向上的像素點數,計算msever和msehor時,α和β的值都為1;p(x,y)表示cu像素點的值;mx和my在計算msever和msehor時分別表示當前cu的第x+1行的像素點的平均值和第y+1列的像素點的平均值。
兩個編碼塊紋理特征的相似度,可以利用水平均方誤差msehor和垂直均方誤差msever的絕對誤差的和來表示,如公式(3)。abs越小就表示兩個編碼塊的紋理特征越接近。
abs=|msehor1-msehor2|+|msever1-msever2|(3)
上述步驟(2)中的率失真代價的計算公式為:
j(s,c,mode|qp,λmode)=sad(s,c,mode|qp)+λmotionr(s,c,mode|qp)(4)
式中sad表示在給定量化參數qp的條件下,該模式的預測單元與重建單元塊的差值平方和;s是當前預測單元;c是重建圖像塊;mode是所選的幀間編碼模式;r是該模式下編碼所需的比特數;拉格朗日因子λmotion是根據量化參數qp獲得的。
上述步驟(3)中作出判決的原理:如果圖像某個方向上像素的紋理復雜度(mse)較小,也就是起伏程度較小,那么這個方向上的像素屬于同一對象的概率就較大。
上述步驟(4)和(5)中使用最佳參考塊的預測模式mode0是為了避免因為外部因素而產生錯誤判斷;比如由于光線等其他外部因素的影響可能導致一些并不屬于同一個對象的像素點具有比較接近的像素值。
上述步驟(6)中若水平對稱劃分模式hor_sym和垂直劃分模式ver_sym的率失真代價都比no_split大,那么水平非對稱和垂直非對稱劃分也很可能不會是最佳模式。
上述步驟(7)中若當前最佳模式為水平對稱模式,則進一步分析水平非對稱模式下預測單元pu的紋理復雜度,并且根據pu的紋理特征決定是否進行各非對稱模式的計算,而不是遍歷所有水平非對稱模式;分析水平非對稱的兩種模式hor_up和hor_down時,使用公式(2),并用mseupup和mseupdown分別代表hor_up模式下的上下塊的mse,α的值都為1,β的值分別為0.25和0.75;用msedownup和msedowndown分別代表hor_down模式下的上下塊的mse,α的值都為1,β的值分別為0.75和0.25;計算這4個pu的mse時mx表示當前pu的第x+1行像素點的平均值。
上述步驟(8)中若當前最佳模式為垂直對稱模式,則進一步分析垂直非對稱模式下預測單元pu的紋理復雜度,并且根據pu的紋理特征決定是否進行各非對稱模式的計算,而不是遍歷所有垂直非對稱模式;分析垂直非對稱的兩種模式ver_left和ver_right時,使用公式(1),并用mseleftleft和mseleftright分別代表ver_left模式下的左右塊的mse,α的值分別為0.25和0.75,β的值都為1;用mserightleft和mserightright分別代表ver_right模式下的左右塊的mse,α的值分別為0.75和0.25,β的值都為1;計算這4個pu的mse時my表示當前pu第y+1列像素點的平均值。
上述步驟(9)中的剩余模式包括skip模式和split模式。
本發明與現有技術相比較,具有如下顯而易見的突出實質性特點和顯著技術進步:
本發明針對avs2幀間編碼復雜度的問題,提出一種快速模式判決的方法。在進行幀間編碼時,首先計算編碼塊水平方向和垂直方向的紋理復雜度,若水平方向的紋理復雜度較小則計算水平對稱劃分模式(hor_sym),否則計算垂直對稱模式(ver_sym)。同時使用最佳參考塊的預測模式作為參考,避免因為外部因素而產生錯誤判斷。若水平對稱或垂直對稱為當前最佳模式,則進一步分析水平非對稱或垂直非對稱模式下pu的紋理,并根據紋理特征選擇是否進行各非對稱模式的計算。此種方法最多可以減少5種模式計算,最少也可以減少3種模式計算,使幀間編碼復雜度大大減小。更重要的是,該算法不需要設定閾值,這樣產生誤差的概率就很小,而且在利用紋理特征進行模式判決時,利用最佳參考塊作比較,這樣進一步保證了算法的準確性。
附圖說明
圖1是本發明的基于紋理復雜度和時空域相關性的avs2幀間快速模式判決方法流程圖。
具體實施方式
下面結合附圖,對本發明的具體實施例做進一步的說明。
在計算機平臺上avs2參考代碼的幀間編碼部分編程實現本發明中的方法,具體的實現步驟如圖1所示。步驟如下:
(1)對當前cu進行編碼前,選取上一幀對應位置相同深度的cu,以及同一幀左邊和上邊相鄰位置同一深度的cu作為參考cu,計算各參考cu和當前cu的紋理復雜度,并從所有的參考cu中選擇一個與當前cu紋理最接近的作為最佳參考塊,記錄最佳參考塊的劃分模式為mode0;
(2)計算no_split模式的率失真代價,并將當前cu的最佳預測模bestmode設為no_split模式;
(3)比較當前cu水平均方誤差msehor和垂直均方誤差msever的大小,若msehor<msever,跳轉到步驟(4);若msever<msehor,跳轉到步驟(5);
(4)若mode0為三種垂直劃分模式ver_sym、ver_left、ver_right中的一種,則計算水平對稱模式hor_sym和垂直對稱模式ver_sym的率失真代價,并且與當前最佳模式相比,選擇代價最小的模式作為最佳預測模式bestmode;否則只計算水平對稱模式hor_sym的率失真代價,并與當前最佳模式比較得到最佳模式bestmode;
(5)若mode0為三種水平劃分模式hor_sym、hor_up、hor_down中的一種,則計算垂直對稱模式ver_sym和水平對稱模式hor_sym的率失真代價,并且與當前最佳模式相比,選擇代價最小的模式作為最佳預測模式bestmode;否則只計算垂直對稱模式ver_sym的率失真代價,并與當前最佳模式比較得到最佳模式bestmode;
(6)若經過步驟(4)或步驟(5)之后最佳模式bestmode為no_split模式,則結束后續非對稱模式計算,跳轉到步驟(9);
(7)若經過步驟(4)或步驟(5)之后最佳模式bestmode為水平對稱模式hor_sym,則計算水平非對稱模式hor_up(hor_down)上方位置pu的水平均方誤差mseupup(msedownup)和下方位置pu的水平均方誤差mseupdown(msedowndown)。若mseupup<mseupdown(msedowndown<msedownup),則對水平非對稱模式hor_up(hor_down)進行模式計算;否則跳過該模式。
(8)若經過步驟(4)或步驟(5)之后最佳模式bestmode為垂直對稱模式ver_sym,則計算垂直非對稱模式ver_left(ver_right)左側位置pu的垂直均方誤差mseleftleft(mserightleft)和右側位置pu的垂直均方誤差mseleftright(mserightright)。若mseleftleft<mseleftright(mserightright<mserightleft),則對垂直非對稱模式ver_left(ver_right)進行模式計算;否則跳過該模式。
(9)比較其它剩余模式。
利用avs2參考軟件rd14.0作為實驗平臺對多個視頻序列進行編碼,并且與原始遍歷所有模式的算法進行比較,并且計算在各量化參數qp下編碼時間time、峰值信噪比psnr及編碼比特率bit-rate的變化,實驗結果下表所示。
從上表可知,本文提出的基于時域、空域相關性以及紋理特征的幀間預測模式判決方法,可顯著降低幀間編碼時間。不同qp下平均編碼時間都超過34%的下降,同時編碼性能只有極小的損失。