專利名稱:視頻編碼的運(yùn)動(dòng)矢量空間預(yù)測(cè)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于圖像/視頻壓縮技術(shù)領(lǐng)域,具體地說,本發(fā)明涉及音視頻編解碼中的運(yùn)動(dòng)矢量預(yù)測(cè)技術(shù)。
背景技術(shù):
伴隨著人類在數(shù)字信號(hào)技術(shù)上的進(jìn)步,出現(xiàn)了很多與之相關(guān)的新產(chǎn)品,如數(shù)字電視、新一代移動(dòng)通信、網(wǎng)絡(luò)流媒體等。它們滿足了人們?cè)诠ぷ鳎瑢W(xué)習(xí),生活?yuàn)蕵贩矫娴母鞣N需要。但同時(shí)這些產(chǎn)品的出現(xiàn)也對(duì)現(xiàn)有的技術(shù)提出了更高的要求。特別在數(shù)據(jù)壓縮技術(shù)上,由于目前存儲(chǔ)空間和網(wǎng)絡(luò)帶寬等瓶頸的限制,面對(duì)大量需要處理的數(shù)據(jù),一些應(yīng)用難以實(shí)現(xiàn)。因此開發(fā)出一個(gè)高效的視頻編解碼技術(shù)是實(shí)現(xiàn)高質(zhì)量、低成本多媒體數(shù)據(jù)存儲(chǔ)與傳輸關(guān)鍵。目前國際和國內(nèi)的一些標(biāo)準(zhǔn)組織都在為制定出一套更好的視頻標(biāo)準(zhǔn)而努力。典型的有國際標(biāo)準(zhǔn)化組織/國際電工技術(shù)委員會(huì)第一聯(lián)合技術(shù)組(ISO/IEC JTC1)推出的MPEG-1,MPEG-2和MPEG-4等國際標(biāo)準(zhǔn),以及國際電信聯(lián)盟(ITU-T)提出的H.26x系列推薦。這些視頻編碼標(biāo)準(zhǔn)在工業(yè)界得到了廣泛應(yīng)用。在中國,中國視音頻標(biāo)準(zhǔn)(AVS)也是一個(gè)高性能、低復(fù)雜度的國家標(biāo)準(zhǔn)。
這些視頻編碼標(biāo)準(zhǔn)的基本框架包括預(yù)測(cè)、變換、量化和熵編碼四個(gè)主要部分。其中預(yù)測(cè)部分是利用視頻圖像周圍時(shí)域和空域上的相關(guān)信息,通過預(yù)測(cè)來降低圖像的冗余信息。由于自然界場景變化是有一定規(guī)律的,圖像預(yù)測(cè)就是利用了這些規(guī)律來通過已知的信息的預(yù)測(cè)出未知圖像的信息,如果圖像預(yù)測(cè)得準(zhǔn)確,用來編碼圖像所用的數(shù)據(jù)量能大大降低,這樣就會(huì)提高視頻的壓縮效率。圖像預(yù)測(cè)一般包含兩種時(shí)域預(yù)測(cè)和空域預(yù)測(cè)。時(shí)域預(yù)測(cè)是使用被預(yù)測(cè)圖像前面或后面幾幅圖像的信息來預(yù)測(cè)的??沼蝾A(yù)測(cè)是使用被預(yù)測(cè)圖像本身已經(jīng)得到的信息來做預(yù)測(cè)的。預(yù)測(cè)不僅僅是對(duì)圖像像素值的預(yù)測(cè),還可以是對(duì)運(yùn)動(dòng)矢量的預(yù)測(cè)。
運(yùn)動(dòng)矢量預(yù)測(cè)在編碼其中有三個(gè)大的應(yīng)用(1)在快速運(yùn)動(dòng)估計(jì)中,要使用運(yùn)動(dòng)矢量預(yù)測(cè)值作為快速運(yùn)動(dòng)估計(jì)的起始點(diǎn);(2)預(yù)測(cè)當(dāng)前編碼塊的運(yùn)動(dòng)矢量;(3)為一些不帶運(yùn)動(dòng)矢量信息的特殊模式推導(dǎo)出運(yùn)動(dòng)矢量??焖龠\(yùn)動(dòng)中如果運(yùn)動(dòng)矢量預(yù)測(cè)得準(zhǔn)確,運(yùn)動(dòng)估計(jì)計(jì)算很快收斂到最優(yōu)位置,可以降低運(yùn)動(dòng)估計(jì)的時(shí)間復(fù)雜度。如果對(duì)當(dāng)前編碼塊的運(yùn)動(dòng)矢量預(yù)測(cè)得準(zhǔn)確,可以降低編碼運(yùn)動(dòng)矢量差信息的數(shù)據(jù)量。如果對(duì)特殊模式的運(yùn)動(dòng)矢量預(yù)測(cè)得準(zhǔn)確,這些特殊模式可以被更多的選用,能夠得到更優(yōu)的編碼模式,提高了編碼性能。
圖像編碼是以16×16大小的宏塊為單位來編碼的,每個(gè)宏塊還可以分成更小的16×8、8×16、8×8、8×4、4×8、4×4塊,這些塊統(tǒng)稱為編碼塊。一幅視頻圖像所表達(dá)的場景可以包含多個(gè)物體。通常一個(gè)物體要覆蓋了好幾個(gè)編碼塊。而自然界大多數(shù)物體都是剛體,他們的運(yùn)動(dòng)也是剛體運(yùn)動(dòng),即剛體運(yùn)動(dòng)時(shí),剛體上的每一點(diǎn)運(yùn)動(dòng)速度都是一致的。這個(gè)規(guī)律幫助我們利用物體中的已知某一部分的運(yùn)動(dòng)方向和位置可以預(yù)測(cè)出該物體其它部分的運(yùn)動(dòng)方向和位置。圖像中物體某一部分的運(yùn)動(dòng)方向和位置就是某一編碼塊的運(yùn)動(dòng)矢量。一個(gè)編碼塊的運(yùn)動(dòng)矢量通常都是和它周圍最鄰近的幾個(gè)編碼塊的運(yùn)動(dòng)矢量相關(guān)。本專利就是利用當(dāng)前待編碼塊空間上最鄰近的已經(jīng)編碼塊的運(yùn)動(dòng)矢量來預(yù)測(cè)當(dāng)前塊的運(yùn)動(dòng)矢量。
發(fā)明內(nèi)容
本發(fā)明的目的是在視頻編碼標(biāo)準(zhǔn)中使用一個(gè)更有效的運(yùn)動(dòng)矢量空間預(yù)測(cè)的方法來更準(zhǔn)確的預(yù)測(cè)出當(dāng)前需要得到的運(yùn)動(dòng)矢量,從而降低編碼運(yùn)動(dòng)矢量所需的數(shù)據(jù)量,提高編碼效率,同時(shí)該方法可以用于現(xiàn)有的任何視頻標(biāo)準(zhǔn)的運(yùn)動(dòng)矢量預(yù)測(cè)中。
為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提供的一種運(yùn)動(dòng)矢量空間預(yù)測(cè)方法,包括如下步驟1)選取當(dāng)前待預(yù)測(cè)的編碼塊E周圍相鄰的編碼塊A、B、C和D;其中A塊為當(dāng)前塊E左側(cè)已編碼塊,B塊為當(dāng)前塊E上方已編碼塊,C塊為當(dāng)前塊E的右上方已編碼塊,D塊為當(dāng)前塊E的右上方已編碼塊;使用當(dāng)前待預(yù)測(cè)的編碼塊E周圍相鄰的編碼塊A、B、C和D的運(yùn)動(dòng)矢量的相關(guān)性來計(jì)算出待編碼塊E的運(yùn)動(dòng)矢量預(yù)測(cè)值;2)從四個(gè)鄰塊中選擇出三個(gè)候選塊;三個(gè)候選塊的選取準(zhǔn)則是如果A、B、C塊已經(jīng)編碼完畢,就用這三個(gè)塊的運(yùn)動(dòng)矢量;如果A塊或B塊不可得到,則它們的運(yùn)動(dòng)矢量設(shè)為零;如果C塊不可得到,則使用D塊的運(yùn)動(dòng)矢量;3)將三個(gè)候選塊的運(yùn)動(dòng)矢量作為矢量預(yù)測(cè)的三個(gè)候選運(yùn)動(dòng)矢量,通過這三個(gè)候選運(yùn)動(dòng)矢量來計(jì)算得到待編碼塊E的運(yùn)動(dòng)矢量預(yù)測(cè)值。
所述步驟3)中,在得到三個(gè)候選運(yùn)動(dòng)矢量后,以兩個(gè)運(yùn)動(dòng)矢量的兩個(gè)相應(yīng)分量差值的絕對(duì)值和作為運(yùn)動(dòng)矢量相似度的定量結(jié)果,選出計(jì)算結(jié)果最小的兩個(gè)運(yùn)動(dòng)矢量作為最相似的一對(duì)運(yùn)動(dòng)矢量;然后,令選出的兩個(gè)最相似運(yùn)動(dòng)矢量每個(gè)對(duì)應(yīng)分量的平均值作為預(yù)測(cè)運(yùn)動(dòng)矢量的每個(gè)分量值。
所述的通過三個(gè)候選運(yùn)動(dòng)矢量來計(jì)算得到待編碼塊E的運(yùn)動(dòng)矢量預(yù)測(cè)值的具體方法如下將選出的三個(gè)候選塊分別用B1、B2和B3表示,它們的運(yùn)動(dòng)矢量分別為(X1,Y1)、(X2,Y2)和(X3,Y3);進(jìn)行如下步驟3a)計(jì)算三個(gè)塊兩兩之間的運(yùn)動(dòng)矢量分量的差的絕對(duì)值和,B1_B2=|X1-X2|+|Y1-Y2|,B2_B3=|X2-X3|+|Y2-Y3|,B1_B3=|X1-X3|+|Y1-Y3|;3b)求B1_B2、B2_B3和B1_B3中的最小值min(B1_B2,B2_B3,B1_B3);3c)判斷min(B1_B2,B2_B3,B1_B3)是否等于B1_B2,當(dāng)min(B1_B2,B2_B3,B1_B3)不等于B1_B2時(shí),進(jìn)入步驟3e);當(dāng)min(B1_B2,B2_B3,B1_B3)等于B1_B2時(shí),判斷min(B1_B2,B2_B3,B1_B3)是否等于B2_B3,如果是,則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X2,Y2);否則進(jìn)入步驟3d);3d)判斷min(B1_B2,B2_B3,B1_B3)是否等于B1_B3,如果,是待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X1,Y1);否則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于((X1+X2+1)>>1,(Y1+Y2+1)>>1);3e)判斷min(B1_B2,B2_B3,B1_B3)是否等于B1_B3;當(dāng)min(B1_B2,B2_B3,B1_B3)是不等于B2_B3時(shí),待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于((X1+X3+1)>>1,(Y1+Y3+1)>>1);當(dāng)min(B1_B2,B2_B3,B1_B3)等于B2_B3時(shí),判斷min(B1_B2,B2_B3,B1_B3)是否等于B1_B3,如果是,則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X3,Y3);否則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于((X2+X3+1)>>1,(Y2+Y3+1)>>1),其中>>1表示右移1位。
為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明還提供的另一種運(yùn)動(dòng)矢量空間預(yù)測(cè)方法,包括如下步驟4)選取當(dāng)前待預(yù)測(cè)的編碼塊E周圍相鄰的編碼塊A、B、C和D;其中A塊為當(dāng)前塊E左側(cè)已編碼塊,B塊為當(dāng)前塊E上方已編碼塊,C塊為當(dāng)前塊E的右上方已編碼塊,D塊為當(dāng)前塊E的右上方已編碼塊;使用當(dāng)前待預(yù)測(cè)的編碼塊E周圍相鄰的編碼塊A、B、C和D的運(yùn)動(dòng)矢量的相關(guān)性來計(jì)算出待編碼塊E的運(yùn)動(dòng)矢量預(yù)測(cè)值;5)從四個(gè)鄰塊中選擇出三個(gè)候選塊;三個(gè)候選塊的選取準(zhǔn)則是如果A、B、C塊已經(jīng)編碼完畢,就用這三個(gè)塊的運(yùn)動(dòng)矢量;如果A塊或B塊不可得到,則它們的運(yùn)動(dòng)矢量設(shè)為零;如果C塊不可得到,則使用D塊的運(yùn)動(dòng)矢量;6)將三個(gè)候選塊的運(yùn)動(dòng)矢量作為矢量預(yù)測(cè)的三個(gè)候選運(yùn)動(dòng)矢量,求兩個(gè)運(yùn)動(dòng)矢量對(duì)應(yīng)分量差的絕對(duì)值和,得到計(jì)算結(jié)果最大的一對(duì)運(yùn)動(dòng)矢量,即最不相似的一對(duì)運(yùn)動(dòng)矢量;然后,得到兩個(gè)最不相似運(yùn)動(dòng)矢量之外的第三個(gè)運(yùn)動(dòng)矢量,并將第三個(gè)運(yùn)動(dòng)矢量作為當(dāng)前塊的預(yù)測(cè)運(yùn)動(dòng)矢量。
所述步驟6)中,將選出的三個(gè)候選塊分別用B1、B2和B3表示,它們的運(yùn)動(dòng)矢量分別為(X1,Y1)、(X2,Y2)和(X3,Y1);所述步驟6)的具體實(shí)現(xiàn)包括如下子步驟6a)計(jì)算三個(gè)塊兩兩之間的運(yùn)動(dòng)矢量分量的差的絕對(duì)值和,B1_B2=|X1-X2|+|Y1-Y2|,B2_B3=|X2-X3|+|Y2-Y3|,B1_B3=|X1-X3|+|Y1-Y3|;6b)求B1_B2、B2_B3和B1_B3中的最大值max(B1_B2,B2_B3,B1_B3);6c)判斷max(B1_B2,B2_B3,B1_B3)是否等于B1_B2,當(dāng)max(B1_B2,B2_B3,B1_B3)不等于B1_B2時(shí),進(jìn)入步驟3e);當(dāng)max(B1_B2,B2_B3,B1_B3)等于B1_B2時(shí),判斷max(B1_B2,B2_B3,B1__B3)是否等于B2_B3,如果是,則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X2,Y2);否則進(jìn)入步驟3d);6d)判斷max(B1_B2,B2_B3,B1_B3)是否等于B1_B3,如果是,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X1,Y1);否則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X3,Y3);6e)判斷max(B1_B2,B2_B3,B1_B3)是否等于B2_B3;當(dāng)max(B1_B2,B2_B3,B1_B3)是不等于B2_B3時(shí),待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X2,Y2);當(dāng)max(B1_B2,B2_B3,B1_B3)等于B2_B3時(shí),判斷max(B1_B2,B2_B3,B1_B3)是否等于B1_B3,如果是,則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X3,Y3);否則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X1,Y1)。
本發(fā)明建立是基于視頻序列的運(yùn)動(dòng)特征的分析上,所以能夠準(zhǔn)確的預(yù)測(cè)出當(dāng)前待編碼塊的運(yùn)動(dòng)矢量,減少了運(yùn)動(dòng)矢量差的幅度,從而降低了編碼運(yùn)動(dòng)矢量差所需要的bit數(shù)目,提高了壓縮效率。對(duì)一些適合于本方法的典型視頻序列,應(yīng)用本方法壓縮率可以提高到1%左右。本發(fā)明提出的兩種方法的工作原理相近,前一種方法適合于運(yùn)動(dòng)規(guī)律亂的序列,后一種方法適合于整體運(yùn)動(dòng)比較強(qiáng)的序列。針對(duì)不同的視頻序列的特性,可以使用不同的運(yùn)動(dòng)矢量預(yù)測(cè)的方法來達(dá)到更高的壓縮效率。
圖1是視頻圖像編解碼器的各個(gè)關(guān)鍵技術(shù)流程圖;運(yùn)動(dòng)矢量預(yù)測(cè)在圖中為編解碼器的運(yùn)動(dòng)估計(jì)和編解碼器計(jì)算運(yùn)動(dòng)矢量差提供了預(yù)測(cè)的運(yùn)動(dòng)矢量。
圖2是運(yùn)動(dòng)矢量預(yù)測(cè)塊位置關(guān)系示意圖;E塊當(dāng)前待編碼塊;A塊當(dāng)前塊E的左側(cè)已編碼塊;B塊當(dāng)前塊E的上方已編碼塊;C塊當(dāng)前塊E的右上方已編碼塊;D塊當(dāng)前塊E的左上方已編碼塊。
圖3是運(yùn)動(dòng)矢量裝置組成示意圖;201輸入和存儲(chǔ)候選運(yùn)動(dòng)矢量的裝置;202對(duì)運(yùn)動(dòng)矢量進(jìn)行選擇的裝置;203用選擇的候選運(yùn)動(dòng)矢量做預(yù)測(cè)的裝置;204存儲(chǔ)和輸出預(yù)測(cè)運(yùn)動(dòng)矢量的裝置。
具體實(shí)施例方式
本發(fā)明提供的運(yùn)動(dòng)矢量預(yù)測(cè)方法是為編解碼器的運(yùn)動(dòng)估計(jì)和編解碼器計(jì)算運(yùn)動(dòng)矢量差提供了預(yù)測(cè)的運(yùn)動(dòng)矢量(圖1是視頻圖像編解碼器的各個(gè)關(guān)鍵技術(shù)流程圖)。本發(fā)明在編碼端和解碼端的實(shí)現(xiàn)是相同的,因此在這里給出的實(shí)施例不特指是編碼端還是解碼端。
實(shí)施例1使用當(dāng)前待預(yù)測(cè)的編碼塊E周圍相鄰的編碼塊A、B、C和D的運(yùn)動(dòng)矢量的相關(guān)性來計(jì)算出待編碼塊E的運(yùn)動(dòng)矢量預(yù)測(cè)值(其中A塊為當(dāng)前塊E左側(cè)已編碼塊,B塊為當(dāng)前塊E上方已編碼塊,C塊為當(dāng)前塊E的右上方已編碼塊,D塊為當(dāng)前塊E的右上方已編碼塊)。從四個(gè)鄰塊中選擇出三個(gè)塊的運(yùn)動(dòng)矢量來計(jì)算得到待編碼塊E的運(yùn)動(dòng)矢量預(yù)測(cè)。三個(gè)候選塊的選取準(zhǔn)則是如果A、B、C塊已經(jīng)編碼完畢,就用這三個(gè)塊的運(yùn)動(dòng)矢量;如果A塊或B塊不可得到,則它們的運(yùn)動(dòng)矢量設(shè)為零;如果C塊不可得到,則使用D塊的運(yùn)動(dòng)矢量。如圖2所示,該圖分為(a),(b),(c)和(d)四個(gè)部分,分別舉例表示對(duì)一個(gè)8×8大小的塊的4個(gè)4×4塊編碼(Block0、Block1、Block2、Block3)時(shí),當(dāng)前塊E與A,B,C和D塊的位置關(guān)系;其中,(a)部分表示對(duì)Block0進(jìn)行編碼,(b)部分表示對(duì)Block1進(jìn)行編碼,(c)部分表示對(duì)Block2進(jìn)行編碼,(d)部分表示對(duì)Block3進(jìn)行編碼。需要特殊說明的是,當(dāng)前塊為Block3時(shí),由于下一個(gè)宏塊還沒有編碼,所以得不到C塊,在這種情況下,用預(yù)測(cè)塊D代替。另外在一些特殊情況下,比如圖像邊界,條帶(slice)邊界等,都有可能得不到某些預(yù)測(cè)塊,這都有相應(yīng)的機(jī)制來處理他們(這些機(jī)制屬于本領(lǐng)域技術(shù)人員的公知技術(shù))。
選出候選塊后,將這三個(gè)候選塊分別用B1、B2和B3表示,它們的運(yùn)動(dòng)矢量分別為(X1,Y1)、(X2,Y2)和(X3,Y3);進(jìn)行如下步驟a)計(jì)算三個(gè)塊兩兩之間的運(yùn)動(dòng)矢量分量的差的絕對(duì)值和,B1_B2=|X1-X2|+|Y1-Y2|,B2_B3=|X2_X3|+|Y2-Y3|,B1_B3=|X1-X3|+|Y1-Y3|;b)求B1_B2、B2_B3和B1_B3中最小值min(B1_B2,B2_B3,B1_B3);c)如果min(B1_B2,B2_B3,B1B3)等于B1_B2時(shí);如果min(B1_B2,B2_B3,B1_B3)等于B2_B3,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X2,Y2);否則,如果min(B1_B2,B2_B3,B1_B3)等于B1_B3,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X1,Y1);否則,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于((X1+X2+1)>>1,(Y1+Y2+1)>>1);
否則,如果min(B1_B2,B2B3,B1_B3)等于B2_B3;如果min(B1_B2,B2_B3,B1_B3)等于B1_B3,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X3,Y3);否則,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于((X2+X3+1)>>1,(Y2+Y3+1)>>1);否則,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于((X1+X3+1)>>1,(Y1+Y3+1)>>1)。
本文中的符號(hào)>>1均表示右移一位。
示例性地,如果從當(dāng)前塊E的相鄰塊得到A,B,C(或D)的運(yùn)動(dòng)矢量分別為(-3,6),(1,4),(4,1)預(yù)測(cè)當(dāng)前塊E的運(yùn)動(dòng)矢量E。
根據(jù)公式(1)(該公式表示的是運(yùn)動(dòng)矢量最相似準(zhǔn)則)計(jì)算兩兩運(yùn)動(dòng)矢量相似度P,Q=argmini,j=1,2,3,i≠jMi∈{A,B,C}(|Mi(x)-Mj(x)|+|Mi(y)-Mj(y)|)---(1)]]>其中,{A,B,C}為鄰塊集合,當(dāng)C塊得不到時(shí)用D代替,Mi、Mi為鄰塊之一,Mi,Mj∈{A,B,C},Mi(x)為鄰塊Mi運(yùn)動(dòng)矢量的x分量,Mi(y)為鄰塊Mi運(yùn)動(dòng)矢量的y分量,P,Q為得到最相似的兩個(gè)運(yùn)動(dòng)矢量。
A和B=|-3-1|+|6-4|=6,A和C=|-3-4|+|6-1|=12,B和C=|1-4|+|4-1|=6由于A和B,B和C,都得到最小值6,按塊的字母順序A有更高的優(yōu)先級(jí),計(jì)算A和B的對(duì)應(yīng)分量的均值作為當(dāng)前塊E的預(yù)測(cè)運(yùn)動(dòng)矢量,E(x)=(A(x)+B(x)+1)>>1=(-3+1+1)>>1=0,E(y)=(A(y)+B(y)+1)>>1=(6+4+1)>>1=5。
實(shí)施例2使用當(dāng)前待預(yù)測(cè)的編碼塊E周圍相鄰的編碼塊A、B、C和D的運(yùn)動(dòng)矢量的相關(guān)性來計(jì)算出待編碼塊E的運(yùn)動(dòng)矢量預(yù)測(cè)值(其中A塊為當(dāng)前塊E左側(cè)已編碼塊,B塊為當(dāng)前塊E上方已編碼塊,C塊為當(dāng)前塊E的右上方已編碼塊,D塊為當(dāng)前塊E的右上方已編碼塊)。從四個(gè)鄰塊中選擇出三個(gè)塊的運(yùn)動(dòng)矢量來計(jì)算得到待編碼塊E的運(yùn)動(dòng)矢量預(yù)測(cè)。
三個(gè)候選塊的選取準(zhǔn)則是如果A、B、C塊已經(jīng)編碼完畢,就用這三個(gè)塊的運(yùn)動(dòng)矢量;如果A塊或B塊不可得到,則它們的運(yùn)動(dòng)矢量設(shè)為零;如果C塊不可得到,則使用D塊的運(yùn)動(dòng)矢量。
將選出的三個(gè)候選塊分別用B1、B2和B3表示,它們的運(yùn)動(dòng)矢量分別為(X1,Y1)、(X2,Y2)和(X3,Y3);進(jìn)行如下步驟a)計(jì)算三個(gè)塊兩兩之間的運(yùn)動(dòng)矢量分量的差的絕對(duì)值和,B1_B2=|X1-X2|+|Y1-Y2|,B2_B3=|X2-X3|+|Y2-Y3|,B1_B3=|X1-X3|+|Y1-Y3|;b)求B1_B2、B2_B3和B1_B3中最大值max(B1_B2,B2_B3,B1_B3);c)如果max(B1_B2,B2_B3,B1_B3)等于B1_B2;如果max(B1_B2,B2_B3,B1_B3)等于B2_B3,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X2,Y2);否則,如果max(B1_B2,B2_B3,B1_B3)等于B1_B3,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X1,Y1);否則,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X3,Y3);否則,如果max(B1_B2,B2_B3,B1_B3)等于B2_B3;如果max(B1_B2,B2_B3,B1_B3)等于B1_B3,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X3,Y3);否則,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X1,Y1);否則,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X2,Y2);示例性地,如果從當(dāng)前塊E的相鄰塊得到A,B,C(或D)的運(yùn)動(dòng)矢量分別為(-3,6),(1,4),(4,1)預(yù)測(cè)當(dāng)前塊E的運(yùn)動(dòng)矢量E。根據(jù)公式(2)(該公式表示的是運(yùn)動(dòng)矢量最不相似準(zhǔn)則)計(jì)算兩兩運(yùn)動(dòng)矢量不相似度P,Q=argmaxi,j=1,2,3,i≠jMi∈{A,B,C}(|Mi(x)-Mj(x)|+|Mi(y)-Mj(y)|)]]>式(2)其中,{A,B,C}為鄰塊集合,當(dāng)C塊得不到時(shí)用D代替,Mi、Mi為鄰塊之一,Mi,Mj∈{A,B,C},Mi(x)為鄰塊Mi運(yùn)動(dòng)矢量的x分量,Mi(y)為鄰塊Mi運(yùn)動(dòng)矢量的y分量,P,Q為得到最相似的兩個(gè)運(yùn)動(dòng)矢量。
A和B=|-3-1|+|6-4|=6,A和C=|-3-4|+|6-1|=12,B和C=|1-4|+|4-1|=6A和C的計(jì)算結(jié)果為12,是最不相似的一對(duì)運(yùn)動(dòng)矢量,除A和C之外的B作為當(dāng)前塊E的預(yù)測(cè)運(yùn)動(dòng)矢量,E(x)=B(x)=1,E(y)=B(y)=1。
運(yùn)動(dòng)矢量預(yù)測(cè)過程參見圖3所示。運(yùn)動(dòng)矢量預(yù)測(cè)裝置由已經(jīng)編碼鄰塊的運(yùn)動(dòng)矢量輸入裝置201,鄰塊運(yùn)動(dòng)矢量選擇處理裝置202,當(dāng)前待編碼塊的預(yù)測(cè)運(yùn)動(dòng)矢量裝置203,預(yù)測(cè)運(yùn)動(dòng)矢量輸出裝置204四部分組成。預(yù)測(cè)當(dāng)前塊運(yùn)動(dòng)矢量時(shí),當(dāng)前塊周圍已經(jīng)編碼的鄰塊的運(yùn)動(dòng)矢量輸入到運(yùn)動(dòng)矢量輸入裝置201中,并在鄰塊運(yùn)動(dòng)矢量選擇時(shí)將該輸入裝置中的運(yùn)動(dòng)矢量輸入到鄰塊運(yùn)動(dòng)矢量選擇處理裝置202中,選擇若干候選運(yùn)動(dòng)矢量并輸入到當(dāng)前待編碼塊的預(yù)測(cè)運(yùn)動(dòng)矢量裝置203中,在預(yù)測(cè)運(yùn)動(dòng)矢量裝置203中用選擇的候選運(yùn)動(dòng)矢量采用本發(fā)明描述的兩種運(yùn)動(dòng)矢量預(yù)測(cè)方法中的一種來預(yù)測(cè)當(dāng)前運(yùn)動(dòng)矢量,然后輸入到預(yù)測(cè)運(yùn)動(dòng)矢量輸出裝置204中存儲(chǔ)并在需要時(shí)輸出。這些裝置之間的可以采用任意種方式通信。每種裝置可以看作是運(yùn)動(dòng)矢量的每個(gè)模塊,這些模塊可以既可以用硬件實(shí)現(xiàn)也可以用軟件實(shí)現(xiàn),沒有任何的限制。
本發(fā)明對(duì)運(yùn)動(dòng)矢量預(yù)測(cè)過程的劃分方法不是唯一的,有些裝置也不是必須的或者固定不變的。只要任何運(yùn)動(dòng)矢量預(yù)測(cè)裝置的設(shè)計(jì)能夠得到和本發(fā)明描述的方法得到同樣的結(jié)果,都可以視為同樣的運(yùn)動(dòng)矢量預(yù)測(cè)方法。
權(quán)利要求
1.一種運(yùn)動(dòng)矢量空間預(yù)測(cè)方法,包括如下步驟1)選取當(dāng)前待預(yù)測(cè)的編碼塊E周圍相鄰的編碼塊A、B、C和D;其中A塊為當(dāng)前塊E左側(cè)已編碼塊,B塊為當(dāng)前塊E上方已編碼塊,C塊為當(dāng)前塊E的右上方已編碼塊,D塊為當(dāng)前塊E的右上方已編碼塊;使用當(dāng)前待預(yù)測(cè)的編碼塊E周圍相鄰的編碼塊A、B、C和D的運(yùn)動(dòng)矢量的相關(guān)性來計(jì)算出待編碼塊E的運(yùn)動(dòng)矢量預(yù)測(cè)值;2)從四個(gè)鄰塊中選擇出三個(gè)候選塊;三個(gè)候選塊的選取準(zhǔn)則是如果A、B、C塊已經(jīng)編碼完畢,就用這三個(gè)塊的運(yùn)動(dòng)矢量;如果A塊或B塊不可得到,則它們的運(yùn)動(dòng)矢量設(shè)為零;如果C塊不可得到,則使用D塊的運(yùn)動(dòng)矢量;3)將三個(gè)候選塊的運(yùn)動(dòng)矢量作為矢量預(yù)測(cè)的三個(gè)候選運(yùn)動(dòng)矢量,通過這三個(gè)候選運(yùn)動(dòng)矢量來計(jì)算得到待編碼塊E的運(yùn)動(dòng)矢量預(yù)測(cè)值。
2.按權(quán)利要求1所述的運(yùn)動(dòng)矢量空間預(yù)測(cè)方法,所述步驟3)中,在得到三個(gè)候選運(yùn)動(dòng)矢量后,以兩個(gè)運(yùn)動(dòng)矢量的兩個(gè)相應(yīng)分量差值的絕對(duì)值和作為運(yùn)動(dòng)矢量相似度的定量結(jié)果,選出計(jì)算結(jié)果最小的兩個(gè)運(yùn)動(dòng)矢量作為最相似的一對(duì)運(yùn)動(dòng)矢量;然后,令選出的兩個(gè)最相似運(yùn)動(dòng)矢量每個(gè)對(duì)應(yīng)分量的平均值作為預(yù)測(cè)運(yùn)動(dòng)矢量的每個(gè)分量值。
3.按權(quán)利要求1所述的運(yùn)動(dòng)矢量空間預(yù)測(cè)方法,所述的通過三個(gè)候選運(yùn)動(dòng)矢量來計(jì)算得到待編碼塊E的運(yùn)動(dòng)矢量預(yù)測(cè)值的具體方法如下將選出的三個(gè)候選塊分別用B1、B2和B3表示,它們的運(yùn)動(dòng)矢量分別為(X1,Y1)、(X2,Y2)和(X3,Y3);進(jìn)行如下步驟3a)計(jì)算三個(gè)塊兩兩之間的運(yùn)動(dòng)矢量分量的差的絕對(duì)值和,B1_B2=|X1-X2|+|Y1-Y2|,B2_B3=|X2-X3|+|Y2-Y3|,B1_B3=|X1-X3|+|Y1-Y3|;3b)求B1_B2、B2_B3和B1_B3中的最小值min(B1_B2,B2_B3,B1_B3);3c)判斷min(B1_B2,B2_B3,B1_B3)是否等于B1_B2,當(dāng)min(B1_B2,B2_B3,B1_B3)不等于B1_B2時(shí),進(jìn)入步驟3e);當(dāng)min(B1_B2,B2_B3,B1_B3)等于B1_B2時(shí),判斷min(B1_B2,B2_B3,B1_B3)是否等于B2_B3,如果是,則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X2,Y2);否則進(jìn)入步驟3d);3d)判斷min(B1_B2,B2_B3,B1_B3)是否等于B1_B3,如果是,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X1,Y1);否則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于((X1+X2+1)>>1,(Y1+Y2+1)>>1);3e)判斷min(B1_B2,B2_B3,B1_B3)是否等于B2_B3;當(dāng)min(B1_B2,B2_B3,B1_B3)是不等于B2_B3時(shí),待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于((X1+X3+1)>>1,(Y1+Y3+1)>>1);當(dāng)min(B1_B2,B2_B3,B1_B3)等于B2_B3時(shí),判斷min(B1_B2,B2_B3,B1_B3)是否等于B1_B3,如果是,則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X3,Y3);否則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于((X2+X3+1)>>1,(Y2+Y3+1)>>1)。
4.一種運(yùn)動(dòng)矢量空間預(yù)測(cè)方法,包括如下步驟4)選取當(dāng)前待預(yù)測(cè)的編碼塊E周圍相鄰的編碼塊A、B、C和D;其中A塊為當(dāng)前塊E左側(cè)已編碼塊,B塊為當(dāng)前塊E上方已編碼塊,C塊為當(dāng)前塊E的右上方已編碼塊,D塊為當(dāng)前塊E的右上方已編碼塊;使用當(dāng)前待預(yù)測(cè)的編碼塊E周圍相鄰的編碼塊A、B、C和D的運(yùn)動(dòng)矢量的相關(guān)性來計(jì)算出待編碼塊E的運(yùn)動(dòng)矢量預(yù)測(cè)值;5)從四個(gè)鄰塊中選擇出三個(gè)候選塊;三個(gè)候選塊的選取準(zhǔn)則是如果A、B、C塊已經(jīng)編碼完畢,就用這三個(gè)塊的運(yùn)動(dòng)矢量;如果A塊或B塊不可得到,則它們的運(yùn)動(dòng)矢量設(shè)為零;如果C塊不可得到,則使用D塊的運(yùn)動(dòng)矢量;6)將三個(gè)候選塊的運(yùn)動(dòng)矢量作為矢量預(yù)測(cè)的三個(gè)候選運(yùn)動(dòng)矢量,求兩個(gè)運(yùn)動(dòng)矢量對(duì)應(yīng)分量差的絕對(duì)值和,得到計(jì)算結(jié)果最大的一對(duì)運(yùn)動(dòng)矢量,即最不相似的一對(duì)運(yùn)動(dòng)矢量;然后,得到兩個(gè)最不相似運(yùn)動(dòng)矢量之外的第三個(gè)運(yùn)動(dòng)矢量,并將第三個(gè)運(yùn)動(dòng)矢量作為當(dāng)前塊的預(yù)測(cè)運(yùn)動(dòng)矢量。
5.按權(quán)利要求4所述的運(yùn)動(dòng)矢量空間預(yù)測(cè)方法,所述步驟6)中,將選出的三個(gè)候選塊分別用B1、B2和B3表示,它們的運(yùn)動(dòng)矢量分別為(X1,Y1)、(X2,Y2)和(X3,Y3);所述步驟6)的具體實(shí)現(xiàn)包括如下子步驟6a)計(jì)算三個(gè)塊兩兩之間的運(yùn)動(dòng)矢量分量的差的絕對(duì)值和,B1_B2=|X1-X2|+|Y1-Y2|,B2_B3=|X2-X3|+|Y2-Y3|,B1_B3=|X1-X3|+|Y1-Y3|;6b)求B1_B2、B2_B3和B1_B3中的最大值max(B1_B2,B2_B3,B1_B3);6c)判斷max(B1_B2,B2_B3,B1_B3)是否等于B1_B2,當(dāng)max(B1_B2,B2_B3,B1_B3)不等于B1_B2時(shí),進(jìn)入步驟3e);當(dāng)max(B1_B2,B2_B3,B1_B3)等于B1_B2時(shí),判斷max(B1_B2,B2_B3,B1_B3)是否等于B2_B3,如果是,則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X2,Y2);否則進(jìn)入步驟3d);6d)判斷max(B1_B2,B2_B3,B1_B3)是否等于B1_B3,如果是,待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X1,Y1);否則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X3,Y3);6e)判斷max(B1_B2,B2_B3,B1_B3)是否等于B2_B3;當(dāng)max(B1_B2,B2_B3,B1_B3)是不等于B2_B3時(shí),待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X2,Y2);當(dāng)max(B1_B2,B2_B3,B1_B3)等于B2_B3時(shí),判斷max(B1_B2,B2_B3,B1_B3)是否等于B1_B3,如果是,則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X3,Y3);否則待預(yù)測(cè)塊E的預(yù)測(cè)運(yùn)動(dòng)矢量(Xe,Ye)等于(X1,Y1)。
全文摘要
本發(fā)明涉及音視頻編解碼中的運(yùn)動(dòng)矢量預(yù)測(cè)技術(shù)。本發(fā)明選取當(dāng)前待預(yù)測(cè)的編碼塊E周圍相鄰的編碼塊A、B、C和D;從四個(gè)鄰塊中選擇出三個(gè)候選塊;將三個(gè)候選塊的運(yùn)動(dòng)矢量作為矢量預(yù)測(cè)的三個(gè)候選運(yùn)動(dòng)矢量,根據(jù)本發(fā)明提出的兩種方法之一(即運(yùn)動(dòng)矢量最相似準(zhǔn)則或運(yùn)動(dòng)矢量最不相似準(zhǔn)則),計(jì)算出待編碼塊E的運(yùn)動(dòng)矢量預(yù)測(cè)值。本發(fā)明是基于視頻序列的運(yùn)動(dòng)特征的分析上提出的,能夠準(zhǔn)確的預(yù)測(cè)出當(dāng)前待編碼塊的運(yùn)動(dòng)矢量,提高了壓縮效率。本發(fā)明提出的兩種方法,運(yùn)動(dòng)矢量最相似法適合于運(yùn)動(dòng)規(guī)律亂的序列,運(yùn)動(dòng)矢量最不相似法適合于整體運(yùn)動(dòng)比較強(qiáng)的序列。針對(duì)不同序列的特性,可以使用不同的運(yùn)動(dòng)矢量預(yù)測(cè)的方法來達(dá)到更高的壓縮效率。
文檔編號(hào)H04N7/26GK1885948SQ20051007729
公開日2006年12月27日 申請(qǐng)日期2005年6月21日 優(yōu)先權(quán)日2005年6月21日
發(fā)明者高文, 齊洪鋼, 季向陽, 趙德斌, 馬思偉 申請(qǐng)人:中國科學(xué)院計(jì)算技術(shù)研究所