專利名稱:一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于視頻編解碼技術(shù)領(lǐng)域,特別是一種運(yùn)動(dòng)估計(jì)時(shí)能加快速度、減小帶寬、節(jié)省存儲(chǔ)的片內(nèi)存儲(chǔ)的方法。
背景技術(shù):
隨著信息技術(shù)的發(fā)展,視頻的應(yīng)用越來越廣泛。視頻監(jiān)控、視頻會(huì)議、視頻點(diǎn)播、數(shù)字電視、手機(jī)電視、IPTV、可視電話、激光視盤等,構(gòu)成了一個(gè)巨大的市場(chǎng)。視頻編解碼算法和標(biāo)準(zhǔn)也在不斷進(jìn)步,其中的AVS和H.264是目前國(guó)內(nèi)、國(guó)際代表第二代視頻編解碼先進(jìn)技術(shù)的兩大標(biāo)準(zhǔn),有著良好的市場(chǎng)前景。由于AVS和H.264都采用了多參考幀、多尺寸塊、1/4子像素精度等技術(shù),在獲得低碼率、高質(zhì)量的同時(shí),也極大地增加了編碼器中運(yùn)動(dòng)估計(jì)的計(jì)算復(fù)雜度和內(nèi)存帶寬。運(yùn)動(dòng)估計(jì)由大規(guī)模集成電路實(shí)現(xiàn)的時(shí)候,對(duì)標(biāo)清/高清運(yùn)動(dòng)幅度大的視頻,內(nèi)存帶寬成為運(yùn)動(dòng)估計(jì)的主要瓶頸。
做運(yùn)動(dòng)估計(jì)時(shí),有的將高或?qū)挷荒鼙?6整除的圖像擴(kuò)邊成能被16整除的圖像,存儲(chǔ)在片外內(nèi)存;有的根據(jù)運(yùn)動(dòng)估計(jì)的搜索范圍對(duì)整像素進(jìn)行擴(kuò)邊,存儲(chǔ)在片外內(nèi)存;有的甚至將差值出來的子像素及其擴(kuò)邊,也存儲(chǔ)在片外內(nèi)存;匹配時(shí)直接從存儲(chǔ)參考幀的片外內(nèi)存讀取數(shù)據(jù)。這樣操作,內(nèi)存帶寬是巨大的,實(shí)時(shí)編碼幾乎是不可能的。目前已有多種降低內(nèi)存帶寬的方法,其共同點(diǎn)都是將參考幀的像素由片外內(nèi)存預(yù)取至片內(nèi)內(nèi)存。有的對(duì)每個(gè)宏塊的搜索窗口都預(yù)取一次,盡管減少了誤緩沖(mis-cache)的次數(shù),加快了數(shù)據(jù)處理的速度,但對(duì)內(nèi)存帶寬來說是一種巨大的浪費(fèi)。有的一次將若干行的宏塊讀取至片內(nèi),這對(duì)低分辨率的手機(jī)視頻還可以,對(duì)高分辨率的標(biāo)清/高清圖像則是行不通的,因?yàn)樗紦?jù)的片內(nèi)存儲(chǔ)太大了。很多有關(guān)內(nèi)存帶寬的技術(shù)僅考慮整像素運(yùn)動(dòng)估計(jì),對(duì)子像素運(yùn)動(dòng)估計(jì)、運(yùn)動(dòng)補(bǔ)償是另行處理的,這就需要占據(jù)額外的內(nèi)存帶寬和片內(nèi)存儲(chǔ),而有的子像素運(yùn)動(dòng)估計(jì)占據(jù)的片內(nèi)存儲(chǔ)甚至比整像素運(yùn)動(dòng)估計(jì)占據(jù)的片內(nèi)存儲(chǔ)還多。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法,可以對(duì)不同架構(gòu)進(jìn)行相應(yīng)配置,對(duì)整像素運(yùn)動(dòng)估計(jì)、子像素運(yùn)動(dòng)估計(jì)、運(yùn)動(dòng)補(bǔ)償統(tǒng)一處理,并能更好地加快數(shù)據(jù)處理速度、減小內(nèi)存帶寬、減少片內(nèi)存儲(chǔ)。
為了達(dá)到上述目的,本發(fā)明的技術(shù)方案如下 一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法,通過一個(gè)環(huán)柱狀片內(nèi)空間,來實(shí)現(xiàn)數(shù)據(jù)的預(yù)取、數(shù)據(jù)和空間的重用、運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償,所述環(huán)柱的周長(zhǎng)和高都是以像素為單位,所述周長(zhǎng)為EXT+2*SRX+16+2*SRX+EXT+H*16,高為EXT+2*SRY+16+2*SRY+EXT+(V-1)*16;其中SRX為X方向的搜索范圍,SRY為Y方向的搜索范圍,EXT是1/4像素插值需要的最優(yōu)整像素點(diǎn)上、下、左、右的整像素?cái)?shù)。
采用上述方法,通過將數(shù)據(jù)預(yù)取至上述結(jié)構(gòu)的環(huán)柱狀空間,可以減小mis-cache的次數(shù)以加快數(shù)據(jù)處理的速度,同時(shí)能減小內(nèi)存帶寬以減少功耗,并減少片內(nèi)、片外的存儲(chǔ)空間。
圖1顯示了被循環(huán)重用的環(huán)柱狀片內(nèi)空間,及空間中每次預(yù)取的一個(gè)個(gè)豎向宏塊條。
圖2示出了環(huán)柱展開成的長(zhǎng)方形,整像素運(yùn)動(dòng)估計(jì)的搜索窗口,窗口中整像素運(yùn)動(dòng)估計(jì)原點(diǎn)、預(yù)測(cè)點(diǎn)、匹配點(diǎn)之間的關(guān)系,子像素運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償所需的窗口外像素EXT,右側(cè)預(yù)留的H個(gè)豎向宏塊條,底側(cè)用于同時(shí)做V行宏塊編碼所需的V-1個(gè)橫向宏塊條。
圖3A-3C示出了對(duì)一行或兩行宏塊條同時(shí)編碼時(shí),第一個(gè)宏塊即mbx=0時(shí)數(shù)據(jù)預(yù)取的種情況。其中圖3A示出了最初幾行宏塊的情形;圖3B示出了中間大多數(shù)宏塊行的情形;圖3C示出了最后幾行宏塊行的情形。
圖4A1-4C3示出了對(duì)一行或兩行宏塊編碼時(shí),mbx!=0時(shí)數(shù)據(jù)預(yù)取的情況。其中圖4A1-4A3示出了最初幾行宏塊的情形;圖4B1-4B3示出了中間大多數(shù)宏塊行的情形;圖4C1-4C3示出了最后幾行宏塊行的情形。其中圖4A1、4B1、4C1示出了每行中間大部分宏塊編碼時(shí),宏塊條橫向充滿的情形,圖4A2、4B2、4C2示出了每行后部某一宏塊編碼時(shí),宏塊條橫向不充滿的情形,圖4A3、4B3、4C3示出了每行最末幾個(gè)宏塊編碼時(shí),宏塊條沒有預(yù)取數(shù)據(jù)的情形。
圖5A-5B示出了相鄰宏塊編碼做運(yùn)動(dòng)估計(jì)時(shí),重用片內(nèi)數(shù)據(jù)的情形,圖5A是水平方向相鄰宏塊的重用,圖5B是垂直方向相鄰宏塊的重用。
圖6A-6B示出了整像素運(yùn)動(dòng)估計(jì)匹配時(shí),相鄰像素間數(shù)據(jù)的重用,圖6A是水平方向相鄰像素間數(shù)據(jù)的重用,圖6B是垂直方向相鄰像間數(shù)據(jù)的重用。
圖7示出了環(huán)柱狀片內(nèi)空間這一裝置在視頻編碼系統(tǒng)中的位置。參考幀(reference frames)存儲(chǔ)在片外內(nèi)存,每次將所需的像素預(yù)取至環(huán)柱狀片內(nèi)空間(cache),利用空間里的數(shù)據(jù)實(shí)現(xiàn)運(yùn)動(dòng)估計(jì)(ME)和運(yùn)動(dòng)補(bǔ)償(MC)的算法。
具體實(shí)施例方式 下面根據(jù)圖1至圖7,給出本發(fā)明的較佳實(shí)施例,并予以詳細(xì)描述,使能更好地理解本發(fā)明的功能、特點(diǎn)。
本發(fā)明設(shè)計(jì)了一個(gè)環(huán)柱狀片內(nèi)空間,以實(shí)現(xiàn)數(shù)據(jù)的預(yù)取、數(shù)據(jù)的重用、空間的重用、整像素的運(yùn)動(dòng)估計(jì)、子像素的運(yùn)動(dòng)估計(jì)、運(yùn)動(dòng)補(bǔ)償,從而達(dá)到加快速度、減小帶寬、節(jié)省存儲(chǔ)的目的。
環(huán)柱狀片內(nèi)空間是這樣的環(huán)柱的周長(zhǎng)=EXT+2*SRX+16+2*SRX+EXT+H*16,環(huán)柱的高=EXT+2*SRY+16+2*SRY+EXT+(V-1)*16,16是宏塊的寬和高。SRX為X方向的搜索范圍,SRY為Y方向的搜索范圍。EXT是1/4像素插值需要的最優(yōu)整像素點(diǎn)上下左右的整像素?cái)?shù),對(duì)AVS和h.264,EXT=3。H=1、2、3,V=1、2。參見附圖1環(huán)柱狀片內(nèi)空間、附圖2環(huán)柱展開成的長(zhǎng)方形。
環(huán)柱狀空間的變量H、V、EXT、SRX、SRY,對(duì)不同的架構(gòu),甚至不同的標(biāo)準(zhǔn),可以做相應(yīng)的配置。無論對(duì)什么樣的架構(gòu),PC、DSP還是VLSI,若mby每次增1,即對(duì)一行宏塊編碼,V=1,若mby每次增2,即同時(shí)對(duì)二行宏塊編碼,V=2。對(duì)標(biāo)清V=1或2,對(duì)高清,V=2,V=2的意義在于更有效地減小內(nèi)存帶寬。V=1時(shí),對(duì)PC、DSP架構(gòu),H=1,表明當(dāng)前宏塊的運(yùn)動(dòng)估計(jì)與下一宏塊的數(shù)據(jù)預(yù)取可以并行執(zhí)行;對(duì)VLSI的流水線架構(gòu),H=2,目的在于當(dāng)前宏塊的子像素運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償?shù)南袼夭槐幌乱缓陦K的整像素運(yùn)動(dòng)估計(jì)的像素覆蓋掉,并且整像素運(yùn)動(dòng)估計(jì)時(shí)數(shù)據(jù)已被預(yù)取好。V=2時(shí),對(duì)PC、DSP架構(gòu),H=2,兩行宏塊中第一行宏塊的最初2個(gè)宏塊要連續(xù)編碼,并且隨后宏塊的運(yùn)動(dòng)估計(jì)與數(shù)據(jù)預(yù)取并行執(zhí)行;對(duì)VLSI流水線架構(gòu),H=3,兩行宏塊中第一行宏塊的最初3個(gè)宏塊要連續(xù)編碼,并且運(yùn)動(dòng)估計(jì)之前數(shù)據(jù)要預(yù)取好。EXT根據(jù)子像素的差值來配置,對(duì)AVS和H.264,EXT=3;對(duì)MPEG2和MPEG4-2,EXT=1。SRX、SRY,根據(jù)圖像的運(yùn)動(dòng)幅度大小和編碼器的資源合理配置,如SRX=SRY=16或SRX=32,SRY=16。
數(shù)據(jù)的預(yù)取是這樣的設(shè)一幅圖像的寬和高分別是width和height,(mbx,mby)是一幅圖象的以宏塊為單位的坐標(biāo),那么0<=mbx<ceil(width/16),0<=mby<ceil(height/16)。當(dāng)mbx=0時(shí),參見附圖3數(shù)據(jù)的預(yù)取mbx=0,分A0<=mby<ceil((2*SRY+EXT)/16)、Bfloor((2*SRY+EXT)/16)<mby<ceil((height-(16+2*SRY+EXT+(V-1)*16))/16)、Cmby>floor((height-(16+2*SRY+EXT+(V-1)*16))/16)三種情形;由以下三步完成預(yù)取過程 第一步,將參考幀的像素預(yù)取至環(huán)柱狀空間的相應(yīng)位置,圖中的灰色部分,這是一個(gè)水平方向16+2*SRX+EXT個(gè)像素、垂直方向EXT+2*SRY+16+2*SRY+EXT+(V-1)*16-(up_dy>0?up_dybot_dy>0?bot_dy0)個(gè)像素的矩形,其中up_dy=EXT+2*SRY-mby*16,bot_dy=mby*16+16+2*SRY+EXT-height。對(duì)情形A,up_dy>0,圖中畫出的是mby=0的情形;對(duì)情形B,up_dy<=0且bot_dy<=0;對(duì)清形C,bot_dy>0,圖中畫出的是mby=height/16-1且height被16整除的情形。
第二步,將預(yù)取的灰色區(qū)域的最左一列的每一個(gè)像素,向左平行擴(kuò)寫EXT+2*SRX個(gè)像素,這將形成一個(gè)水平方向EXT+2*SRX個(gè)像素、垂直方向EXT+2*SRY+16+2*SRY+EXT+(V-1)*16-(up_dy>0?up_dybot_dy>0?bot_dy0)個(gè)像素的矩形,up_dy、bot_dy同上。
第三步,用預(yù)取的最上一行像素(包括向左擴(kuò)充的像素)垂直向上擴(kuò)寫至環(huán)柱狀空間的頂部,或用預(yù)取的最下一行像素(包括向左擴(kuò)充的像素)垂直向下擴(kuò)寫至環(huán)柱狀空間的底部。對(duì)情形A,形成一個(gè)水平方向EXT+2*SRX+16+2*SRX+EXT個(gè)像素、垂直方向EXT+2*SRY-mby*16個(gè)像素的矩形;對(duì)情形B,灰色區(qū)域上、下方都沒有空白區(qū)域,此時(shí)已經(jīng)滿足要求;對(duì)情形C,形成一個(gè)水平方向EXT+2*SRX+16+2*SRX+EXT個(gè)像素、垂直方向mby*16+16+2*SRY+EXT-height個(gè)像素的矩形。
當(dāng)mbx?。?時(shí),參見附圖4數(shù)據(jù)的預(yù)取mbx?。?,分A1、A2、A3、B1、B2、B3、C1、C2、C3九種情形,A、B、C的條件與mbx=0時(shí)一樣,1、2、3的條件分別是10<mbx<ceil((width-(2*SRX+EXT+16))/16);2floor((width-(2*SRX+EXT+16))/16)<mbx<ceil((width-(2*SRX+EXT))/16),3mbx>floor((width-(2*SRX+EXT))/16);由以下二步完成數(shù)據(jù)的預(yù)取過程 第一步、從參考幀預(yù)取數(shù)據(jù)至環(huán)柱狀空間的相應(yīng)位置,圖中的灰色部分,這是一個(gè)水平方向x個(gè)像素寬、0<=x<=16、垂直方向EXT+2*SRY+16+2*SRY+EXT+(V-1)*16-(up_dy>0?up_dybot_dy>0?bot_dy0)個(gè)像素高的像素條,up_dy、bot_dy同上。對(duì)情形1,像素條每行水平方向的16個(gè)像素全部由片外預(yù)取至片內(nèi);對(duì)情形2,像素條每行水平方向僅預(yù)取到x0、0<x0<16個(gè)像素,則將每行最后預(yù)取的一個(gè)像素按水平方向右擴(kuò)寫x1個(gè)像素,使得x0+x1=16;對(duì)情形3,沒有從片外預(yù)取到數(shù)據(jù),則將左側(cè)宏塊條的最右一列像素水平向右擴(kuò)寫至16個(gè)像素。該步驟結(jié)束后,對(duì)每種情況都將獲得一個(gè)16像素寬、EXT+2*SRY+16+2*SRY+EXT+(V-1)*16-(up_dy>0?up_dybot_dy>0?bot_dy0)像素高的宏塊條。
第二步、用上一步驟獲得的宏塊條最上一行的16個(gè)像素垂直向上擴(kuò)寫至環(huán)柱的頂部,或用宏塊條的最下一行16個(gè)像素向下擴(kuò)寫至環(huán)柱的底部。對(duì)情形A,向上擴(kuò)寫形成一個(gè)水平方向16個(gè)像素寬、垂直方向EXT+2*SRY-mby*16個(gè)像素高的宏塊條;對(duì)情形B,不需要擴(kuò)寫;對(duì)情形C,向下擴(kuò)寫形成一個(gè)水平方向16個(gè)像素寬、垂直方向mby*16+16+2*SRY+EXT-height個(gè)像素高的宏塊條。該步驟結(jié)束后,就得到了16像素寬、EXT+2*SRY+16+2*SRY+EXT+(V-1)*16像素高(環(huán)柱狀高)的宏塊條。
上面數(shù)據(jù)預(yù)取的過程,描述了如何將片外參考幀的像素預(yù)取到環(huán)柱狀片內(nèi)空間。無論width、height能不能被16整除,不需要做任何處理,都隱含在具體的實(shí)現(xiàn)中了,也沒有根據(jù)搜索范圍進(jìn)行整像素?cái)U(kuò)邊,預(yù)取的僅是整像素,子像素是不存儲(chǔ)的,這既減少了存儲(chǔ),也減小了預(yù)取數(shù)據(jù)的帶寬。內(nèi)存帶寬的減小,數(shù)據(jù)的重用,空間的重用,也在這個(gè)過程中體現(xiàn)出來了。內(nèi)存帶寬的減小,主要是靠數(shù)據(jù)的重用來實(shí)現(xiàn)的。
數(shù)據(jù)的重用包括兩個(gè)層次一是由片外預(yù)取至片內(nèi)的數(shù)據(jù)的重用,二是由片內(nèi)送往處理單元的數(shù)據(jù)的重用。第一層次的數(shù)據(jù)重用,參見圖5相鄰宏塊間數(shù)據(jù)的重用,A水平方向,B垂直方向。水平方向數(shù)據(jù)的重用,發(fā)生在左右相鄰宏塊依次編碼時(shí),單個(gè)宏塊的范圍是高為EXT+2*SRY+16+2*SRY+EXT,寬為EXT+2*SRX+16+2*SRX+EXT的矩形,也就是圖中的灰色部分加一個(gè)16像素寬的豎向宏塊條(白色部分),灰色部分(重疊部分)的數(shù)據(jù)并不需要再次預(yù)取,這就大大地減小了內(nèi)存帶寬;垂直方向數(shù)據(jù)的重用,發(fā)生在V=2時(shí),單個(gè)宏塊的范圍也是高為EXT+2*SRY+16+2*SRY+EXT,寬為EXT+2*SRX+16+2*SRX+EXT的矩形,也就是圖中的灰色部分加一個(gè)16像素高的橫向宏塊條(白色部分),灰色部分(重疊部分)的數(shù)據(jù)不需要再次預(yù)取,這就更有效地減小了內(nèi)存帶寬;空間中的EXT,是做子像素差值用的,不單獨(dú)處理,不重復(fù)預(yù)取,也被重用,更進(jìn)一步地減小了帶寬。
第二層次的數(shù)據(jù)重用,參見附圖六相鄰像素間數(shù)據(jù)的重用,灰色部分A水平方向,B垂直方向。這個(gè)層次的數(shù)據(jù)重用,發(fā)生在將片內(nèi)空間的數(shù)據(jù)送往處理單元處理時(shí)。一次匹配時(shí),256個(gè)參考像素已經(jīng)在處理單元內(nèi),若下一個(gè)匹配的像素是水平方向的相鄰像素,則只需將緊鄰參考宏塊右側(cè)(或左側(cè))垂直方向的16個(gè)像素(圖中的細(xì)長(zhǎng)白條)送往處理單元;若下一個(gè)匹配的像素是垂直方向的相鄰像素,則只需將緊鄰參考宏塊下側(cè)(或上側(cè))平行方向的16個(gè)像素(圖中的細(xì)長(zhǎng)白條)送往處理單元。這樣每次匹配有15×16或16×15個(gè)像素(圖中的灰色部分)被重用,這將減小片內(nèi)內(nèi)存與處理單元之間的傳送數(shù)據(jù)的帶寬,并加快數(shù)據(jù)處理的速度。
對(duì)片內(nèi)空間的節(jié)省,主要是通過空間的重用實(shí)現(xiàn)的??臻g的重用是這樣的mbx=H時(shí),預(yù)取的數(shù)據(jù)將整個(gè)環(huán)柱狀空間填滿,mbx每增加1,預(yù)取的數(shù)據(jù)就要向右覆蓋一個(gè)垂直像素條,空間的重用就這樣實(shí)現(xiàn)了。參見圖1環(huán)柱狀片內(nèi)空間,虛線隔出一個(gè)個(gè)垂直像素條。舉例說明由于環(huán)柱的周長(zhǎng)=EXT+2*SRX+16+2*SRX+EXT+H*16,邏輯上的圖像寬=EXT+2*SRX+width+2*SRX+EXT,對(duì)標(biāo)清D1,width=720,height=576,設(shè)SRX=16,H=V=1,EXT=3,那么圖像寬/環(huán)柱周長(zhǎng)=(3+2*16+720+2*16+3)/(3+2*16+16+2*16+3+16)=790/102=7.7,也就是說,每對(duì)一行宏塊編碼,環(huán)柱狀空間至少被重用7次;576/16=36,36*7=252,也就是說一幅D1參考幀,做運(yùn)動(dòng)估計(jì)時(shí),環(huán)柱狀空間就被重用252次。
整像素運(yùn)動(dòng)估計(jì),參見圖2環(huán)柱展開成的長(zhǎng)方形,圖中的搜索窗口,原點(diǎn)(0,0)、預(yù)測(cè)點(diǎn)MVP(pmvx,pmvy)、匹配點(diǎn)MV(mvx,mvy)反映了整像素運(yùn)動(dòng)估計(jì)與環(huán)柱狀空間的關(guān)系。整像素運(yùn)動(dòng)估計(jì)在以MVP(pmvx,pmvy),-SRX<=pmvx<=SRX,-SRY<=pmvy<=SRY為中心點(diǎn),以-SRX<=mvx-pmvx<SRX,-SRY<=mvy-pmvy<SRY為搜索范圍的區(qū)域內(nèi)搜索。搜索的區(qū)域只是搜索窗口的四分之一,可以做全搜索,適合于大規(guī)模集成電路的實(shí)現(xiàn)。整像素運(yùn)動(dòng)估計(jì)的算法,就是在環(huán)柱狀空間里實(shí)現(xiàn)的,將搜索區(qū)域的數(shù)據(jù)送往數(shù)據(jù)匹配處理單元,適合第二層次的數(shù)據(jù)重用。
子像素運(yùn)動(dòng)估計(jì),圍繞最優(yōu)整像素點(diǎn),先要進(jìn)行1/2像素差值,求出最優(yōu)1/2像素點(diǎn);再圍繞最優(yōu)1/2像素點(diǎn)進(jìn)行1/4像素差值,求出最優(yōu)1/4像素點(diǎn)。當(dāng)最優(yōu)整像素點(diǎn)(bmvx,bmvy)與搜索窗口的邊界點(diǎn)(emvx,emvy)滿足|bmvx-emvx|<EXT或|bmvy-emby|<EXT時(shí),就要用到附圖2環(huán)柱展開成的長(zhǎng)方形中EXT的數(shù)據(jù)。為節(jié)省片內(nèi)存儲(chǔ)空間,子像素是不作過多存儲(chǔ)的,隨用隨插,用過即扔,若用再插。
運(yùn)動(dòng)補(bǔ)償,當(dāng)最優(yōu)運(yùn)動(dòng)向量MV(mvx,mvy)是整像素點(diǎn)時(shí),不需要做子像素差值,運(yùn)動(dòng)補(bǔ)償可以直接從搜索窗口中求出;當(dāng)MV(mvx,mvy)是1/2像素點(diǎn)的時(shí)候,不需要做1/4子像素差值,合理插出1/2像素值作為運(yùn)動(dòng)補(bǔ)償;當(dāng)MV(mvx,mvy)是1/4像素點(diǎn)時(shí),先做1/2像素差值,再做1/4像素差值,插出運(yùn)動(dòng)補(bǔ)償?shù)慕Y(jié)果。運(yùn)動(dòng)補(bǔ)償中子像素的差值與子像素運(yùn)動(dòng)估計(jì)的差值規(guī)律是一樣的。
整像素運(yùn)動(dòng)估計(jì)、子像素運(yùn)動(dòng)估計(jì)、運(yùn)動(dòng)補(bǔ)償共用環(huán)柱狀片內(nèi)空間,參見圖7模塊設(shè)置圖中的灰色模塊。通過數(shù)據(jù)的預(yù)取,處理單元及時(shí)取到數(shù)據(jù),加快了處理速度;通過數(shù)據(jù)的重用,減小了內(nèi)存帶寬;通過空間的重用,減少了片內(nèi)存儲(chǔ)。
前面提供了對(duì)較佳實(shí)施例的描述,以使本領(lǐng)域內(nèi)的任何技術(shù)人員可使用或利用本發(fā)明。對(duì)該較佳實(shí)施例,本領(lǐng)域內(nèi)的技術(shù)人員在不脫離本發(fā)明原理的基礎(chǔ)上,可以作出各種修改或者變換。應(yīng)當(dāng)理解,這些修改或者變換都不脫離本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法,通過一個(gè)環(huán)柱狀片內(nèi)空間,來實(shí)現(xiàn)數(shù)據(jù)的預(yù)取、數(shù)據(jù)和空間的重用、運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償,所述環(huán)柱的周長(zhǎng)和高都是以像素為單位,所述周長(zhǎng)為EXT+2*SRX+16+2*SRX+EXT+H*16,高為EXT+2*SRY+16+2*SRY+EXT+(V-1)*16;其中SRX為X方向的搜索范圍,SRY為Y方向的搜索范圍,EXT是1/4像素插值需要的最優(yōu)整像素點(diǎn)上、下、左、右的整像素?cái)?shù)。
2、如權(quán)利要求1所述的一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法,其特征在于,對(duì)于AVS和h.264標(biāo)準(zhǔn)的編碼系統(tǒng),EXT=3,H=1或2或3,V=1或2。
3、如權(quán)利要求1或2所述的一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法,其特征在于,當(dāng)一幅圖像的以宏塊為單位的橫坐標(biāo)等于零時(shí),完成預(yù)取的步驟如下
將參考幀的像素預(yù)取至環(huán)柱狀空間的相應(yīng)位置;
用預(yù)取的最左一列的像素向左平行擴(kuò)寫EXT+2*SRX個(gè)像素;
用預(yù)取的最上一行像素垂直向上擴(kuò)寫至環(huán)柱狀空間的頂部或用預(yù)取的最下一行像素垂直向下擴(kuò)寫至環(huán)柱狀空間的底部。
4、如權(quán)利要求3所述的一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法,其特征在于,當(dāng)一幅圖像的以宏塊為單位的橫坐標(biāo)等于零時(shí),分為0<=mby<ceil((2*SRY+EXT)/16)、floor((2*SRY+EXT)/16)<mby<ceil((height-(16+2*SRY+EXT+(V-1)*16))/16)、mby>floor((height-(16+2*SRY+EXT+(V-1)*16))/16)三種情形;其中mby是一幅圖像的以宏塊為單位的縱坐標(biāo),height是圖像的高。
5、如權(quán)利要求1或2所述的一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法,其特征在于,當(dāng)一幅圖像的以宏塊為單位的橫坐標(biāo)不等于零時(shí),完成預(yù)取的步驟如下
從參考幀預(yù)取數(shù)據(jù)至環(huán)柱狀空間的相應(yīng)的16個(gè)像素寬的垂直宏塊條,若每行預(yù)取不到16個(gè)像則將該行最后預(yù)取的一個(gè)像素水平向右擴(kuò)寫至16個(gè)像素,若每行一個(gè)像素都預(yù)取不到則將左側(cè)宏塊條的最右一列像素水平擴(kuò)寫至16個(gè)像素;
用預(yù)取的宏塊條最上一行的16個(gè)像素垂直向上擴(kuò)寫至環(huán)柱的頂部或用預(yù)取的宏塊條的最下一行16個(gè)像素向下擴(kuò)寫至宏塊條的底部。
6、如權(quán)利要求5所述的一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法,其特征在于,當(dāng)一幅圖像的以宏塊為單位的橫坐標(biāo)不等于零時(shí),分為0<=mby<ceil((2*SRY+EXT)/16)且0<mbx<ceil((width-(2*SRX+EXT+16))/16)、0<=mby<ceil((2*SRY+EXT)/16)且floor((width-(2*SRX+EXT+16))/16)<mbx<ceil((width-(2*SRX+EXT))/16)、0<=mby<ceil((2*SRY+EXT)/16)且mbx>floor((width-(2*SRX+EXT))/16)、floor((2*SRY+EXT)/16)<mby<ceil((height-(1 6+2*SRY+EXT+(V-1)*16))/16)且0<mbx<ceil((width-(2*SRX+EXT+16))/16)、floor((2*SRY+EXT)/16)<mby<ceil((height-(16+2*SRY+EXT+(V-1)*16))/16)且floor((width-(2*SRX+EXT+16))/16)<mbx<ceil((width-(2*SRX+EXT))/16)、floor((2*SRY+EXT)/16)<mby<ceil((height-(16+2*SRY+EXT+(V-1)*16))/16)且mbx>floor((width-(2*SRX+EXT))/16)、mby>floor((height-(16+2*SRY+EXT+(V-1)*16))/16)且0<mbx<ceil((width-(2*SRX+EXT+16))/16)、mby>floor((height-(16+2*SRY+EXT+(V-1)*16))/16)且floor((width-(2*SRX+EXT+16))/16)<mbx<ceil((width-(2*SRX+EXT))/16)、mby>floor((height-(16+2*SRY+EXT+(V-1)*16))/16)且mbx>floor((width-(2*SRX+EXT))/16)九種情形;其中mby是一幅圖像的以宏塊為單位的縱坐標(biāo),mbx是一幅圖像的以宏塊為單位的橫坐標(biāo),height是圖像的高,width是圖像的寬。
7、如權(quán)利要求1或2所述的一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法,其特征在于,數(shù)據(jù)的重用包括由片外預(yù)取至片內(nèi)的數(shù)據(jù)的重用和由片內(nèi)送往處理單元的數(shù)據(jù)的重用。
8、如權(quán)利要求7所述的一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法,其特征在于,在相鄰宏塊編碼時(shí),發(fā)生由片外預(yù)取至片內(nèi)的數(shù)據(jù)的重用;左右相鄰宏塊編碼,有(EXT+2*SRX+16+2*SRX+EXT-16)×(EXT+2*SRY+16+2*SRY+EXT)個(gè)像素重用;上下相鄰宏塊編碼時(shí),有(EXT+2*SRX+16+2*SRX+EXT6)×(EXT+2*SRY+16+2*SRY+EXT-16)個(gè)像素重用。
9、如權(quán)利要求7或8所述的一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法,其特征在于,在將片內(nèi)空間的數(shù)據(jù)送往處理單元處理時(shí),發(fā)生由片內(nèi)送往處理單元的數(shù)據(jù)的重用;一次匹配時(shí),256個(gè)參考像素已經(jīng)在處理單元內(nèi),若下一個(gè)匹配的像素是水平方向的相鄰像素,則只需將緊鄰參考宏塊右側(cè)或左側(cè)垂直方向的16個(gè)像素送往處理單元;若下一個(gè)匹配的像素是垂直方向的相鄰像素,則只需將緊鄰參考宏塊下側(cè)或上側(cè)平行方向的16個(gè)像素送往處理單元。
10、如權(quán)利要求1或2所述的一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法,其特征在于,整像素運(yùn)動(dòng)估計(jì)、子像素運(yùn)動(dòng)估計(jì)以及運(yùn)動(dòng)補(bǔ)償都是在環(huán)柱狀片內(nèi)空間里完成的;整像素運(yùn)動(dòng)估計(jì)在以MVP(pmvx,pmvy),-SRX<=pmvx<=SRX,-SRY<=pmvy<=SRY為中心點(diǎn),以-SRX<=mvx-pmvx<SRX,-SRY<=mvy-pmvy<SRY為搜索范圍的區(qū)域內(nèi)搜索;子像素運(yùn)動(dòng)估計(jì)是圍繞最優(yōu)整像素點(diǎn),先要進(jìn)行1/2像素差值并求出最優(yōu)1/2像素點(diǎn),再圍繞最優(yōu)1/2像素點(diǎn)進(jìn)行1/4像素差值并求出最優(yōu)1/4像素點(diǎn);運(yùn)動(dòng)補(bǔ)償?shù)牟襟E為當(dāng)最優(yōu)運(yùn)動(dòng)向量MV(mvx,mvy)是整像素點(diǎn)時(shí),不需要做子像素差值;當(dāng)MV(mvx,mvy)是1/2像素點(diǎn)的時(shí)候,僅1/2像素差值;當(dāng)MV(mvx,mvy)是1/4像素點(diǎn)時(shí),先做1/2像素差值,再做1/4像素差值。
全文摘要
本發(fā)明公開了一種適用于運(yùn)動(dòng)估計(jì)的片內(nèi)存儲(chǔ)的方法,通過一個(gè)環(huán)柱狀片內(nèi)空間,來實(shí)現(xiàn)數(shù)據(jù)的預(yù)取、數(shù)據(jù)和空間的重用、運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償,所述環(huán)柱的周長(zhǎng)和高都是以像素為單位,所述周長(zhǎng)為EXT+2*SRX+16+2*SRX+EXT+H*16,高為EXT+2*SRY+16+2*SRY+EXT+(V-1)*16;其中SRX為X方向的搜索范圍,SRY為Y方向的搜索范圍,EXT是1/4像素插值需要的最優(yōu)整像素點(diǎn)上、下、左、右的整像素?cái)?shù)。采用上述方法,通過將數(shù)據(jù)預(yù)取至上述結(jié)構(gòu)的環(huán)柱狀空間,可以減小mis-cache的次數(shù)以加快數(shù)據(jù)處理的速度,同時(shí)能減小內(nèi)存帶寬以減少功耗,并減少片內(nèi)、片外的存儲(chǔ)空間。
文檔編號(hào)H04N7/26GK101102493SQ20071004462
公開日2008年1月9日 申請(qǐng)日期2007年8月7日 優(yōu)先權(quán)日2007年8月7日
發(fā)明者野 田 申請(qǐng)人:華亞微電子(上海)有限公司