專(zhuān)利名稱(chēng):直接編碼模式下確定參考圖像塊的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于視頻編碼的確定參考圖像塊的方法,尤其是一種直接(Direct)編碼模式下確定參考圖像塊的方法;屬于圖像視頻編/解碼
背景技術(shù):
高效的視頻編解碼技術(shù)是實(shí)現(xiàn)高質(zhì)量、低成本多媒體數(shù)據(jù)存儲(chǔ)與傳輸關(guān)鍵。現(xiàn)在比較流行的圖像編碼國(guó)際標(biāo)準(zhǔn)都是基于這種編碼理論,采用的是基于塊匹配的運(yùn)動(dòng)補(bǔ)償、離散余弦變換和量化相結(jié)合的編碼方法。典型的有國(guó)際標(biāo)準(zhǔn)化組織/國(guó)際電工技術(shù)委員會(huì)第一聯(lián)合技術(shù)組(ISO/IEC JTC1)推出的MPEG-1,MPEG-2和MPEG-4等國(guó)際標(biāo)準(zhǔn),以及國(guó)際電信聯(lián)盟(ITU-T)提出的H.26x系列推薦。這些視頻編碼標(biāo)準(zhǔn)在工業(yè)界得到了廣泛應(yīng)用。
這些視頻編碼標(biāo)準(zhǔn)都采用了混合視頻編碼(Hybrid Video Coding)策略,通常包括預(yù)測(cè)、變換、量化和信息熵編碼等四個(gè)主要模塊。預(yù)測(cè)模塊的主要功能是利用已經(jīng)編碼并重建的圖像對(duì)當(dāng)前要編碼的圖像進(jìn)行預(yù)測(cè),即幀間預(yù)測(cè),或者利用圖像中已經(jīng)編碼并重建的圖像塊或宏塊對(duì)當(dāng)前要編碼的圖像塊或宏塊進(jìn)行預(yù)測(cè),即幀內(nèi)預(yù)測(cè)。
基于運(yùn)動(dòng)補(bǔ)償?shù)念A(yù)測(cè)的主要功能是消除視頻序列在時(shí)間上的冗余。視頻編碼的大部分編碼效率來(lái)自于預(yù)測(cè)模塊。視頻編碼過(guò)程就是對(duì)視頻序列的每一幀圖像進(jìn)行編碼的過(guò)程。常用的視頻編碼系統(tǒng)對(duì)每一幀圖像的編碼是以宏塊為基本單元進(jìn)行的。對(duì)當(dāng)前宏塊進(jìn)行編碼時(shí),從當(dāng)前宏塊與參考?jí)K之間通過(guò)運(yùn)動(dòng)矢量連接。在編碼每一幀圖像時(shí),又可以分為內(nèi)編碼I幀、預(yù)測(cè)P幀編碼和雙向預(yù)測(cè)B幀編碼等情況。一般來(lái)說(shuō),編碼時(shí),I幀、P幀和B幀編碼是穿插進(jìn)行的,比如按照IBBPBBP的順序。
由于B幀技術(shù)需要同時(shí)進(jìn)行前向與后向的運(yùn)動(dòng)估計(jì),因此需要較高的運(yùn)算復(fù)雜度,同時(shí)為了區(qū)分前后向運(yùn)動(dòng)矢量要引入額外的標(biāo)識(shí)信息。而采用Direct編碼模式,其前后向運(yùn)動(dòng)矢量由有后向參考圖片的運(yùn)動(dòng)矢量推導(dǎo)得到,可以不對(duì)運(yùn)動(dòng)矢量信息進(jìn)行編碼,因此可以減少編碼運(yùn)動(dòng)矢量信息的比特,有效地提高編碼效率。
現(xiàn)有技術(shù)中直接編碼模式(direct mode)運(yùn)動(dòng)矢量的推導(dǎo)以如下的方式實(shí)現(xiàn),MVF=td/tp×MVMVB=(tb-tp)/tp×MVMVF與MVB則是當(dāng)前塊相應(yīng)的前向運(yùn)動(dòng)矢量與后向運(yùn)動(dòng)矢量。這里tb是當(dāng)前圖片與前向參考圖片在時(shí)域上的距離,td是前向參考圖片與后向參考圖片在時(shí)域上的距離,MV表示后向參考圖片相應(yīng)部分相對(duì)于前向參考幀的運(yùn)動(dòng)矢量。
從以上公式可以看出MVF、MVB的值可能不是整數(shù),如果帶運(yùn)動(dòng)矢量有小數(shù)部分,由于運(yùn)動(dòng)矢量是以像素為單位的,則不可能在參考圖片中找到運(yùn)動(dòng)矢量所指的匹配塊,因此,需要對(duì)MVF、MVB的計(jì)算值進(jìn)行處理,確定為整數(shù)的運(yùn)動(dòng)矢量。
例如在H.264/AVC中,diret mode運(yùn)動(dòng)向量MVF、MVB基于如下公式計(jì)算得到Z=(tb×256)/tpW=Z-256MVF=(Z×MV+128)>>8MVB=(W×MV+128)>>8其中“>>8”表示右移8位。
但是,這種舍入方法仍不能精確地得到當(dāng)前塊的預(yù)測(cè)塊,使得根據(jù)獲得的運(yùn)動(dòng)矢量指向的圖像塊出現(xiàn)偏差,嚴(yán)重的影響direct mode運(yùn)動(dòng)矢量推導(dǎo)的精確性,而direct mode在B幀所用的模式中經(jīng)常會(huì)占70-80%,從而使得B幀的壓縮效率大大降低。因此,如何更好地確定direct mode的運(yùn)動(dòng)矢量,成為視頻壓縮領(lǐng)域的一個(gè)難題。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題在于提出一種Direct模式下,視頻編碼中確定運(yùn)動(dòng)矢量的方法,可以更準(zhǔn)確的進(jìn)行運(yùn)動(dòng)矢量預(yù)測(cè),提高壓縮效率。
本發(fā)明的技術(shù)方案,包括步驟一、獲取B幀后向參考幀中相對(duì)于當(dāng)前圖像塊的運(yùn)動(dòng)矢量;步驟二、根據(jù)已經(jīng)得到的后向參考幀中對(duì)應(yīng)圖像塊的運(yùn)動(dòng)矢量,得出用于B幀當(dāng)前圖像塊直接編碼的運(yùn)動(dòng)矢量向量MV(x,y),當(dāng)前塊的前向運(yùn)動(dòng)矢量MVF采用如下公式計(jì)算設(shè)scale_factor=2shift_len,td=tp-tb;如果mv(i)<0MVF(i)=-(((scale_factor/tp)×(1-mv(i)×tb)-1)>>shift_len)否則,MVF(i)=((scale_factor/tp)×(1+mv(i)×tb)-1)>>shift_len)當(dāng)前塊的后向運(yùn)動(dòng)矢量MVB采用如下公式計(jì)算如果mv(i)<0MVB(i)=((scale_factor/tp)×(1-mv(i)×td)-1)>>shift_len否則,MVB(i)=-(((scale_factor/tp)×(1+mv(i)×td)-1)>>shift_len)b)其中scale_factor值為小數(shù)放大因子,shift_len表示需要向右移位的次數(shù),MVF與MVB則是當(dāng)前塊相應(yīng)的前向運(yùn)動(dòng)矢量與后向運(yùn)動(dòng)矢量,tb是當(dāng)前圖片與前向參考圖片在時(shí)域上的距離,td是前向參考圖片與后向參考圖片在時(shí)域上的距離;MV表示后向參考圖片相應(yīng)部分相對(duì)于前向參考幀的運(yùn)動(dòng)矢量,MV(x,y)=(MV(x),MV(y))為二維矢量,其相應(yīng)分量為MV(x),MV(y),MV(i)代表MV(x)或MV(y);a/b表示為a與b的商向零方向取整;步驟三、步驟二得到的運(yùn)動(dòng)矢量指向的前向和后向圖像塊為當(dāng)前圖像塊的參考圖像塊。
也可以將以上的公式中,“1±m(xù)v(i)×tb)-1”改為“1±m(xù)v(i)×tb)”結(jié)果相差不多,但是一般情況下,采用“1±m(xù)v(i)×tb)-1”的編碼效果更好。
本發(fā)明通過(guò)本發(fā)明提出了一種能夠“零方向”舍入的方法能夠很好地解決在保持精確的運(yùn)動(dòng)矢量的同時(shí),又可以通過(guò)無(wú)除法的方式來(lái)實(shí)現(xiàn),從而提高運(yùn)動(dòng)矢量的計(jì)算的精度,可以更真實(shí)地體現(xiàn)視頻中物體的運(yùn)動(dòng),獲得更準(zhǔn)確的運(yùn)動(dòng)矢量預(yù)測(cè),與前向預(yù)測(cè)編碼,后向預(yù)測(cè)編碼相結(jié)合,可用實(shí)現(xiàn)一種新的預(yù)測(cè)編碼類(lèi)型,既可以保證direct mode編碼高效性又便于硬件的實(shí)現(xiàn),取得與傳統(tǒng)B幀編碼相似的效果,可以用于正在制定的AVS標(biāo)準(zhǔn)。
圖1是本發(fā)明Direct模式下應(yīng)用的示意圖;圖2是本發(fā)明技術(shù)方案的流程圖。
具體實(shí)施例方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)一步詳細(xì)說(shuō)明圖1是本發(fā)明技術(shù)方案應(yīng)用方式示意圖,圖中表示的是direct mode運(yùn)動(dòng)矢量的推導(dǎo)過(guò)程,這里tb是當(dāng)前圖片與前向參考圖片在時(shí)域上的距離,td是前向參考圖片與后向參考圖片在時(shí)域上的距離,圖中1表示當(dāng)前編碼塊,2表示P幀相同位置的對(duì)應(yīng)塊。
首先,給出一些描述用到的定義定義a/b表示為a與b的商向零方向取整,如15/7=2,-15/7=-2;再定義MV(x,y)=(MV(x),MV(y))為二維矢量,其相應(yīng)分量為MV(x),MV(y),MV(i)代表MV(x)或MV(y)。
參考圖2,在編碼端direct模式下,B前后向參考?jí)K的確定,包括如下步驟步驟一、獲取B幀后向參考幀中相對(duì)于當(dāng)前圖像塊的運(yùn)動(dòng)矢量;步驟二、根據(jù)已經(jīng)得到的后向參考幀中對(duì)應(yīng)圖像塊的運(yùn)動(dòng)矢量,得出用于B幀當(dāng)前圖像塊direct mode運(yùn)動(dòng)矢量推導(dǎo)的向量MV(x,y),當(dāng)前塊的前向運(yùn)動(dòng)矢量MVF采用如下公式計(jì)算設(shè)scale_factor=2shift_len,td=tp-tb;如果mv(i)<0MVF(i)=-(((scale_factor/tp)×(1-mv(i)×tb)-1)>>shift_len)否則,MVF(i)=((scale_factor/tp)×(1+mv(i)×tb)-1)>>shift_len當(dāng)前塊的后向運(yùn)動(dòng)矢量MVB采用如下公式計(jì)算如果mv(i)<0MVB(i)=((scale_factor/tp)×(1-mv(i)×td)-1)>>shift_len否則,MVB(i)=-(((scale_factor/tp)×(1+mv(i)×td)-1)>>shift_len其中scale_factor值為小數(shù)放大因子,scale_factor=2shift_len,shift_len為自然數(shù),表示需要向右移位的次數(shù)。scale_factor值越大,越能精確地保持公式中的運(yùn)算結(jié)果;步驟三、步驟二得到的運(yùn)動(dòng)矢量指向的前向和后向圖像塊為當(dāng)前圖像塊的參考圖像塊。
因?yàn)閟cale_factor是一個(gè)放大因子,為了避免除法,可以通過(guò)先把被除數(shù)放大,然后進(jìn)行右移來(lái)減少精度的損失,這是本發(fā)明的主要思想。
由于tp、tb的取值有一定的范圍,如一般而言,tp和tb都不會(huì)大于10;所以可以scale_factor/tp,tb×scale_factor/tp,td/tp×scale_factor都可以預(yù)先計(jì)算出來(lái),形成一個(gè)列表。計(jì)算需要時(shí),直接從列表中讀出所需值,以減少計(jì)算的復(fù)雜度,提高計(jì)算的速度。
也可以將以上的公式中,“tb×scale_factor/tp)×mv(i)-1”改為“tb×scale_factor/tp)×mv(i)”結(jié)果相差不多,但是一般情況下,采用“tb×scale_factor/tp)×mv(i)-1”的編碼效果更好。
同時(shí)由于td=tp-tb;需要的話(huà)可以進(jìn)一步簡(jiǎn)化后向運(yùn)動(dòng)矢量的推導(dǎo),結(jié)果如下當(dāng)前塊的前向運(yùn)動(dòng)矢量MVF采用如下公式計(jì)算設(shè)scale_factor=2shift_len,如果mv(i)<0MVF(i)=-(((scale_factor/tp)-(tb×scale_factor/tp)×mv(i))>>shift_len)否則,MVF(i)=((scale_factor/tp)+(tb×scale_factor/tp)×mv(i))>>shift_len當(dāng)前塊的后向運(yùn)動(dòng)矢量MVB采用如下公式計(jì)算如果mv(i)<0MVB(i)=((scale_factor/tp)-(td×scale_factor/tp)×mv(i))>>shift_len否則,MVB(i)=-(((scale_factor/tp)+(td×scale_factor/tp)×mv(i))>>shift_len)也可以將以上的公式中,“1±m(xù)v(i)×tb)-1”改為“1±m(xù)v(i)×tb)”結(jié)果相差不多,但是一般情況下,采用“1±m(xù)v(i)×tb)-1”的編碼效果更好。
下面通過(guò)一個(gè)具體實(shí)施進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案當(dāng)tb=1,td=2,MV=(5,-7)時(shí)則tp=3在H.264/AVC中Z=(tb×256)/tp=85W=Z-256=-171MVF(x)=(Z×MV(x)+128)>>8=(Z×5+128)>>8=2;MVB(x)=(W×MV(x)+128)>>8=(W×5+128)>>8=-3;MVF(y)=(Z×MV(y)+128)>>8=(Z×-7+128)>>8=2;MVB(y)=(W×MV(y)+128)>>8=(W×-7+128)>>8=5;用本發(fā)明的方法這里scale_factor=256,則shift_len=8;對(duì)于前向運(yùn)動(dòng)矢量因?yàn)閙v(x)=5>0MVF(x)=((256/3)+(1×256/3)×5)>>8=1因?yàn)閙v(y)=-7<0MVF(y)=-(((256/3)-(1×256/3)×-7)>>8)=-2對(duì)于后向運(yùn)動(dòng)矢量因?yàn)閙v(x)=5>0MVB(x)=-(((256/3)+(2×256/3)×5)>>8)=-3因?yàn)閙v(y)=-7<0MVB(y)=((256/3)-(2×256/3)×-7)>>8=4。
由于視頻序列時(shí)域上相近的圖片之間存在著較大的時(shí)域相關(guān)性,同時(shí)由于相鄰圖片間將物體的運(yùn)動(dòng)大部分保持勻速和較小偏移的平移運(yùn)動(dòng),因此本發(fā)明采用如上方式,盡量減少了舍入誤差造成運(yùn)動(dòng)矢量推導(dǎo)的影響,這樣可以會(huì)得到更好的預(yù)測(cè)參考?jí)K。
最后所應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明而非限制本發(fā)明的技術(shù)方案,盡管參照上述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解依然可以對(duì)本發(fā)明進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或局部替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種直接編碼模式下確定參考圖像塊的方法,其特征在于包括步驟一、獲取B幀后向參考幀中相對(duì)于當(dāng)前圖像塊的運(yùn)動(dòng)矢量;步驟二、根據(jù)已經(jīng)得到的后向參考幀中對(duì)應(yīng)圖像塊的運(yùn)動(dòng)矢量,得出用于B幀當(dāng)前圖像塊直接編碼的運(yùn)動(dòng)矢量向量MV(x,y),當(dāng)前塊的前向運(yùn)動(dòng)矢量MVF采用如下公式計(jì)算設(shè)scale_factor=2shift_len,td=tp-tb;如果mv(i)<0MVF(i)=-(((scale_factor/tp)×(1-mv(i)×tb)-1)>>shift_len)否則,MVF(i)=((scale_factor/tp)×(1+mv(i)×tb)-1)>>shift_len)當(dāng)前塊的后向運(yùn)動(dòng)矢量MVB采用如下公式計(jì)算如果mv(i)<0MVB(i)=((scale_factor/tp)×(1-mv(i)×td)-1)>>shift_len否則,MVB(i)=-(((scale_factor/tp)×(1+mv(i)×td)-1)>>shift_len)其中scale_factor值為小數(shù)放大因子,shift_len表示需要向右移位的次數(shù),MVF與MVB則是當(dāng)前塊相應(yīng)的前向運(yùn)動(dòng)矢量與后向運(yùn)動(dòng)矢量,tb是當(dāng)前圖片與前向參考圖片在時(shí)域上的距離,td是前向參考圖片與后向參考圖片在時(shí)域上的距離;MV表示后向參考圖片相應(yīng)部分相對(duì)于前向參考幀的運(yùn)動(dòng)矢量,MV(x,y)=(MV(x),MV(y)為二維矢量,其相應(yīng)分量為MV(x),MV(y),MV(i)代表MV(x)或MV(y);a/b表示為a與b的商向零方向取整;步驟三、步驟二得到的運(yùn)動(dòng)矢量指向的前向和后向圖像塊為當(dāng)前圖像塊的參考圖像塊。
2.根據(jù)權(quán)利要求1所述的直接編碼模式下確定參考圖像塊的方法,其特征在于所述的步驟二中,可以采用如下的方法得出用于B幀當(dāng)前圖像塊直接編碼的運(yùn)動(dòng)矢量向量MV(x,y),當(dāng)前塊的前向運(yùn)動(dòng)矢量MVF采用如下公式計(jì)算設(shè)scale_factor=2shift_len,如果mv(i)<0MVF(i)=-(((scale_factor/tp)-(tb×scale_factor/tp)×mv(i)-1)>>shift_len)否則,MVF(i)=((scale_factor/tp)+(tb×scale_factor/tp)×mv(i)-1)>>shift_len當(dāng)前塊的后向運(yùn)動(dòng)矢量MVB采用如下公式計(jì)算如果mv(i)<0MVB(i)=((scale_factor/tp)-(td×scale_factor/tp)×mv(i)-1)>>shift_len否則,MVB(i)=-(((scale_factof/tp)+(td×scale_factor/tp)×mv(i)-1)>>shift_len)其中scale_factor值為小數(shù)放大因子,shift_len表示需要向右移位的次數(shù),MVF與MVB則是當(dāng)前塊相應(yīng)的前向運(yùn)動(dòng)矢量與后向運(yùn)動(dòng)矢量,tb是當(dāng)前圖片與前向參考圖片在時(shí)域上的距離,td是前向參考圖片與后向參考圖片在時(shí)域上的距離;MV表示后向參考圖片相應(yīng)部分相對(duì)于前向參考幀的運(yùn)動(dòng)矢量,MV(x,y)=(MV(x),MV(y))為二維矢量,其相應(yīng)分量為MV(x),MV(y),MV(i)代表MV(x)或MV(y);a/b表示為a與b的商向零方向取整。
3.根據(jù)權(quán)利要求1所述的直接編碼模式下確定參考圖像塊的方法,其特征在于所述的步驟二中,當(dāng)前塊的前向運(yùn)動(dòng)矢量MVF采用如下公式計(jì)算設(shè)scale_factor=2shift_len,td=tp-tb;如果mv(i)<0MVF(i)=-(((scale_factor/tp)×(1-mv(i)×tb))>>shift_len)否則,MVF(i)=((scale_factor/tp)×(1+mv(i)×tb))>>shift_len)當(dāng)前塊的后向運(yùn)動(dòng)矢量MVB采用如下公式計(jì)算如果mv(i)<0MVB(i)=((scale_factor/tp)×(1-mv(i)×td))>>shift_len否則,MVB(i)=-(((scale_factor/tp)×(1+mv(i)×td))>>shift_len)。
4.根據(jù)權(quán)利要求1所述的直接編碼模式下確定參考圖像塊的方法,其特征在于所述的步驟二中,當(dāng)前塊的前向運(yùn)動(dòng)矢量MVF采用如下公式計(jì)算設(shè)scale_factor=2shift_len,如果mv(i)<0MVF(i)=-(((scale_factor/tp)-(tb×scale_factor/tp)×mv(i))>>shift_len)否則,MVF(i)=((scale_factor/tp)+(tb×scale_factor/tp)×mv(i))>>shift_len當(dāng)前塊的后向運(yùn)動(dòng)矢量MVB采用如下公式計(jì)算如果mv(i)<0MVB(i)=((scale_factor/tp)-(td×scale_factor/tp)×mv(i))>>shift_len否則,MVB(i)=-(((scale_factor/tp)+(td×scale_factor/tp)×mv(i))>>shift_len)。
5.根據(jù)權(quán)利要求2所述的直接編碼模式下確定參考圖像塊的方法,其特征在于所述的步驟一之前,包括將步驟二中用到的scale_factor/tp,tb×scale_factor/tp,td/tp×scale_factor參數(shù),預(yù)先計(jì)算出來(lái),將計(jì)算結(jié)果存儲(chǔ)在一個(gè)表中,用來(lái)在步驟二的計(jì)算中直接調(diào)用。
6.根據(jù)權(quán)利要求1、2或3所述的直接編碼模式下確定參考圖像塊的方法,其特征在于所述的步驟二中的shift_len為自然數(shù)。
7.根據(jù)權(quán)利要求1所述的直接編碼模式下確定參考圖像塊的方法,其特征在于所述的步驟一獲取后向參考幀相應(yīng)塊的運(yùn)動(dòng)矢量,包括如下過(guò)程選取后向參考P幀中與B幀中待編碼宏塊位置相同的宏塊作為對(duì)應(yīng)宏塊,并獲取P幀該宏塊的運(yùn)動(dòng)矢量。
全文摘要
本發(fā)明提出了一種直接編碼模式下確定參考圖像塊的方法,能夠很好地解決在保持精確的運(yùn)動(dòng)矢量的同時(shí),又可以通過(guò)無(wú)除法的方式來(lái)實(shí)現(xiàn),從而提高運(yùn)動(dòng)矢量的計(jì)算的精度,可以更真實(shí)地體現(xiàn)視頻中物體的運(yùn)動(dòng),獲得更準(zhǔn)確的運(yùn)動(dòng)矢量預(yù)測(cè),與前向預(yù)測(cè)編碼,后向預(yù)測(cè)編碼相結(jié)合,可用實(shí)現(xiàn)一種新的預(yù)測(cè)編碼類(lèi)型,既可以保證direct mode編碼高效性又便于硬件的實(shí)現(xiàn),取得與傳統(tǒng)B幀編碼相似的效果,可以用于正在制定的AVS標(biāo)準(zhǔn)。
文檔編號(hào)H04N7/46GK1535026SQ200310116090
公開(kāi)日2004年10月6日 申請(qǐng)日期2003年12月31日 優(yōu)先權(quán)日2003年12月31日
發(fā)明者季向陽(yáng), 高文, 馬思偉, 趙德斌, 呂巖 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所