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