亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于視頻編碼的運動矢量預(yù)測方法

文檔序號:7709174閱讀:204來源:國知局
專利名稱:用于視頻編碼的運動矢量預(yù)測方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種用于視頻編碼的運動矢量預(yù)測方法,特別是指一種可以用于B幀中的直接編碼模式,以獲得更準確的運動矢量預(yù)測,從而更真實地體現(xiàn)視頻中物體運動的、利用線性內(nèi)插原理實現(xiàn)B幀中宏塊的運動矢量預(yù)測的方法,屬于數(shù)字音視頻編碼技術(shù)領(lǐng)域。
背景技術(shù)
高效的視頻編解碼技術(shù)是實現(xiàn)高質(zhì)量、低成本多媒體數(shù)據(jù)存儲與傳輸?shù)年P(guān)鍵。目前常用的編碼方法有預(yù)測編碼、正交變換編碼、向量量化編碼等等。這些方法都基于信號處理理論的,通常也稱為第一代編碼技術(shù)。現(xiàn)在比較流行的圖像編碼國際標準都基于這種編碼理論,采用的是基于塊匹配的運動補償、離散余弦變換和量化相結(jié)合的編碼方法。典型的有國際標準化組織/國際電工技術(shù)委員會第一聯(lián)合技術(shù)組(ISO/IEC JTC1)推出的MPEG-1,MPEG-2和MPEG-4等國際標準,以及國際電信聯(lián)盟(ITU-T)提出的H.26x系列推薦。這些視頻編碼標準在工業(yè)界得到了廣泛應(yīng)用。
上述的視頻編碼標準都采用了混合視頻編碼(Hybrid Video Coding)策略,通常包括預(yù)測、變換、量化和信息熵編碼等四個主要模塊。預(yù)測模塊的主要功能是利用已經(jīng)編碼并重建的圖像對當前要編碼的圖像進行預(yù)測(幀間預(yù)測),或者利用圖像中已經(jīng)編碼并重建的圖像塊(或宏塊)對當前要編碼的圖像塊(或宏塊)進行預(yù)測(幀內(nèi)預(yù)測)。變換模塊的主要功能是將輸入的圖像塊變換到另外一個空間,使輸入信號的能量盡可能地集中在低頻變換系數(shù)上,進而降低圖像塊內(nèi)元素之間的相關(guān)性,有利于壓縮。量化模塊的主要功能是將變換的系數(shù)映射到一個有利于編碼的有限元素集上;信息熵編碼模塊的主要功能是根據(jù)統(tǒng)計規(guī)律,將量化后的變換系數(shù)用變長碼表示。
視頻解碼系統(tǒng)包含與視頻編碼相似的模塊,主要通過將輸入的碼流通過熵解碼、反量化、反變換等過程重建解碼圖像。除了上述模塊外,視頻編解碼系統(tǒng)中通常還包含一些輔助的編碼工具,這些工具也會對整個系統(tǒng)的編碼性能(壓縮比)做出貢獻。
基于運動補償預(yù)測的主要功能是消除視頻序列在時間上的冗余。視頻編碼的大部分編碼效率來自于預(yù)測模塊。視頻編碼過程就是對視頻序列的每一幀圖像進行編碼的過程。常用的視頻編碼系統(tǒng)對每一幀圖像的編碼是以宏塊為基本單元進行的。在編碼每一幀圖像時,又可以分為幀內(nèi)(I幀)編碼、預(yù)測(P幀)編碼和雙向預(yù)測(B幀)編碼等。一般來說,編碼時,I幀、P幀和B幀編碼是穿插進行的,比如按照IBBPBBP的順序。
B幀的引入可以有效地解決運動物體之間或物體與背景之間由于不同的運動方向或運動速率而引起的“遮擋問題”。B幀的編碼可以使得編碼壓縮效率達到200∶1以上的碼率。對B幀中的宏塊進行的編碼包括直接(Direct)、前向預(yù)測(Forward Prediction)、后向預(yù)測(BackwardPrediction)和雙向預(yù)測(Bi-directional Prediction)四種模式。由于B幀技術(shù)需要同時進行前向與后向的運動估計,因此,運算復(fù)雜度較高;同時,為了區(qū)分前后向運動矢量,還要引入額外的標識信息。而采用Direct編碼模式可以不對運動矢量信息進行編碼,因此,可以減少編碼運動矢量信息的比特,有效地提高編碼效率。
在編碼中,一個宏塊是否采用Direct編碼模式的關(guān)鍵在于運動矢量的預(yù)測是否精確。傳統(tǒng)的B幀編碼中的直接模式采用時域相鄰的宏塊來實現(xiàn)運動矢量來預(yù)測。換言之,對B幀中某個宏塊編碼時,要通過后面第一個參考幀中相應(yīng)位置宏塊的運動矢量推導(dǎo)得到,因此,這種預(yù)測方式建立在相鄰宏塊具有相似的運動軌跡的假設(shè)基礎(chǔ)上。但是由于當前宏塊的運動并不完全取決于時域相鄰宏塊的運動,特別是在物體的邊緣時,由于物體之間運動的相對偏移,這種預(yù)測往往會得到不準確的預(yù)測結(jié)果。運動補償預(yù)測的塊尺寸已經(jīng)降至4×4時,這種情況將會更明顯。
通過線性內(nèi)插的方法可以部分回復(fù)視頻中兩個參考幀之間的圖像;因此,這種方法可以應(yīng)用到B幀編碼中。參見圖7,傳統(tǒng)的線性內(nèi)插技術(shù)是基于像素級來實現(xiàn)的,其中的B是需要內(nèi)插的幀,而前后兩個P幀是正常編碼形成的;在解碼時,可以簡單地利用前后兩個P幀來插出B幀,即每一塊的位置與P幀的位置相對應(yīng),然后對前后P幀相應(yīng)塊的像素做線性加權(quán)。這種技術(shù)雖然能夠有效地實現(xiàn)靜態(tài)場景編碼,但對于運動復(fù)雜的物體往往不能達到很好的效果。
有鑒于此,可以引進運動補償內(nèi)插的方法,通過內(nèi)插運動矢量的方式來解決線性、勻速運動的物體的編碼。然而由于運動的物體并不總是沿著直線運動,而且由于噪聲或亮度的變化往往會造成運動矢量預(yù)測的不準確,特別是在運動物體上形成的不連續(xù)(如物體邊緣部分)。

發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種用于視頻編碼的運動矢量預(yù)測方法,利用線性內(nèi)插原理實現(xiàn)B幀中宏塊的運動矢量預(yù)測,可以用于B幀中的Direct編碼模式,以獲得更準確的運動矢量預(yù)測,從而更真實地體現(xiàn)視頻中物體的運動;同時與前向預(yù)測編碼、后向預(yù)測編碼相結(jié)合,實現(xiàn)一種新的預(yù)測編碼類型。
本發(fā)明的目的是這樣實現(xiàn)的通過相鄰的兩個參考幀之間的運動矢量預(yù)測要編碼的B幀中各個宏塊的運動矢量,對于B幀中某個宏塊運動矢量的預(yù)測并不來自于后面第一個參考幀中相應(yīng)的位置的宏塊的運動矢量,如果該宏塊處在后面第一個參考幀中某個宏塊的運動軌跡上,則它的運動矢量與該宏塊的運動軌跡相同。
為了更準確地估計B幀中各宏塊的運動矢量,通過類似線性內(nèi)插的方式來預(yù)測各宏塊中每一運動估計塊的運動矢量。當對B幀進行編碼時,首先對后向參考幀的每一宏塊預(yù)測方向都要進行預(yù)處理,通過后向參考幀相對于前向參考幀的運動軌跡,可以找到相應(yīng)的B幀中的宏塊。具體的預(yù)測方法是1、獲取后向參考幀各個塊的運動矢量;2、針對每一個快的運動矢量,得到當前從前向參考幀到后向參考幀的運動軌跡;3、利用該運動軌跡,計算出當前圖像中落在此軌跡上的最匹配的塊;4、完成后向參考幀的全部塊運動估計處理后,將在當前圖像中得到相應(yīng)的運動矢量。
由于圖像的噪聲和不同物體的不規(guī)則運動,可能會導(dǎo)致當前圖像中一些塊所“穿過”的運動矢量多于一個。這種情況下可以通過如下的方式之一來解決第一種方法是采用“就近原則”,針對時域上連續(xù)的圖像的物體運動基本上呈線性關(guān)系,而且偏離另一幀相應(yīng)的位置不會太大,因此可以考慮在空域上離當前位置最近的塊所得的運動矢量作為候選矢量。
第二種方法是采用“平均取值”的方法求取候選矢量;由于在很多情況下,在物體的邊緣塊往往會造成運動的“遮擋問題”,因此采用對“穿過”相應(yīng)塊的幾個不同運動矢量求取平均值,將該求取平均值運動矢量作為候選矢量。
另外,當一些塊所“穿過”的運動矢量為零時,可以假設(shè)此塊沒有direct模式;或者利用空域預(yù)測的方式來預(yù)測運動矢量;或者利用前向運動矢量的方式來實現(xiàn)運動矢量的預(yù)測;或者利用零運動矢量的方式來預(yù)測運動矢量。
根據(jù)上述的技術(shù)方案可知本發(fā)明可以更真實地體現(xiàn)視頻中物體的運動,獲得更準確的運動矢量預(yù)測;與前向預(yù)測編碼,后向預(yù)測編碼相結(jié)合,可用實現(xiàn)一種新的預(yù)測編碼類型,其效果與傳統(tǒng)B幀編碼相似。


圖1為一個運動矢量穿過當前編碼塊的示意圖;圖2為多個運動矢量穿過當前編碼塊的示意圖;圖3為本發(fā)明通過相鄰的塊來決定從多個矢量中選取真正的運動矢量的示意圖;圖4為本發(fā)明通過相鄰的塊來預(yù)測運動矢量的示意圖;圖5為相鄰的塊均沒有運動矢量情況的示意圖;圖6為本發(fā)明利用前向運動矢量的延伸來預(yù)測運動矢量的示意圖;圖7為現(xiàn)有的幀內(nèi)插方式示意圖;圖8本發(fā)明實施例的流程圖。
具體實施例方式
以下結(jié)合附圖和具體的實施例對本發(fā)明作進一步的詳細說明請參見圖1和圖8,本發(fā)明對于當前編碼塊計算運動矢量的步驟1.進行后向參考幀的運動估計,得到每一個n×n塊的最佳運動矢量;2.預(yù)處理當前幀各n×n塊的候選運動矢量;假設(shè)圖像的寬與高分別為width、height。這總共有width/n×height/n個運動估計的塊。對于后向參考幀中的每一n×n大小的塊,假設(shè)其中心點的位置的運動矢量為其估計的運動矢量,沿著此運動矢量的方向得到運動的軌跡,并在當前幀中找到最匹配的塊。
當后向參考幀的每一n×n運動塊的塊運動矢量(假設(shè)從此n×n塊的中間出發(fā))穿過當前圖像時,可以獲取當前圖像與此矢量的交點,然后計算出此交點會落在哪一個n×n塊內(nèi),此塊的前向運動矢量與后向參考幀的運動矢量方向一樣,模為其1/2,當前塊的后向運動矢量則方向相反,模為其1/2。
對于每一塊做相對于參考幀的運動估計,對于不同的匹配塊可以用給定的準則(如SAD,SSD等)來求得最佳的匹配塊,并從當前圖像中得到相應(yīng)的運動矢量。
如果,當前、后向參考幀某一運動塊的左上角位置為BACK_POS(x,y),其運動矢量為(mvx,mvy)(這里mvx、mvy為運動矢量為二維坐標軸上x,y軸方向上的值),則在前向參考幀中的位置FOR_POS(x,y)為FOR_POS(x,y)=BACK_POS(x-n/2,y-n/2)+(mvx,mvy);相應(yīng)的當前塊的位置CURR_POS(x,y)為CURR_POS(x,y)=BACK_POS(x-n/2,y-n/2)+(mvx/2,mvy/2);由此,可以求得相應(yīng)的塊位置為CURR_BLOCK=CURR_POS(X,Y)/n,此塊前向的運動矢量分別為(mvx/2,mvy/2),后向的運動矢量分別為(-mvx/2,-mvy/2)。
3.參見圖2,當多個運動矢量指向同一估計塊時,在經(jīng)過上述處理后,在有的估計塊上可能會得到兩個或兩個以上的運動矢量。此時,采用空域預(yù)測的方法來得到真正的運動矢量。具體是根據(jù)鄰近的已經(jīng)求得的運動矢量的塊來選擇最匹配的運動矢量,即通過對相鄰塊的運動矢量取均值,得出一個候選運動矢量,然后以該候選矢量為當前塊的參考運動矢量。如圖3所示,通過對相鄰的塊的運動矢量取均值的方式可以得出一個候選運動矢量,然后對當前塊的多個運動矢量與候選矢量進行比較,最后取其方向最相近的塊。其中,虛線的正方形代表相鄰的塊,實線的正方形代表當前的塊,其中n1,n2為相鄰塊的運動矢量。由于有兩個穿過當前塊的運動矢量,因此可以找出與n1,n2矢量方向最相近的運動矢量。
4.對于沒有運動矢量穿過,但相鄰塊有運動矢量時,可以采用空域預(yù)測的方式獲得相應(yīng)的運動矢量;如圖4、5所示,通過對相鄰塊的運動矢量取均值的方式可以得出一個候選運動矢量,然后以候選矢量為當前塊的參考運動矢量。即當前塊的前后向運動矢量與參考運動矢量的方向一樣,模也一樣。參見圖4,虛線的正方形代表相鄰的塊,實線的正方形代表當前的塊,其中n1,n2為相鄰塊的運動矢量,而含有字符A的正方形代表沒有運動矢量穿過當前塊(實線的正方形);由于沒有運動矢量穿過當前塊,因此可以以n1,n2的矢量平均來作為當前塊的運動矢量。參見圖5,虛線的正方形代表相鄰的塊,實線的正方形代表當前的塊,而含有字符A的正方形代表沒有運動矢量穿過當前塊(實線的正方形)。
5.對于沒有運動矢量穿過當前塊且同時相鄰塊也沒有運動矢量時,可以利用前向的運動矢量來處理;如圖6所示,用前向參考幀相應(yīng)位置塊的運動矢量來作為當前塊的參考運動矢量。即當前塊的的前向運動矢量與參考運動矢量的方向相反,模一樣。后向運動矢量的方向與參考向量的方向一樣,模也一樣。參見圖6,其為本發(fā)明利用前向運動矢量的延伸來預(yù)測運動矢量的示意圖;其中,虛線的正方形代表相鄰的塊,實線的正方形代表當前的塊,而含有字符A的正方形代表沒有運動矢量穿過當前塊(實線的正方形),F(xiàn)表示前向參考幀運動矢量穿過當前塊的情形。
6.如果當前向運動矢量的延伸也沒有穿過該運動塊時,則設(shè)其運動矢量為零。
參見圖8,本發(fā)明的一個具體的處理流程是步驟a進行后向參考幀的運動估計,對該后向參考幀的每一個4×4塊求出其運動軌跡;步驟b根據(jù)所述的運動軌跡,求出落入運動軌跡的當前幀的4×4塊;步驟c如果已經(jīng)計算完每個宏塊的運動矢量,則結(jié)束;步驟d統(tǒng)計穿過當前4×4塊的運動矢量的數(shù)目;步驟e如果該數(shù)目大于1,則采用空域預(yù)測的方法來得到真正的運動矢量,執(zhí)行步d;步驟f如果該數(shù)目等于1,則設(shè)該運動矢量為當前塊的運動矢量,執(zhí)行步驟d;步驟g如果該數(shù)目等于0,則進一步判斷相鄰塊是否有運動矢量;步驟h如果有,則利用相鄰塊進行空域預(yù)測,得到運動矢量;執(zhí)行步驟d;步驟i如果沒有,則進一步判斷前向運動矢量的延伸是否通過當前塊;
步驟j如果是,則利用前向塊的運動矢量作為當前塊的運動矢量;執(zhí)行步驟d;步驟k如果不是,則設(shè)置當前塊的運動矢量為零;執(zhí)行步驟d。
最后應(yīng)說明的是以上實施例僅用以說明本發(fā)明而并非限制本發(fā)明所描述的技術(shù)方案;因此,盡管本說明書參照上述的各個實施例對本發(fā)明已進行了詳細的說明,但是,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解,仍然可以對本發(fā)明進行修改或者等同替換;而一切不脫離本發(fā)明的精神和范圍的技術(shù)方案及其改進,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當中。
權(quán)利要求
1.一種用于視頻編碼的運動矢量預(yù)測方法,其特征在于該方法至少包括步驟1獲取后向參考幀各個塊的運動矢量;步驟2針對每一個塊的運動矢量,得到當前從前向參考幀到后向參考幀的運動軌跡;步驟3根據(jù)步驟2獲得的運動軌跡,獲得當前圖像中落在相應(yīng)軌跡上最匹配的塊;步驟4完成后向參考幀的全部塊運動估計處理,從當前圖像中得到相應(yīng)的運動矢量。
2.根據(jù)權(quán)利要求1所述的用于視頻編碼的運動矢量預(yù)測方法,其特征在于所述最匹配的塊具體通過如下的方法獲得步驟31當后向參考幀的運動塊的運動矢量穿過當前圖像時,則通過獲取的當前圖像與所述運動矢量的交點,計算出該交點所落入的塊;步驟32將該當前塊的前向運動矢量設(shè)為與后向參考幀的的運動矢量方向一樣,模為其1/2;同時將該當前塊的后向運動矢量設(shè)為與其前向運動矢量的方向相反,模為其1/2。
3.根據(jù)權(quán)利要求1所述的用于視頻編碼的運動矢量預(yù)測方法,其特征在于對于當前圖像中與多個運動軌跡相交的運動矢量,根據(jù)鄰近的已經(jīng)求得的運動矢量的塊來選擇最匹配的運動矢量;具體是通過對相鄰的塊的運動矢量取加權(quán)值的方式得出一個候選運動矢量,然后對當前塊的多個運動矢量與候選矢量進行比較;最后取其方向最相近塊的運動矢量。
4.根據(jù)權(quán)利要求3所述的用于視頻編碼的運動矢量預(yù)測方法,其特征在于所述的加權(quán)值通過平均加權(quán)或線性加權(quán)或非線性加權(quán)的方式獲得。
5.根據(jù)權(quán)利要求1所述的用于視頻編碼的運動矢量預(yù)測方法,其特征在于如果運動軌跡與當前圖像相交的運動矢量為零時,則通過空域預(yù)測的方式來預(yù)測運動矢量,或通過前向運動矢量預(yù)測方式來預(yù)測運動矢量,或通過零運動矢量的方式預(yù)測運動矢量。
6.根據(jù)權(quán)利要求5所述的用于視頻編碼的運動矢量預(yù)測方法,其特征在于所述的空域預(yù)測是通過對相鄰塊的運動矢量取均值,得出一個候選運動矢量,然后以該候選矢量為當前塊的參考運動矢量。
7.根據(jù)權(quán)利要求5所述的用于視頻編碼的運動矢量預(yù)測方法,其特征在于所述的前向運動矢量預(yù)測方式是用前向參考幀相應(yīng)位置塊的運動矢量來作為當前塊的參考運動矢量,即當前塊的的前向運動矢量與參考運動矢量的方向相反,模一樣;后向運動矢量的方向與參考向量的方向一樣,模也一樣。
8.根據(jù)權(quán)利要求5所述的用于視頻編碼的運動矢量預(yù)測方法,其特征在于所述的零運動矢量的預(yù)測方式是通過幀內(nèi)預(yù)測來確定當前塊的運動矢量。
全文摘要
本發(fā)明公開了一種用于視頻編碼的運動矢量預(yù)測方法,該方法可以用于B幀中的直接編碼模式,以獲得更準確的運動矢量預(yù)測,從而更真實地體現(xiàn)視頻中物體運動的、利用線性內(nèi)插原理實現(xiàn)B幀中宏塊的運動矢量預(yù)測。具體是先獲取后向參考幀各個塊的運動矢量;針對每一個塊的運動矢量,得到當前從前向參考幀到后向參考幀的運動軌跡;再根據(jù)該運動軌跡,獲得當前圖像中落在相應(yīng)軌跡上最匹配的塊,完成后向參考幀的全部塊運動估計處理后,從當前圖像中得到相應(yīng)的運動矢量。本發(fā)明可以更真實地體現(xiàn)視頻中物體的運動,獲得更準確的運動矢量預(yù)測;與前向預(yù)測編碼,后向預(yù)測編碼相結(jié)合,可用實現(xiàn)一種新的預(yù)測編碼類型。
文檔編號H04N5/14GK1568009SQ03148030
公開日2005年1月19日 申請日期2003年6月27日 優(yōu)先權(quán)日2003年6月27日
發(fā)明者高文, 季向陽, 呂巖, 馬思偉, 齊洪鋼 申請人:中國科學(xué)院計算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1