專利名稱::一種用于h.264視頻編碼的聯(lián)合分?jǐn)?shù)點運動估計和插值方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于視頻編碼的分?jǐn)?shù)點運動估計領(lǐng)域,特別是涉及一種用于11.264視頻編碼的聯(lián)合分?jǐn)?shù)點運動估計和插值方法。
背景技術(shù):
:現(xiàn)有的視頻編碼標(biāo)準(zhǔn)H.263、H.264、MPEG-4等都是建立在混合編碼的框架之上的,即既在時間域又在空間域上進(jìn)行的編碼。編碼時先利用幀間編碼消除時間域上的相關(guān)性,然后對時間域上的預(yù)測結(jié)果的殘差值進(jìn)行變換編碼,消除空間的相關(guān)性,最后進(jìn)行熵編碼消除統(tǒng)計上的冗余度。具體編碼過程如下首先通過運動估計得到當(dāng)前幀與參考幀宏塊之間的運動矢量,然后采用基于運動補(bǔ)償?shù)膸g預(yù)測得到宏塊之間的殘差值,接著對這些殘差值進(jìn)行二維變換,再對變換系數(shù)進(jìn)行量化,最后進(jìn)行熵編碼。運動估計通過在參考幀上搜索當(dāng)前宏塊的最佳估計來得到運動矢量,它包括整數(shù)點運動估計與分?jǐn)?shù)點運動估計兩種。整數(shù)點運動估計方法包括全搜索、鉆石型搜索、六邊形搜索、非均勻多層次六邊形格點整象素運動搜索方法等。通過整數(shù)點搜索得到當(dāng)前最優(yōu)整數(shù)點后,再進(jìn)行分?jǐn)?shù)點運動估計。分?jǐn)?shù)點運動估計的主要思想是先通過插值算法,計算出需要進(jìn)行運動估計的塊中整數(shù)點之間的像素的值,可以計算出l/2、l/4、l/8等精度的像素點;然后在這些分?jǐn)?shù)點構(gòu)成的塊中搜索最佳估計來得到分?jǐn)?shù)點運動向量。分?jǐn)?shù)點運動估計方法主要可以分為兩類。第一類是基于模型的分?jǐn)?shù)點運動估計算法,即在假設(shè)誤差平面符合某種數(shù)學(xué)模型的情況下提出的算法;第二類是基于預(yù)測的快速算法,這類算法利用相鄰塊之間運動向量的相關(guān)性,得到一個初始搜索點并依據(jù)成為最優(yōu)向量的概率大小的順序搜索不斷改進(jìn)搜索結(jié)果。要進(jìn)行分?jǐn)?shù)點運動估計的前提是需要先通過插值算法來得到分?jǐn)?shù)像素點的值。H.264采用一些2維可分離的濾波器來計算分?jǐn)?shù)點的值并通過低通濾波消除視頻信號的混疊。1/2精度像素點的插值采用的是基于整數(shù)點的6抽頭濾波器,1/4精度像素點則是采用基于整數(shù)點和1/2像素點的線性濾波器。因此現(xiàn)有的插值算法的1/4精度點對1/2精度點具有依賴關(guān)系?,F(xiàn)在主要使用的插值方法有全插值(FFPI)和X264的插值方法(XFPI)兩種。FFPI是在搜索前將整個參考幀的1/2和1/4分?jǐn)?shù)點都插值出來,XFPI是先插值出所有的1/2像素點,在對某一塊估計時才插出相應(yīng)的1/4精度點。分?jǐn)?shù)點運動估計對系統(tǒng)性能的提升十分明顯,在相同的情況下能夠提升23dB的視頻質(zhì)量或減少40%左右的碼率,但它插值時需要的計算量十分大,甚至可以占據(jù)68%的計算能力。同時,由于現(xiàn)有的插值算法對分?jǐn)?shù)點的計算有依賴關(guān)系,無法直接計算,如果通過推導(dǎo)得到直接通過整數(shù)點插值出所有分?jǐn)?shù)點的公式,則會有很多重復(fù)的計算。
發(fā)明內(nèi)容本發(fā)明的目的是為了克服現(xiàn)有分?jǐn)?shù)點運動估計和分?jǐn)?shù)點插值技術(shù)的不足,提出了一種聯(lián)合分?jǐn)?shù)點運動估計和分?jǐn)?shù)點插值的算法,在保持壓縮質(zhì)量和碼率幾乎不變的情況下,降低了運動估計的計算復(fù)雜度。為了實現(xiàn)上述發(fā)明目的,采用的技術(shù)方案如下—種用于H.264視頻編碼的聯(lián)合分?jǐn)?shù)點運動估計和插值方法,包括如下步驟步驟l)性價比優(yōu)先運動估計方法把分?jǐn)?shù)點運動估計的搜索區(qū)域,分成4組,并從高至低確定每一組的性價比優(yōu)先級,分?jǐn)?shù)點運動估計按照性價比優(yōu)先級的順序進(jìn)行,先檢查優(yōu)先級高的分?jǐn)?shù)點的值,再檢查優(yōu)先級低的值,如果同時有相同優(yōu)先級的搜索點,則按照順時針方向檢查;步驟2)性價比優(yōu)先插值方法在進(jìn)行分?jǐn)?shù)點插值操作時,根據(jù)性價比優(yōu)先級的高低分組進(jìn)行先后插值。上述技術(shù)方案中,所述步驟1)把分?jǐn)?shù)點運動估計的搜索區(qū)域分成四組,并確定每組的性價比優(yōu)先級,第一級為與最優(yōu)整數(shù)點垂直和水平鄰接的4種1/4搜索點,第二級為與最優(yōu)整數(shù)點垂直和水平的2種1/2搜索點,第三級為與最優(yōu)整數(shù)點45度鄰接的4種1/4搜索點,第四級為在最優(yōu)整數(shù)點45度方向上的1/2搜索點以及與該1/2分?jǐn)?shù)點垂直和水平鄰接的4種1/4搜索點。在應(yīng)用不同的分?jǐn)?shù)運動估計模板時,按照模板上不同搜索點的性價比優(yōu)先級先后順序搜索。所述步驟2)先對第一級搜索點所涉及的分?jǐn)?shù)點插值,然后通過第一級搜索點所涉及的分?jǐn)?shù)點分別計算第二和第三級搜索點所涉及的分?jǐn)?shù)點,再通過第三級搜索點所涉及的分?jǐn)?shù)點計算第四級搜索點所涉及的分?jǐn)?shù)點。本發(fā)明還包括誤差消除方法,所述誤差消除方法包括截取誤差消除方法和舍入誤差消除方法,所述截取誤差消除方法用于消除插值計算過程中由于省略了H.264中定義的截取操作而引起的上下溢出誤差,所述舍入誤差消除方法是消除插值計算過程中由于省略了H.264中定義的舍入操作而引起的四舍五入誤差。進(jìn)一步的,所述的截取誤差消除方法,是對于由整數(shù)點直接計算第一級分?jǐn)?shù)點和由第二級分?jǐn)?shù)點直接計算第四級中的4種l/4分?jǐn)?shù)點,采用改變截取范圍的方式計算,即把截取范圍由(0255)變?yōu)?G/2(G+255)/2),其中G為最優(yōu)整數(shù)點的值或第二級分?jǐn)?shù)點的值。所述的舍入誤差消除方法,是對于由第一級分?jǐn)?shù)點計算第二級分?jǐn)?shù)點,采用保留第一級分?jǐn)?shù)點中間值的奇偶性的方法消除誤差。本發(fā)明根據(jù)最優(yōu)分?jǐn)?shù)點運動向量的分布概率,調(diào)整運動估計時搜索的優(yōu)先順序,藉此來提高搜索速度。并同時推導(dǎo)與此搜索順序相配合的分?jǐn)?shù)點插值算法,大幅地減少了插值點的計算。在保持編碼質(zhì)量和碼率不變的情況下,提高H.264的編碼速度。圖1為本發(fā)明的分?jǐn)?shù)搜索點和插值點的關(guān)系示意4圖2為本發(fā)明的分?jǐn)?shù)插值點的依賴關(guān)系示意圖3為本發(fā)明的分?jǐn)?shù)點計算示意圖。具體實施例方式下面結(jié)合附圖對本發(fā)明做進(jìn)一步的說明。本發(fā)明包括主要的兩個步驟性價比優(yōu)先運動估計算法;性價比優(yōu)先插值算法。同時,為了消除誤差,還可以包括第三個步驟使得插值計算的誤差消除方法。第一個步驟性價比的分?jǐn)?shù)點搜索算法,是指把分?jǐn)?shù)點運動估計的搜索區(qū)域,共7X7個候選搜索點,分成4組,并給出它們的性價比優(yōu)先級。分?jǐn)?shù)點運動估計按照性價比優(yōu)先級的順序進(jìn)行,先檢查優(yōu)先級高的分?jǐn)?shù)點的值,再檢查優(yōu)先級低的值;如果同時有相同優(yōu)先級的搜索點,則按照順時針方向檢查。如附圖i所示,標(biāo)號為"oo"的格子表示整數(shù)搜索點,而中心的整數(shù)搜索點表示最優(yōu)整數(shù)搜索點,其余的格子表示分?jǐn)?shù)搜索點。分?jǐn)?shù)運動估計則是在最優(yōu)整數(shù)搜索點相鄰的7X7-1=48個分?jǐn)?shù)搜索點(虛線框內(nèi)部的區(qū)域)中找出最優(yōu)位置。這48個搜索點按照所涉及分?jǐn)?shù)像素插值濾波器的不同分成15種分?jǐn)?shù)點,如附圖1所示,這15種分?jǐn)?shù)點的標(biāo)號分別為"01'、'02"'03"'10"'11"'12"'13"'20"'21"'22"'23"'30,,"31,,"32,,"33,,。而性價比優(yōu)先級是指將如附圖1所示的(0133)15種分?jǐn)?shù)點分成4類,每一類賦予它相應(yīng)的優(yōu)先級,如附表1所示。附表1:分?jǐn)?shù)插值點性價比優(yōu)先級優(yōu)先級插值點概率濾波器大小分?jǐn)?shù)點101,10,03,30高小與最優(yōu)整數(shù)點垂直和水平鄰接的4種1/4分?jǐn)?shù)點202,20中小與最優(yōu)整數(shù)點垂直和水平的2種1/2分?jǐn)?shù)點311,13,31,33中中與最優(yōu)整數(shù)點45度鄰接的4種1/4分?jǐn)?shù)點422,12,21,23,32低大在最優(yōu)整數(shù)點45度方向上的1/2分?jǐn)?shù)點以及與該1/2分?jǐn)?shù)點垂直和水平鄰接的4種1/4分?jǐn)?shù)點按照這種模板搜索順序可以用盡可能低的計算代價先搜索對失真率性能貢獻(xiàn)大的位置,但卻不能減少總體的搜索點數(shù)。因此,必須配合靜態(tài)場景提前終止策略和搜索模板裁剪策略使用才能達(dá)到減少搜索計算量的目的。靜態(tài)場景提前終止策略是指在當(dāng)前塊的整5數(shù)點運動向量為(O,O),同時當(dāng)前塊的殘差值與時域相鄰塊的最優(yōu)殘差很接近,則認(rèn)為當(dāng)前塊是靜止的,并跳過對當(dāng)前塊分?jǐn)?shù)點運動估計。搜索模板裁剪策略是指當(dāng)采用中心對稱的搜索模板(如鉆石型模板)搜索分?jǐn)?shù)點運動向量時,如果當(dāng)前分?jǐn)?shù)搜索點的殘差值模板中心的殘差值要小的話,關(guān)于中心對稱的相應(yīng)搜索點可以直接跳過。第二個步驟性價比優(yōu)先的插值方法,是按照附圖2的順序關(guān)系計算H.264標(biāo)準(zhǔn)中定義的分?jǐn)?shù)插值點。以附圖2推導(dǎo)得出每個分?jǐn)?shù)點的所用的濾波器,也即是對應(yīng)的插值公式,如附表2到附表5所示。附表中的像素點同時用字母和數(shù)字兩種方法表示,字母表明了一個唯一確定位置的像素點,而數(shù)字則表明了某個像素點與其左上角最接近的整數(shù)點之間的位移,表示的是一種類型的點。附表中的源像素點可以參考附圖3,這是H.264標(biāo)準(zhǔn)中對分?jǐn)?shù)點計算的示意圖,本發(fā)明在此使用同樣的源像素點標(biāo)識。圖中的灰色格子表示整數(shù)像素(用大寫字母表示),其余的格子表示分?jǐn)?shù)像素(用小寫字母表示)。分?jǐn)?shù)像素通過相鄰的整數(shù)像素計算得出,例如H.264標(biāo)準(zhǔn)中定義1/2分?jǐn)?shù)像素b的值就是整數(shù)像素E,F(xiàn),G,H,I,J與濾波器(1,_5,20,20,-5,1)的點積再整除32,即(E+(-5)*F+20*G+20*H+(-5)*I+J)>>5。附表2:第一級插值點的插值濾波器<table>tableseeoriginaldocumentpage7</column></row><table>附表3:第二級插值點的插值濾波器<table>tableseeoriginaldocumentpage8</column></row><table>!三級插值點的插值濾波器<table>tableseeoriginaldocumentpage8</column></row><table>附表5:第四級插值點的插值濾波器<table>tableseeoriginaldocumentpage8</column></row><table>為了避免不必要的插值計算,上述的插值方法采用按宏塊方式計算,而非按幀方式計算。按宏塊的方式計算是在整數(shù)運動估計后,只對當(dāng)前最優(yōu)整數(shù)運動向量周圍一個像素范圍的宏塊插值。按幀方式計算是在對當(dāng)前幀編碼前,就預(yù)先計算插值像素。當(dāng)一幀中需要分?jǐn)?shù)運動補(bǔ)償?shù)暮陦K少于20%的時候,采用按宏塊的方式比采用按幀的方式更節(jié)省計算資源。另外,由于分?jǐn)?shù)點插值計算的關(guān)聯(lián)性,不同種類的分?jǐn)?shù)點如果直接計算,其計算量會十分地龐大。但是利用其關(guān)聯(lián)性進(jìn)行計算,需要保證各個分?jǐn)?shù)點的前驅(qū)分?jǐn)?shù)點都必須已經(jīng)存在。如果前驅(qū)分?jǐn)?shù)點不存在,那么就必須先計算該前驅(qū)分?jǐn)?shù)點。這是一個回溯的過程,需要額外的空間存放各個分?jǐn)?shù)點的計算標(biāo)識以及額外的判斷計算。如果為每一個分?jǐn)?shù)點都存放一個標(biāo)志位,那么就需要耗費極大的內(nèi)存空間,同時也需要逐個分?jǐn)?shù)點判別。鑒于上面采用了按宏塊方式插值,同時本發(fā)明把插值點分成15種,那么每種分?jǐn)?shù)點應(yīng)該擁有一個標(biāo)志位,即每個宏塊有15個標(biāo)志位。分?jǐn)?shù)插值計算也不是逐點計算,而是同一種的分?jǐn)?shù)點,要不全計算要不都不計算。這樣的分?jǐn)?shù)點計算方法可以簡化因為分?jǐn)?shù)點插值計算關(guān)聯(lián)性而造成的回溯過程。第三個步驟是針對性價比優(yōu)先插值算法的誤差消除方法。因為H.264標(biāo)準(zhǔn)中對分?jǐn)?shù)點的計算除了線性濾波外還包括截取和舍入操作,所以直接通過新的濾波器計算出來的值會與11.264標(biāo)準(zhǔn)不相等。本發(fā)明提出了兩種誤差消除方法。首先,截取誤差發(fā)生在第l級分?jǐn)?shù)點的計算上,是由于截取操作(使像素值限定在0255的操作)而引起的。對于優(yōu)先級為1的分?jǐn)?shù)點(附表2中的點),因為采用直接從整數(shù)點的值的計算方式,所以可采用下面的方法消除誤差設(shè)Psum為六個整數(shù)點與相應(yīng)濾波系數(shù)的內(nèi)積,那么上面給出的方法的公式應(yīng)該修正為(以a(Ol)點為例):a=(Clip(Psum,G,G+255)+l)>>1(1)其中Clip(a,b,c)是指將a的值截取到[b,c]的范圍之內(nèi)。附表2中的其它分?jǐn)?shù)點也依照此方法計算。其次,舍入誤差發(fā)生在第2級分?jǐn)?shù)點的計算上,是由于計算分?jǐn)?shù)點過程中的整除操作而引起的。優(yōu)先級為2的分?jǐn)?shù)點(表3中的點),可以采用如下的方法消除誤差(以b(02)為例):在使用公式(1)計算a的時候,保留中間值的奇偶性flag=(Clip(Psum,G,G+255)+l)&l(2)用如下的式子代替原來的公式計算b(02):b=2a-G-flag(3)表3中的其它點也依照此方法消除舍入誤差。本發(fā)明在H.264的測試平臺JM的基礎(chǔ)上進(jìn)行了實驗,選擇了有代表性的CIF序列,包括運動劇烈與平緩等各種情況的序列,以此進(jìn)行測試。測試的結(jié)果表明在各種參數(shù)配置下,本發(fā)明在平均情況下是FFPS和CBFPS配合XFPI方法速度的1.75倍,同時保持PSNR變化為0且碼率只增大了0.02%。因此可以看到本發(fā)明可以在保持質(zhì)量和碼率的情況下極大的降低計算量,提高速度。9權(quán)利要求一種用于H.264視頻編碼的聯(lián)合分?jǐn)?shù)點運動估計和插值方法,其特征在于包括如下步驟步驟1)性價比優(yōu)先運動估計方法把分?jǐn)?shù)點運動估計的搜索區(qū)域,分成4組,并從高至低確定每一組的性價比優(yōu)先級,分?jǐn)?shù)點運動估計按照性價比優(yōu)先級的順序進(jìn)行,先檢查優(yōu)先級高的分?jǐn)?shù)點的值,再檢查優(yōu)先級低的值,如果同時有相同優(yōu)先級的搜索點,則按照順時針方向檢查;步驟2)性價比優(yōu)先插值方法在進(jìn)行分?jǐn)?shù)點插值操作時,根據(jù)性價比優(yōu)先級的高低分組先后進(jìn)行插值。2.根據(jù)權(quán)利要求1所述的用于H.264視頻編碼的聯(lián)合分?jǐn)?shù)點運動估計和插值方法,其特征在于所述步驟1)把分?jǐn)?shù)點運動估計的搜索區(qū)域分成四組,并確定四級性價比優(yōu)先級,第一級為與最優(yōu)整數(shù)點垂直和水平鄰接的4種1/4搜索點,第二級為與最優(yōu)整數(shù)點垂直和水平的2種1/2搜索點,第三級為與最優(yōu)整數(shù)點45度鄰接的4種1/4搜索點,第四級為在最優(yōu)整數(shù)點45度方向上的1/2搜索點以及與該1/2分?jǐn)?shù)點垂直和水平鄰接的4種1/4搜索點。3.根據(jù)權(quán)利要求2所述的用于H.264視頻編碼的聯(lián)合分?jǐn)?shù)點運動估計和插值方法,其特征在于所述步驟2)先對第一級搜索點所涉及的分?jǐn)?shù)點插值,然后在必要時通過第一級搜索點所涉及的分?jǐn)?shù)點分別計算第二和第三級搜索點所涉及的分?jǐn)?shù)點,再通過第三級搜索點所涉及的分?jǐn)?shù)點計算第四級搜索點所涉及的分?jǐn)?shù)點。4.根據(jù)權(quán)利要求1或2或3所述的用于H.264視頻編碼的聯(lián)合分?jǐn)?shù)點運動估計和插值方法,其特征在于還包括誤差消除方法,所述誤差消除方法包括截取誤差消除方法和舍入誤差消除方法,所述截取誤差消除方法用于消除插值計算過程中由于省略了H.264標(biāo)準(zhǔn)中所定義的截取操作而引起的上下溢出誤差,所述舍入誤差消除方法是消除插值計算過程中由于省略了H.264標(biāo)準(zhǔn)中所定義的舍入操作而引起的四舍五入誤差。5.根據(jù)權(quán)利要求4所述的用于H.264視頻編碼的聯(lián)合分?jǐn)?shù)點運動估計和插值方法,其特征在于所述的截取誤差消除方法,是對于由整數(shù)點直接計算第一級分?jǐn)?shù)點和由第二級分?jǐn)?shù)點直接計算第四級中的4種l/4分?jǐn)?shù)點,采用改變截取范圍的方式計算,即把截取范圍由(0255)變?yōu)?G/2(G+255)/2),其中G為最優(yōu)整數(shù)點的值或第二級分?jǐn)?shù)點的值。6.根據(jù)權(quán)利要求4所述的用于H.264視頻編碼的聯(lián)合分?jǐn)?shù)點運動估計和插值方法,其特征在于所述的舍入誤差消除方法,是對于由第一級分?jǐn)?shù)點計算第二級分?jǐn)?shù)點,采用保留第一級分?jǐn)?shù)點中間值的奇偶性的方法消除誤差。全文摘要本發(fā)明提供了一種用于H.264視頻編碼的聯(lián)合分?jǐn)?shù)點運動估計和插值方法,包括如下步驟步驟1)性價比優(yōu)先運動估計方法把分?jǐn)?shù)點運動估計的搜索區(qū)域,分成4組,并從高至低確定每一組的性價比優(yōu)先級,分?jǐn)?shù)點運動估計按照性價比優(yōu)先級的順序進(jìn)行,先檢查優(yōu)先級高的分?jǐn)?shù)點的值,再檢查優(yōu)先級低的值,如果同時有相同優(yōu)先級的搜索點,則按照順時針方向檢查;步驟2)性價比優(yōu)先插值方法在進(jìn)行分?jǐn)?shù)點插值操作時,根據(jù)性價比優(yōu)先級的高低分組進(jìn)行先后插值。文檔編號H04N7/26GK101715125SQ20091019227公開日2010年5月26日申請日期2009年9月11日優(yōu)先權(quán)日2009年9月11日發(fā)明者張培釗,朝紅陽,陸寄遠(yuǎn)申請人:中山大學(xué)