專利名稱:快速運(yùn)動估計(jì)方法及視頻編解碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字視頻編解碼技術(shù),具體地說,是涉及一種視頻編碼技術(shù)中的快速運(yùn)動估計(jì)方法及應(yīng)用所述運(yùn)動估計(jì)方法的^L頻編解碼方法。
技術(shù)背景視頻壓縮方法包括幀內(nèi)壓縮和幀間壓縮,其中幀間壓縮能夠顯著提高壓縮 比,是壓縮比的主要來源。因此,現(xiàn)有的一見頻壓縮標(biāo)準(zhǔn),如數(shù)字音視頻編解碼 技術(shù)標(biāo)準(zhǔn)AVS、動態(tài)圖像專家組MPEG等視頻編解碼標(biāo)準(zhǔn),大多采用基于運(yùn)動估 計(jì)的幀間壓縮方法。其原理就是先將當(dāng)前幀分成若干大小相同的塊,然后對每 個(gè)塊在參考幀一定大小的范圍內(nèi)搜索與之最相似的匹配塊,稱為最佳匹配塊。 當(dāng)前需要壓縮編碼的塊稱為當(dāng)前塊,當(dāng)前塊和匹配塊之間的位置差稱為運(yùn)動矢 量,它們之間的#>素差稱為殘差塊。這樣,當(dāng)前塊就可用其運(yùn)動矢量和殘差塊 表示。由于殘差塊中接近零的矢量很多,通過離散余弦變換、量化和熵編碼后, 就可以大幅度提高壓縮比。絕對誤差和(Sum of Absolute Difference,簡稱SAD)匹配準(zhǔn)則是運(yùn)動估 計(jì)塊匹配中常用的準(zhǔn)則之一,其核心思想是在參考幀的一個(gè)范圍內(nèi)找到當(dāng)前編 碼塊的最佳匹配塊,使得當(dāng)前塊與參考塊的絕對誤差之和最小。SAD的值越小, 進(jìn)行變換后的殘差系數(shù)的個(gè)數(shù)一般也越少,從而達(dá)到更高的壓縮效率。運(yùn)動估計(jì)是編碼系統(tǒng)中十分耗時(shí)的一個(gè)^t塊,而且直接影響壓縮效果,成為 視頻壓縮技術(shù)中的關(guān)鍵和瓶頸。常用的全搜索方法精度較高,但搜索時(shí)間長, 效率低。菱形搜索雖然是比較理想的搜索路徑,但該方法不能根據(jù)視頻圖像的 特點(diǎn)自動選擇搜索模式;而且在固定步長的搜索模板中,水平方向和垂直方向的搜索半徑相同,對于視頻序列來說,由于大多數(shù)情況下其水平方向的運(yùn)動要 大于其垂直方向的運(yùn)動,如果采用搜索半徑相同的搜索模板,會導(dǎo)致搜索時(shí)間 較長?;谝陨显颍绾谓Y(jié)合視頻序列自身的特性,找到一種適合于視頻編碼過 程中的快速運(yùn)動估計(jì)方法,提高視頻編碼效率,是本發(fā)明所要解決的主要問題。發(fā)明內(nèi)容本發(fā)明針對現(xiàn)有技術(shù)中運(yùn)動估計(jì)方法操作耗時(shí)較大的問題,結(jié)合視頻序列 自身的特性,提供了一種快速運(yùn)動估計(jì)方法,在不增加搜索復(fù)雜度的前提下, 能夠快速找到匹配塊,提高了視頻編碼的速度和效率。為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案予以實(shí)現(xiàn) 一種快速運(yùn)動估計(jì)方法,包括以下步驟a、 才艮據(jù)當(dāng)前塊的相鄰塊的運(yùn)動矢量預(yù)測所述當(dāng)前塊的運(yùn)動矢量,以該運(yùn)動 矢量預(yù)測值作為運(yùn)動搜索的起點(diǎn);b、 計(jì)算所述當(dāng)前塊的運(yùn)動量,根據(jù)該運(yùn)動量確定搜索步長;c、 根據(jù)所述當(dāng)前塊與其參考塊的絕對誤差和SAD最小值所在位置選擇不同 搜索半徑的搜索模板進(jìn)行搜索,直至所述SAD最小值位于搜索模板的中心點(diǎn), 結(jié)束搜索。其中,在所述步驟c中,若SAD最小值位于搜索模板的中心點(diǎn)的垂直方向, 則選擇垂直搜索半徑大于水平搜索半徑的搜索模板;否則,選擇水平搜索半徑 大于垂直搜索半徑的搜索模板。進(jìn)一步地,在所述搜索模板中,較大的搜索半徑是較小的搜索半徑的兩倍。 又進(jìn)一步地,所述運(yùn)動矢量預(yù)測值為當(dāng)前塊的相鄰塊的運(yùn)動矢量的矢量中值。優(yōu)選地,所述搜索模板為菱形模板。在上述步驟b中計(jì)算當(dāng)前塊的運(yùn)動量包括下述步驟dl、定義一個(gè)變量/,: /, =|x, —x| + |_y,-_y| ,其中,(x,》為所述當(dāng)前塊的相鄰塊的運(yùn)動矢量的平均值,(x,,少,)表示第z個(gè)相鄰塊的運(yùn)動矢量的值;el、定義一個(gè)中間變量z: z = Max{/,};fl、若中間變量丄小于等于第一閾值,則當(dāng)前塊的運(yùn)動量為Low;若中間變 量丄大于第一閾值小于等于第二閾值,則當(dāng)前塊的運(yùn)動量為Median;若中間變 量丄大于第二閾值,則當(dāng)前塊的運(yùn)動量為High;所述第一閾值和第二閾值才艮據(jù) 圖像質(zhì)量確定。其中,在步驟dl中,變量/,也可以定義為/, =J\-x) , (x,》、為所述當(dāng)前塊的相鄰塊的運(yùn)動矢量的平均值,",,y,)表示第z'個(gè)相鄰塊的運(yùn)動矢量的值。再進(jìn)一步地,所述運(yùn)動量為Low時(shí),確定搜索步長為1;所述運(yùn)動量為Median 時(shí),確定搜索步長為2;所述運(yùn)動量為High時(shí),確定搜索步長為4。 所述當(dāng)前塊的相鄰塊優(yōu)選為當(dāng)前塊的左邊塊、上方塊及右上方塊。 基于上述快速運(yùn)動估計(jì)方法,本發(fā)明又提供了一種視頻編解碼方法,包括 對^L頻信號進(jìn)行編碼的過程,其中,所迷編碼過程中運(yùn)動估計(jì)的方法包括下述 步驟a、 才艮據(jù)當(dāng)前塊的相鄰塊的運(yùn)動矢量預(yù)測所述當(dāng)前塊的運(yùn)動矢量,以該運(yùn)動 矢量預(yù)測值作為運(yùn)動搜索的起點(diǎn);b、 計(jì)算所述當(dāng)前塊的運(yùn)動量,4艮據(jù)該運(yùn)動量確定搜索步長;c、 根據(jù)所述當(dāng)前塊與其參考塊的絕對誤差和SAD最小值所在位置選擇不同 搜索半徑的搜索模板進(jìn)行搜索,直至所述SAD最小值位于搜索模板的中心點(diǎn), 結(jié)束搜索。其中,在所述步驟c中,若所述SAD最小值位于搜索模板的中心點(diǎn)的垂直 方向,則選擇垂直搜索半徑大于水平搜索半徑的搜索模板;否則,選擇水平搜索半徑大于垂直4叟索半徑的纟叟索一莫板。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)和積極效果為本發(fā)明結(jié)合視頻序列自身 的特性,設(shè)置搜索半徑不同的搜索模板,根據(jù)SAD最小值所在的位置選擇不同 的搜索模板,在不增加搜索復(fù)雜度的前提下,能夠快速找到最佳匹配塊,從而 大大提高了視頻編碼的速度和效率。
圖l是本發(fā)明快速運(yùn)動估計(jì)方法的流程圖;圖2是本發(fā)明快速運(yùn)動估計(jì)的一個(gè)實(shí)施例的示意圖。務(wù)沐實(shí)施方式首先介紹一下本發(fā)明視頻編解碼方法的基本原理視頻信息處理技術(shù)包括 在編碼端對視頻信號進(jìn)行壓縮編碼的過程及在解碼端對壓縮信號進(jìn)行解碼的過 程。現(xiàn)在常用的-見頻編解碼標(biāo)準(zhǔn)如AVS、 MPEG等都采用了混合一見頻編碼策略, 通常包括預(yù)測、變換、量化和信息熵編碼等四個(gè)主要模塊。預(yù)測模塊的主要功 能是利用已經(jīng)編碼并重建的圖像塊(即參考塊)對當(dāng)前要編碼的圖像塊(即當(dāng) 前塊)進(jìn)行預(yù)測,或者利用圖像中已經(jīng)編碼并重建的圖像塊變換到另外一個(gè)空 間,使輸入信號的能量盡可能地集中在低頻變換系數(shù)上,進(jìn)而降低視頻序列的 時(shí)間相關(guān)性,有利于圖像壓縮。變換模塊是將系數(shù)進(jìn)行變換,變換降低了視頻 序列的空間相關(guān)性。量化模塊的主要功能是將變換的系數(shù)映射到一個(gè)有利于編 碼的有限元素集上。信息熵編碼模塊的主要功能是根據(jù)統(tǒng)計(jì)規(guī)律,將量化后的 變換系數(shù)用變長碼表示。視頻解碼端包含相似的模塊,主要是將輸入的碼流通 過熵解碼、反量化、反變換等過程重建解碼圖像。運(yùn)動估計(jì)是視頻編碼過程中十分重要的 一個(gè)模塊,運(yùn)動估計(jì)的快慢直接影 響視頻編碼的效率。運(yùn)動估計(jì)的目的是在搜索塊(即參考塊)中定義一個(gè)搜索 起點(diǎn),從搜索起點(diǎn)開始根據(jù)某個(gè)準(zhǔn)則進(jìn)行搜索,直至滿足搜索條件停止搜索,得到當(dāng)前塊的一個(gè)最佳匹配塊,計(jì)算出當(dāng)前塊的運(yùn)動矢量殘差。編碼端將運(yùn)動估計(jì)得到的當(dāng)前塊的運(yùn)動矢量殘差進(jìn)行傳^r,然后在解碼端才艮據(jù)當(dāng)前塊的預(yù)測 值及運(yùn)動矢量殘差計(jì)算出當(dāng)前塊的運(yùn)動矢量,并對視頻流進(jìn)行解碼。 下面結(jié)合附圖對本發(fā)明的實(shí)施方式作進(jìn)一步詳細(xì)的說明。參見圖l所示,本發(fā)明所提出的快速運(yùn)動估計(jì)方法具體包括以下步驟 步驟S101:流程開始。步驟S102:預(yù)測當(dāng)前塊的運(yùn)動矢量。目前的運(yùn)動矢量都是從一個(gè)預(yù)測值為 中心開始搜索,這個(gè)預(yù)測值由當(dāng)前塊的左邊塊、上方塊和右上方塊的運(yùn)動矢量 預(yù)測得到。取當(dāng)前塊的左邊塊、上方塊和右上方塊的運(yùn)動矢量的矢量中值作為 當(dāng)前塊運(yùn)動矢量的預(yù)測值,并以該預(yù)測值作為搜索中心開始搜索。步驟S103:計(jì)算當(dāng)前塊的運(yùn)動量。由于圖像相鄰塊之間的運(yùn)動矢量具有很 強(qiáng)的相關(guān)性,采用下述步驟計(jì)算當(dāng)前塊的運(yùn)動量首先,定義一個(gè)變量/,: /,Hi,-xl + l凡-W,其中,G,》為當(dāng)前塊左邊塊、上方塊及右上方塊的運(yùn)動矢量的平均值, (;c,, ^)分別表示左邊塊、上方塊及右上方塊的運(yùn)動矢量的值; 然后,定義一個(gè)中間變量£: £ = M :{/,};則當(dāng)前塊的運(yùn)動量LMA為丄編=,丄ow, if L《A/e<^'on if丄,< L《丄2 i/妙 if L >丄2其中,A為第一閾值,A為第二閾值,A和A的值才艮據(jù)圖像質(zhì)量確定。例如, 對于標(biāo)清一見頻(720x576) , ^為2, 4選為6;對于QCIF ( Quarter common intermediate format, 176x144), A為l,丄2為4。對運(yùn)動量LMA可以這樣理解如果丄的值比較小,可以認(rèn)為當(dāng)前塊和其左邊 塊、上方塊及右上方塊屬于同一個(gè)運(yùn)動物體,從而具有相似的運(yùn)動矢量,LMA的 值為Low;如果丄的值比較大,可以認(rèn)為當(dāng)前塊和其左邊塊、上方塊及右上方塊 屬于不同的運(yùn)動物體,從而具有不同的運(yùn)動矢量,LMA的值為High;而LMA為Median的情況介于Low與High之間。也就是i兌,相鄰塊運(yùn)動矢量相似性越大, 當(dāng)前塊的運(yùn)動量越??;相鄰塊運(yùn)動矢量相似性越小,當(dāng)前塊的運(yùn)動量越大。需要說明的是,變量/,的定義不局限于上述方式,也可以采用計(jì)算標(biāo)準(zhǔn)方差步驟S104:根據(jù)步驟S103計(jì)算的運(yùn)動量確定搜索步長,選擇相應(yīng)步長的搜 索模板,搜索模板可以是菱形搜索模板,也可以是其他形狀的搜索模板。LMA為 Low,對應(yīng)的搜索步長設(shè)置為1; LMA為Median,對應(yīng)的搜索步長設(shè)置為2; LMA 為High,對應(yīng)的搜索步長設(shè)置為4。步驟S105:判斷當(dāng)前塊與其參考塊的SAD最小值是否在搜索模板的中心點(diǎn)。 如果在中心點(diǎn),轉(zhuǎn)至步驟S110;否則,執(zhí)行步驟S106。步驟S106:判斷SAD最小值是否在搜索才莫板中心點(diǎn)的垂直方向上。如果是, 則執(zhí)行步驟S107;否則轉(zhuǎn)至步驟S108。步驟S107:選擇垂直搜索半徑大于水平4臾索半徑的才莫+反進(jìn)4亍搜索。其中, 垂直搜索半徑為水平搜索半徑的兩倍。由于SAD最小值位于中心點(diǎn)的垂直方向 上,則視頻序列在垂直方向上的運(yùn)動量較大,選擇垂直搜索半徑較大的搜索模 板進(jìn)行搜索,能夠減小搜索范圍,提高搜索速度。轉(zhuǎn)至步驟S109。步驟S108:選擇水平搜索半徑大于垂直搜索半徑的模板進(jìn)行搜索。這樣, 對于在水平方向上運(yùn)動量較大的視頻序列,也能夠減小搜索范圍,提高搜索速 度,以^更迅速找到最佳匹配塊。步驟S109:重復(fù)執(zhí)行步驟S105至步驟S108 (即直至SAD最小值位于搜索 模板的中心點(diǎn),然后轉(zhuǎn)至步驟Sl 10 )。步驟S110:搜索流程結(jié)束,根據(jù)SAD最小值對應(yīng)的點(diǎn)的位置,得到運(yùn)動矢 量殘差,并最終找到當(dāng)前塊的最佳匹配塊。圖2為本發(fā)明快速運(yùn)動估計(jì)的一個(gè)實(shí)施例的示意圖。圖中,當(dāng)前塊的地址 為(160, 320),即當(dāng)前塊第一行第一列的像素O在圖像中的位置為(160, 320 )。按照上述方法得到當(dāng)前塊的運(yùn)動矢量的預(yù)測值為(2, 3),其運(yùn)動量LMA的值為 Low,所以采用步長為1的菱形進(jìn)行^t索。圖中的點(diǎn)1的位置為(160+2, 320+3 ), 以該點(diǎn)作為搜索起點(diǎn),第一步搜索的點(diǎn)為六個(gè)點(diǎn),分別為點(diǎn)ll、點(diǎn)12、點(diǎn)13、 點(diǎn)14、點(diǎn)15及點(diǎn)16。假設(shè)此時(shí)SAD最小值在點(diǎn)16處,而點(diǎn)16位于搜索中心點(diǎn)1的水平方向, 則下一步以點(diǎn)16為中心點(diǎn),選擇水平方向搜索半徑大于垂直方向搜索半徑的模 板進(jìn)行搜索。如圖2所示,水平搜索半徑為2,垂直搜索半徑為l,第二步共搜 索四個(gè)點(diǎn),分別為點(diǎn)21、點(diǎn)22、點(diǎn)23和點(diǎn)24。加上原來已經(jīng)搜索過的點(diǎn)1和 點(diǎn)15,這六個(gè)點(diǎn)的形狀與第一步搜索的六個(gè)點(diǎn)的形狀相同,只不過已經(jīng)搜索過 的點(diǎn)1和點(diǎn)15在第二步中不再重復(fù)搜索,所以,只剩下四個(gè)點(diǎn)。^i爻此時(shí)SAD最小值位于點(diǎn)22處,由于點(diǎn)22位于第二步搜索中心點(diǎn)16的 垂直方向,第三步搜索時(shí)以點(diǎn)22為搜索中心點(diǎn),選擇垂直方向搜索半徑大于水 平方向搜索半徑的模板進(jìn)行搜索。如圖2所示,垂直搜索半徑為2,水平搜索半 徑為1,第三步共搜索四個(gè)點(diǎn),分別為點(diǎn)31、點(diǎn)32、點(diǎn)33和點(diǎn)34。如果此時(shí) SAD的最小值還是在點(diǎn)22處,則結(jié)束搜索。得到運(yùn)動矢量殘差為(2, -1),在 解碼端,根據(jù)預(yù)測值(2, 3)和運(yùn)動矢量殘差(2, -1),可以得出當(dāng)前塊的運(yùn) 動矢量為(4, 2)。應(yīng)當(dāng)指出,上述說明并非是對本發(fā)明的限制,本發(fā)明也并不僅限于上述舉 例,本技術(shù)領(lǐng)域的普通技術(shù)人員在本發(fā)明的實(shí)質(zhì)范圍內(nèi)所做出的修改、變形、 添加或替換,也應(yīng)屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種快速運(yùn)動估計(jì)方法,包括以下步驟a、根據(jù)當(dāng)前塊的相鄰塊的運(yùn)動矢量預(yù)測所述當(dāng)前塊的運(yùn)動矢量,以該運(yùn)動矢量預(yù)測值作為運(yùn)動搜索的起點(diǎn);b、計(jì)算所述當(dāng)前塊的運(yùn)動量,根據(jù)該運(yùn)動量確定搜索步長;c、根據(jù)所述當(dāng)前塊與其參考塊的絕對誤差和SAD最小值所在位置選擇不同搜索半徑的搜索模板進(jìn)行搜索,直至所述SAD最小值位于搜索模板的中心點(diǎn),結(jié)束搜索。
2、 根據(jù)權(quán)利要求1所述的快速運(yùn)動估計(jì)方法,其特征在于,在所述步驟c 中,若所述SAD最小值位于搜索模板的中心點(diǎn)的垂直方向,則選擇垂直搜索半 徑大于水平搜索半徑的搜索模板;否則,選擇水平搜索半徑大于垂直搜索半徑 的4叟索才莫4反。
3、 根據(jù)權(quán)利要求2所述的快速運(yùn)動估計(jì)方法,其特征在于,在所述搜索模 板中,較大的搜索半徑是較小的搜索半徑的兩倍。
4、 根據(jù)權(quán)利要求1至3任一項(xiàng)所述的快速運(yùn)動估計(jì)方法,其特征在于,所 述搜索模板為菱形模板。
5、 根據(jù)權(quán)利要求1所述的快速運(yùn)動估計(jì)方法,其特征在于,所述運(yùn)動矢量 預(yù)測值為所述當(dāng)前塊的相鄰塊的運(yùn)動矢量的矢量中值;其中,所述當(dāng)前塊的相 鄰塊為當(dāng)前塊的左邊塊、上方塊及右上方塊。
6、 根據(jù)權(quán)利要求l所述的快速運(yùn)動估計(jì)方法,其特征在于,所述當(dāng)前塊的 運(yùn)動量的計(jì)算包括下述步驟dl、定義一個(gè)變量/,: /, =U,-x| + |x,其中,(;c,少)為所述當(dāng)前塊的相鄰塊的運(yùn)動矢量的平均值,(x,,乂)表示第 z個(gè)相鄰塊的運(yùn)動矢量的值;所述當(dāng)前塊的相鄰塊為當(dāng)前塊的左邊塊、上方塊及 右上方塊;el、定義一個(gè)中間變量Z: i = M。x{/,};fl、若中間變量Z小于等于第一閾值,則定義當(dāng)前塊的運(yùn)動量為Low;若中 間變量丄大于第一閾值小于等于第二闊值,則定義當(dāng)前塊的運(yùn)動量為Median; 若中間變量丄大于第二閾值,則定義當(dāng)前塊的運(yùn)動量為High;所述第一閾值和 第二閾值根據(jù)圖像質(zhì)量確定。
7、根據(jù)權(quán)利要求1所述的快速運(yùn)動估計(jì)方法,其特征在于,所述當(dāng)前塊的 運(yùn)動量的計(jì)算包括下述步驟其中,G,;)為所述當(dāng)前塊的相鄰塊的運(yùn)動矢量的平均值,",,j,)表示第 !'個(gè)相鄰塊的運(yùn)動矢量的值;所述當(dāng)前塊的相鄰塊為當(dāng)前塊的左邊塊、上方塊及 右上方塊;e2、定義一個(gè)中間變量L: Z = Mox{/,};f2、若中間變量丄小于等于第一閾^:,則定義當(dāng)前塊的運(yùn)動量為Low;若中 間變量Z大于第一閾值小于等于第二閾值,則定義當(dāng)前塊的運(yùn)動量為Median; 若中間變量Z大于第二閾值,則定義當(dāng)前塊的運(yùn)動量為High;所述第一閾值和 第二閾值根據(jù)圖像質(zhì)量確定。
8、 根據(jù)權(quán)利要求6或7所述的快速運(yùn)動估計(jì)方法,其特征在于,所述運(yùn)動 量為Low時(shí),確定搜索步長為1;所述運(yùn)動量為Median時(shí),確定搜索步長為2; 所述運(yùn)動量為High時(shí),確定搜索步長為4。
9、 一種視頻編解碼方法,包括對視頻信號進(jìn)行編碼的過程,其特征在于, 所述編碼過程中運(yùn)動估計(jì)的方法包括下述步驟a、 才艮據(jù)當(dāng)前塊的相鄰塊的運(yùn)動矢量預(yù)測所述當(dāng)前塊的運(yùn)動矢量,以該運(yùn)動 矢量預(yù)測值作為運(yùn)動搜索的起點(diǎn);b、 計(jì)算所述當(dāng)前塊的運(yùn)動量,根據(jù)該運(yùn)動量確定搜索步長;c、 根據(jù)所述當(dāng)前塊與其參考塊的絕對誤差和SAD最小值所在位置選擇不同搜索半徑的搜索模板進(jìn)行搜索,直至所述SAD最小值位于搜索模板的中心點(diǎn),結(jié)束搜索。
10、根據(jù)權(quán)利要求9所述的視頻編解碼方法,其特征在于在所述步驟c 中,若所述SAD最小值位于搜索模板的中心點(diǎn)的垂直方向,則選擇垂直搜索半 徑大于水平搜索半徑的搜索模板;否則,選擇水平搜索半徑大于垂直搜索半徑 的4叟索才莫板。
全文摘要
本發(fā)明公開了一種快速運(yùn)動估計(jì)方法及視頻編解碼方法,解決了現(xiàn)有技術(shù)中運(yùn)動估計(jì)操作耗時(shí)較大的問題。本發(fā)明所述快速運(yùn)動估計(jì)方法及視頻編解碼方法結(jié)合視頻序列自身的特性,設(shè)置了搜索半徑不同的搜索模板,根據(jù)當(dāng)前塊與其參考塊絕對誤差和的最小值所在的位置選擇不同的搜索模板進(jìn)行搜索,在不增加搜索復(fù)雜度的前提下,能夠快速找到最佳匹配塊,從而大大提高了視頻編碼的速度和效率。
文檔編號H04N7/26GK101267556SQ20081001543
公開日2008年9月17日 申請日期2008年3月21日 優(yōu)先權(quán)日2008年3月21日
發(fā)明者微 劉, 劉志勝, 彭玉華 申請人:海信集團(tuán)有限公司