專利名稱:圖像運(yùn)動(dòng)估計(jì)的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明主題涉及視頻處理,特別是視頻處理中的運(yùn)動(dòng)估計(jì)。
背景技術(shù):
視頻的傳輸和存儲(chǔ)對(duì)于許多應(yīng)用非常重要,已經(jīng)獲得了世界范圍內(nèi)的關(guān)注。但是, 原始的未經(jīng)壓縮的視頻序列可能非常大。例如,對(duì)于高清視頻,原始的未經(jīng)壓縮的視頻數(shù)據(jù)可能近448G。而且,原始的未壓縮的視頻數(shù)據(jù)包含很多的冗余信息,像時(shí)域上的冗余、空域上的冗余和/或統(tǒng)計(jì)冗余。因此,利用視頻壓縮來(lái)減小原始視頻數(shù)據(jù)量。已經(jīng)開發(fā)了多種視頻編碼標(biāo)準(zhǔn),像運(yùn)動(dòng)視頻專家組的MPEG-V2/4和國(guó)際電信聯(lián)盟電信標(biāo)準(zhǔn)的ITU-T Η^61Λ63Λ64,以求達(dá)到高效的視頻壓縮。例如,不同的編碼標(biāo)準(zhǔn)應(yīng)用運(yùn)動(dòng)估計(jì)和補(bǔ)償來(lái)實(shí)現(xiàn)視頻壓縮,對(duì)時(shí)域冗余信息進(jìn)行壓縮。一些視頻編碼方法應(yīng)用離散余弦變換來(lái)實(shí)現(xiàn)對(duì)空間冗余信息的壓縮。一些利用熵編碼實(shí)現(xiàn)統(tǒng)計(jì)壓縮。還有一些視頻編碼標(biāo)準(zhǔn)應(yīng)用量化來(lái)減少視覺冗余以達(dá)到壓縮目的。然而,各種視頻壓縮技術(shù)都會(huì)有相應(yīng)的權(quán)衡,那就是增加運(yùn)算的復(fù)雜度和編碼時(shí)間。例如,整數(shù)運(yùn)動(dòng)估計(jì)占用了將近60%的編碼時(shí)間。如果采用分?jǐn)?shù)運(yùn)動(dòng)估計(jì),相應(yīng)的編碼時(shí)間會(huì)達(dá)到90%。之前對(duì)于現(xiàn)代的視頻處理技術(shù)上的描述的不足之處僅僅是為了提供一個(gè)對(duì)傳統(tǒng)系統(tǒng)概述的一些問題,而不是為了進(jìn)行窮舉。傳統(tǒng)系統(tǒng)的其他問題在以下的描述中將更加明了。
發(fā)明內(nèi)容
此處給出有關(guān)本發(fā)明概要的描述。根據(jù)一個(gè)或多個(gè)方面以及對(duì)應(yīng)的公開內(nèi)容,各方面都是和率失真最優(yōu)化(RDO)運(yùn)動(dòng)矢量預(yù)測(cè)(MVP)偏移可變塊大小(VBQ運(yùn)動(dòng)估計(jì)算法有關(guān)(將該算法稱為率失真最優(yōu)化單一運(yùn)動(dòng)矢量預(yù)測(cè)偏移全搜索(RD0MFQ算法),及其對(duì)應(yīng)的可重構(gòu)的硬件架構(gòu)。在一方面, RDOMFS使用易于硬件實(shí)現(xiàn)的一個(gè)單一 MVP (SMVP)及RD代價(jià)函數(shù),以能夠取得與H. 264參考軟件JM中的FS-RD-var-mvp相似的編碼效率。在其他方面,匹配算法對(duì)應(yīng)的硬件架構(gòu)使用了 2-D脈動(dòng)陣列來(lái)實(shí)現(xiàn)所提出的RD0MFS。RDOMFS重新使用當(dāng)前幀中的MVP,以消除或者基本上消除將MV存儲(chǔ)在片上芯片中的需要。一個(gè)新穎的MV再利用架構(gòu)被提出,從而可以消除,或極大地減少M(fèi)V所需的存儲(chǔ)器。其次,RDOMFS使用了一種新型的掃描方法,在搜索窗口中使用了一種新的掃描順序,使得冗余度去能夠被最小化,且能夠?qū)崿F(xiàn)不同的數(shù)據(jù)利用率。以下將詳細(xì)描述這些和其它實(shí)施例。
參照附圖,進(jìn)一步描述各種非限制性實(shí)施例,其中圖1顯示了提供視頻壓縮的示例性系統(tǒng)的上層框圖;圖2A顯示了對(duì)于不同的塊大小的H. 264中值運(yùn)動(dòng)矢量預(yù)測(cè)值的定義;圖2B顯示了根據(jù)一個(gè)方面的所有子塊統(tǒng)一的單一運(yùn)動(dòng)矢量預(yù)測(cè)值(SMVP);圖2C顯示了左側(cè)、頂部和右上角子塊的空間上的不同定義圖3顯示了根據(jù)一個(gè)方面的一種視頻壓縮方法;圖4顯示了根據(jù)一個(gè)方面的一種系統(tǒng);圖5顯示了所公開方面的頂層框圖;圖6A顯示了傳統(tǒng)的光柵掃描;圖6B顯示了傳統(tǒng)的蛇型掃描;圖6C顯示了根據(jù)一個(gè)方面的一種智能的蛇型掃描順序;圖6D示出了根據(jù)一個(gè)方面的圖6C的兩個(gè)放大的子區(qū)域;圖7顯示了根據(jù)一個(gè)方面的一種視頻處理的方法;圖8顯示了根據(jù)一個(gè)方面的一種視頻編碼的系統(tǒng);圖9顯示了當(dāng)前幀中MVP再利用方法的概念;圖10顯示了根據(jù)一個(gè)方面的一種多分辨率MVP再利用策略的設(shè)備;以及圖11顯示了根據(jù)一個(gè)方面的一種視頻編碼的方法。
具體實(shí)施例方式如之前所提到的,許多應(yīng)用都利用視頻的傳輸和存儲(chǔ),因此,高效的視頻壓縮得到了廣泛的關(guān)注。傳統(tǒng)的視頻壓縮技術(shù)或應(yīng)用運(yùn)動(dòng)估計(jì)和補(bǔ)償來(lái)實(shí)現(xiàn)視頻壓縮中對(duì)時(shí)域冗余信息的壓縮,應(yīng)用離散余弦變換來(lái)實(shí)現(xiàn)對(duì)空間冗余信息的壓縮,利用熵編碼實(shí)現(xiàn)統(tǒng)計(jì)壓縮和應(yīng)用量化來(lái)減少視覺冗余,以達(dá)到壓縮的目的。運(yùn)動(dòng)估計(jì)(ME)和運(yùn)動(dòng)補(bǔ)償(MC)可有效降低時(shí)域冗余,因?yàn)闀r(shí)域上相鄰幀之間存在很強(qiáng)的時(shí)間相關(guān)性。通過(guò)使用參考幀預(yù)測(cè)的框架,構(gòu)建一個(gè)預(yù)測(cè)幀,并從當(dāng)前幀減掉預(yù)測(cè)幀,得到的幀(稱為殘幀)往往有比原來(lái)低得多的熵,從而可以用提升的編碼率失真性能編碼。然而,ME的效率有一個(gè)權(quán)衡,這就是增加了計(jì)算復(fù)雜性和編碼時(shí)間。運(yùn)動(dòng)估計(jì)主要包括兩部分整數(shù)ME和分?jǐn)?shù)ME。根據(jù)H. 264參考軟件(JM)的整像素運(yùn)動(dòng)估計(jì)(IME)的計(jì)算復(fù)雜度可以消耗近60%的編碼時(shí)間。當(dāng)包含分像素運(yùn)動(dòng)估計(jì),可以消耗高達(dá)90%的編碼時(shí)間?,F(xiàn)有運(yùn)動(dòng)估計(jì)技術(shù)大多是基于塊匹配(BM)。通常,在塊匹配中,當(dāng)前幀被劃分為非重疊的塊,稱為宏塊(MB),每個(gè)宏塊的大小為NXN(例如,N= 16)。對(duì)于當(dāng)前幀中的每個(gè)當(dāng)前的宏塊MB,搜索窗口是指在參考幀中圍繞一個(gè)參考點(diǎn)(例如,前一幀的相同位置的點(diǎn)或某一預(yù)測(cè)位置)的局域。不失一般性,在該詳細(xì)描述中,假設(shè)在水平方向和垂直方向搜索范圍是[_P,P)。在搜索窗口中的每個(gè)點(diǎn)被稱為一個(gè)搜索位置,相當(dāng)于一個(gè)候選宏塊用以對(duì)當(dāng)前宏塊進(jìn)行預(yù)測(cè)。一個(gè)失真測(cè)度被定義為衡量候選宏塊和當(dāng)前宏塊的相似性。在搜索窗口搜索與當(dāng)前宏塊最相似的候選宏塊(即,匹配宏塊)。匹配宏塊和當(dāng)前宏塊的位移稱為運(yùn)動(dòng)矢量(MV)。存在很多方法來(lái)確定在搜索窗口中的候選宏塊與當(dāng)前宏塊的不匹配程度,如平方差(SSD)的總和、絕對(duì)變換差之和(SATD)。當(dāng)然,不匹配程度越小意味著相似程度越高。然而,由于簡(jiǎn)單性和有效性,最常用的衡量不匹配程度的是絕對(duì)差之和(SAD)。
N-I W-ISADtetl(m,n} = ^ ^ \Xt(k + ij+/)- Xt_x(fe + m+ ij + w + ;)|
i-0 /:0 ( 1)其中(m,n)為在-Rn,η <P范圍內(nèi)的運(yùn)動(dòng)矢量,Xt (i,j)和X(h) (i,j)為在位置 (i,j)處的t時(shí)刻的當(dāng)前幀和在t-1時(shí)刻的參考幀的像素值,(k,1)為在當(dāng)前幀的當(dāng)前塊的位置。SAD計(jì)算具有高度的一致性并且適合高效的實(shí)現(xiàn)。此外,傳統(tǒng)的運(yùn)動(dòng)估計(jì)架構(gòu)基于 SAD。最近,另一種方法,拉格朗日率失真(RD)成本函數(shù),已經(jīng)得到廣泛的關(guān)注。RD的一般形式是RDCost = D+ λ · R (2)其中D是失真率,例如SSD,SATD或SAD,R是相關(guān)的碼率(如MV和/或殘差的), λ是拉格朗日乘數(shù)。在一般情況下,因?yàn)镸V本身可能需要許多位來(lái)編碼,尋找具有最小不匹配度的MV 的方法可能無(wú)法找到合適的MV。例如,一個(gè)次優(yōu)不匹配MV可能需要很少的位數(shù)來(lái)編碼。這就是H. 264編碼器的情況,其需要用很多的位數(shù)來(lái)編碼運(yùn)動(dòng)矢量。例如,在H. 264編碼器中,一個(gè)接近于中值預(yù)測(cè)運(yùn)動(dòng)矢量(MVP)的MV比離中值更遠(yuǎn)的MV需要用更少的位數(shù)來(lái)編碼。為了實(shí)現(xiàn)碼率失真優(yōu)化,SAD或者SSD的成本函數(shù)一般不適合。相反,拉格朗日碼率失真成本函數(shù)是一個(gè)很好的解決方案。例如,λ的選擇使得能夠在R項(xiàng)和D項(xiàng)之間進(jìn)行一種權(quán)衡。一個(gè)具有大λ的碼率失真函數(shù)往往是由R主導(dǎo)整個(gè)函數(shù),這樣,傾向于選擇具有小碼率(R)的MV。另一方面,一個(gè)具有小λ的率失真代價(jià)往往是由D主導(dǎo)整個(gè)函數(shù),這樣,傾向于選擇具有小失真率的MV。這是為什么碼率失真成本函數(shù)被經(jīng)常用在最先進(jìn)的視頻編碼中,如H. 264/AVC,例如,去實(shí)現(xiàn)高質(zhì)量率失真性能。在H.沈4中,λ對(duì)不同的量化參數(shù)Qp 是不同的,Qp可以有51個(gè)左右可能的值。當(dāng)率失真成本函數(shù)被應(yīng)用時(shí),運(yùn)動(dòng)估計(jì)指的是率失真最優(yōu)或者RD0。但是,在硬件中難以實(shí)現(xiàn)率失真成本函數(shù),因?yàn)槭褂寐适д娉杀竞瘮?shù)的計(jì)算使用浮點(diǎn)乘法和/或用于查找表的硬件資源的耗費(fèi)很嚴(yán)重。—個(gè)普遍的運(yùn)動(dòng)估計(jì)技術(shù)是全搜索塊匹配算法(FS),其以硬算方式搜索了搜索窗口中的所有搜索點(diǎn)。FS是零偏置,這意味著其在參考幀中搜索窗口的中心坐標(biāo)和當(dāng)前MB 的位置相同或大致相同。全搜索是搜索搜索區(qū)域中的所有點(diǎn),因此,可以實(shí)現(xiàn)全局最小不匹配,因此也有良好的視覺質(zhì)量。全搜索在軟件實(shí)現(xiàn)中需要巨大的計(jì)算量,然而,全搜索可以有效地用硬件實(shí)現(xiàn)以獲得良好的數(shù)據(jù)吞吐量,因?yàn)樗臄?shù)據(jù)流是有規(guī)律的且適合用于流水線。此外,數(shù)據(jù)復(fù)用可以在相鄰的搜索區(qū)域之間被利用,因?yàn)樗鼈兊膮⒖枷袼貐^(qū)域是重疊的。除了全搜索算法,人們提出了許多快速運(yùn)動(dòng)估計(jì)(FME)算法來(lái)避免全搜索的巨大的計(jì)算量。許多的快速搜索算法在搜索中心周圍進(jìn)行一定的搜索。搜索中心可能是零偏置或MVP偏置的。零偏置搜索中心是(0,0)運(yùn)動(dòng)矢量。一些常用的零偏置的快速搜索算法包括NTSS (新三步搜索)、菱形搜索,F(xiàn)TS (動(dòng)態(tài)三角搜索)、交叉搜索。MVP偏置搜索的搜索中心是根據(jù)一定的標(biāo)準(zhǔn)從許多MVP中選擇出來(lái)的。通常典型的MVP是空間和時(shí)間上相鄰塊的 MV。此外,MVP偏置的搜索中心可能是或可能不是(0,0)運(yùn)動(dòng)矢量。一些常見的MVP偏置搜索包括PMVFAST (預(yù)測(cè)的運(yùn)動(dòng)矢量場(chǎng)自適應(yīng)搜索技術(shù)),UMHexagonS,以及EPM (有效的預(yù)測(cè)區(qū)域算法)。通常情況下,一些局部搜索是圍繞在FME搜索中心進(jìn)行的。在這種情況下,最后獲得的MV只能達(dá)到局部最小不匹配(而不是FS的全局最小)。往往這種局部最小不匹配會(huì)導(dǎo)致比全搜索低的視覺質(zhì)量。然而,MVP偏置的快速運(yùn)動(dòng)估計(jì)搜索算法往往比零偏置快速運(yùn)動(dòng)估計(jì)搜索算法具有的更高的視覺質(zhì)量,因?yàn)镸VP偏置的搜索中心往往是較零偏置搜索中心更加接近全搜索的全局最低點(diǎn)。有時(shí),許多MVP偏置的快速搜索算法的率失真性能大致和全局搜索的相同。這大概就是為什么MVP偏置的快速搜索算法在MPEG-4和H. 264 等參考軟件中使用的原因。另一個(gè)MVP偏置搜索中心可取的特點(diǎn)是,它往往會(huì)提供比零偏置搜索中心更平滑的運(yùn)動(dòng)領(lǐng)域,更接近實(shí)際情況。然而,往往難以在硬件中實(shí)現(xiàn)MVP偏置的運(yùn)動(dòng)估計(jì)算法,因?yàn)橐紤]多個(gè)MVP和局部搜索的不規(guī)則性往往可以輕易地打破硬件的流水線結(jié)構(gòu)從而降低硬件效率,具有較低的數(shù)據(jù)再利用和更多的內(nèi)存訪問。早期的視頻編碼標(biāo)準(zhǔn),如MPEG-1、MPEG-2、H.沈3、和MPEG-4傾向于使用16x16的宏塊作為基本的編碼單位和執(zhí)行固定塊大小(FBQ的運(yùn)動(dòng)估計(jì)。另一方面,最新的H. 264允許一個(gè)16x16MB的宏塊被分成均存在自己運(yùn)動(dòng)矢量的子塊并且對(duì)所有可能的子塊進(jìn)行可變塊大小(VBS)的運(yùn)動(dòng)估計(jì)。例如,16x16MB可被劃分成大小16X16、16X8、8X16、8X8、 8X4、4X8和4X4的子塊。VBS的運(yùn)動(dòng)估計(jì)允許不同的MV有不同的子塊,從而可以為所有的子塊實(shí)現(xiàn)比固定塊運(yùn)動(dòng)估計(jì)更好的匹配。通過(guò)改進(jìn)的預(yù)測(cè),VBS的運(yùn)動(dòng)估計(jì)可以用于 H.沈4以實(shí)現(xiàn)更高的編碼效率。VBS在宏塊中包含多個(gè)運(yùn)動(dòng)不一致的對(duì)象時(shí)十分有用。VBS 對(duì)宏塊內(nèi)存在旋轉(zhuǎn)和變形也是十分有用的。雖然VBS的運(yùn)動(dòng)估計(jì)比固定塊大小的運(yùn)動(dòng)估計(jì)有良好的碼率失真性能,但VBS巨大的計(jì)算量和不規(guī)則的內(nèi)存訪問使硬件實(shí)現(xiàn)很困難。雖然早期的ME算法由于運(yùn)算復(fù)雜性往往使用SAD作為不匹配原則,最近運(yùn)動(dòng)估計(jì)算法考慮碼率失真問題傾向于使用碼率失真函數(shù)。在該詳細(xì)說(shuō)明中,“-SAD”和“-RD”被用來(lái)區(qū)分任何算法的兩個(gè)不同版本一個(gè)用SAD作為衡量不匹配函數(shù),一個(gè)使用RD函數(shù)作為成本函數(shù)。例如,F(xiàn)S-SAD是使用的SAD的全局搜索而FS-RD是使用RD成本函數(shù)的全局搜索。同樣,在該詳細(xì)說(shuō)明中,“-zero”和“-mvp”是分別用來(lái)指明零偏置版本和MVP偏置版本的。此外在該詳細(xì)說(shuō)明中,“_var”和“-fix”是分別用來(lái)表示變化塊大小和固定塊大小的。例如,F(xiàn)S-SAD-fix-zero是零偏置的以SAD作為不匹配函數(shù)的固定塊大小的全局搜索, 和FS-RD-var-mvp是MVP偏置的以RD函數(shù)為衡量函數(shù)的變化塊大小的全局搜索。多年來(lái),許多運(yùn)動(dòng)估計(jì)的架構(gòu)被提出。其中,有些是針對(duì)快速運(yùn)動(dòng)估計(jì)的,但其中大多數(shù)是針對(duì)全局搜索的。在那些針對(duì)全局搜索的運(yùn)動(dòng)估計(jì)的框架中,一些是MVP偏置的, 一些是應(yīng)用碼率失真函數(shù)的,但其中大部分都是零偏置的利用SAD作為失真程度的衡量標(biāo)準(zhǔn)(例如,F(xiàn)S-SAD-zero)。雖然早期的運(yùn)動(dòng)估計(jì)的架構(gòu)往往是為實(shí)現(xiàn)固定塊搜索,而新的體系結(jié)構(gòu)多為變化塊大小的搜索.一些運(yùn)動(dòng)估計(jì)的體系結(jié)構(gòu)包括一個(gè)有16個(gè)處理單元(PE)的一維(I-D)脈動(dòng)陣列結(jié)構(gòu)來(lái)實(shí)現(xiàn)全搜索VBSME(FSVBSME)。另一個(gè)運(yùn)動(dòng)估計(jì)的架構(gòu)是三個(gè)有256個(gè)處理單元的 2-D脈動(dòng)陣列結(jié)構(gòu),在H. 264JM參考軟件中相比FS-RD-var-mvp它具有較低的RD性能。其他一些運(yùn)動(dòng)估計(jì)架構(gòu)使用FS-RD-var-mvp,但是,這種架構(gòu)要使用一個(gè)額外的芯片上大量?jī)?nèi)存來(lái)存儲(chǔ)所有的用于生成MVP的MV。此外,運(yùn)動(dòng)估計(jì)的架構(gòu)可能在搜索窗口中產(chǎn)生大量的冗余讀取,導(dǎo)致巨大延遲和相當(dāng)多的功耗。在本詳細(xì)描述使用的術(shù)語(yǔ)“冗余讀取”是指數(shù)據(jù)被讀取一次以上。因此,這將有利于提供更有效率的碼率失真優(yōu)化(RDO)的運(yùn)動(dòng)估計(jì),以利用時(shí)間冗余達(dá)到良好的碼率失真(RD)的性能、實(shí)時(shí)的實(shí)現(xiàn)高數(shù)據(jù)吞吐量、規(guī)則的數(shù)據(jù)流、良好的并行性、以及高的內(nèi)存利用率。此外,這將有利于提供一個(gè)更有效的整數(shù)運(yùn)動(dòng)估計(jì)來(lái)實(shí)時(shí)視頻編碼。這也有利于提供更有效率的VBS的運(yùn)動(dòng)估計(jì)。本發(fā)明的一個(gè)方面涉及到的一種方法,包括將一個(gè)或多個(gè)由多個(gè)塊創(chuàng)建的視頻幀劃分成多個(gè)子塊,并確定在一個(gè)或多個(gè)視頻幀中的參考幀。該方法還包括將多個(gè)子塊的一個(gè)搜索區(qū)域定義為多個(gè)運(yùn)動(dòng)矢量預(yù)測(cè)(MVP)的函數(shù),其中包括將搜索區(qū)域集中限定于參考幀內(nèi)的位置周圍。此外,該方法還包括搜索多個(gè)子塊中的至少一個(gè)子塊,包括確定率失真 (RD)代價(jià),并根據(jù)RD代價(jià)選擇相應(yīng)的運(yùn)動(dòng)矢量作為所述至少一個(gè)子塊的運(yùn)動(dòng)矢量(MV)。在一個(gè)實(shí)現(xiàn)方式中,確定RD代價(jià)包括確定代價(jià)函數(shù)中的兩個(gè)可加項(xiàng),第一個(gè)可加項(xiàng)為當(dāng)前子塊和候選參考子塊之間的誤差項(xiàng)(即,失真度量),第二個(gè)可加項(xiàng)為lambda算子 (為子塊大小和位置、塊位置和類型、量化參數(shù)、目標(biāo)碼率、及緩存條件或者緩存性能中的至少一個(gè)的函數(shù))與候選運(yùn)動(dòng)矢量和運(yùn)動(dòng)矢量預(yù)測(cè)之間的差值的函數(shù)二者的乘積。該實(shí)現(xiàn)方式進(jìn)一步包括確定第二可加項(xiàng)包括將第二可加項(xiàng)確定為相鄰塊或相鄰子塊的運(yùn)動(dòng)矢量的函數(shù)。在另一個(gè)實(shí)現(xiàn)方式中,該方法包括將多個(gè)MVP確定為多個(gè)相鄰塊或相鄰子塊的MV 的函數(shù),以及其中定義搜索區(qū)域包括將將搜索中心確定為多個(gè)MVP的函數(shù)。更進(jìn)一步,該方法包括將多個(gè)MVP中的一個(gè)MVP指定作為左方的塊、上方的塊和右上方的塊上的塊運(yùn)動(dòng)矢量的中值。在進(jìn)一步的實(shí)現(xiàn)方式中,確定搜索區(qū)域包括將搜索中心確定為三個(gè)過(guò)去的相鄰塊的運(yùn)動(dòng)矢量的中值,這三個(gè)以前的相鄰塊包括一個(gè)在左邊的第一個(gè)塊、一個(gè)在上方的第二塊、和一個(gè)在右上方的第三塊。更進(jìn)一步,該方法包括在當(dāng)?shù)谝粔K或者第二塊或者第三塊不存在時(shí)提供至少一個(gè)替代塊。在一方面,確定至少一個(gè)替代塊包括選擇左上角位置的第四塊。本發(fā)明的另一個(gè)方面涉及到一種系統(tǒng),其包括將一個(gè)視頻幀分成多個(gè)塊的分割元件和將多個(gè)塊劃分成多個(gè)子塊的子分割元件。該系統(tǒng)還包括一個(gè)選擇元件來(lái)從多個(gè)子塊中選擇參考幀,和一個(gè)歸類元件來(lái)來(lái)確定一個(gè)包括搜索中心的搜索區(qū)域。這個(gè)搜索區(qū)域基于多個(gè)運(yùn)動(dòng)矢量預(yù)測(cè)值(MVP)。此外,該系統(tǒng)包括一個(gè)評(píng)估元件來(lái)為搜索區(qū)域中所選的搜索點(diǎn)計(jì)算率失真(RD)成本函數(shù)以為多個(gè)子塊選擇一個(gè)運(yùn)動(dòng)矢量(MV)。在一個(gè)實(shí)現(xiàn)方式中,RD成本函數(shù)包括第一元素和第二元素,其中第一元素是一種失真衡量,第二元素是一個(gè)參數(shù)和一個(gè)衡量候選MV和多個(gè)MVP中的一個(gè)MVP之間的差異的
10函數(shù)的乘積。更進(jìn)一步,所述參數(shù)是lambda,其是子塊大小和位置、塊位置和類型、量化參數(shù)、目標(biāo)碼率、緩存條件和緩存性能的函數(shù)。在一個(gè)方面,該參數(shù)為L(zhǎng)ambda并且lambda可以近似成2的冪的線性組合。在一方面,第二元素的MVP是與過(guò)去的相鄰塊的運(yùn)動(dòng)矢量相關(guān)的函數(shù)。在另一方面,第二元素的MVP是與當(dāng)前塊相關(guān)的左邊、上方和右上方的過(guò)去的相鄰塊的運(yùn)動(dòng)矢量的函數(shù)。在另一方面,第二元素的MVP是與當(dāng)前塊相關(guān)的左邊、上方和右上方的過(guò)去的相鄰塊的運(yùn)動(dòng)矢量的中值。在一個(gè)實(shí)現(xiàn)方式中,搜索區(qū)域和當(dāng)前塊或當(dāng)前子塊和參考幀中同樣大小的候選參考?jí)K或者候選子塊之間的運(yùn)動(dòng)矢量相關(guān)。在一些實(shí)現(xiàn)方式中,搜索中心是MVP。在一些實(shí)現(xiàn)方式中,搜索中心是所確定的三個(gè)過(guò)去的相鄰塊的運(yùn)動(dòng)矢量的中值。 更進(jìn)一步,三個(gè)過(guò)去的相鄰塊包括和當(dāng)前塊相關(guān)的一個(gè)左邊的塊、一個(gè)上方的塊和一個(gè)右上方的塊。本發(fā)明的另一個(gè)方面涉及到一種方法,其包括從多個(gè)視頻幀中確定參考幀和在該參考幀中確定包括多個(gè)搜索點(diǎn)的搜索區(qū)域,該搜索區(qū)域包含多個(gè)搜索點(diǎn)。該方法還包括將搜索區(qū)域劃分成多個(gè)子窗口和處理多個(gè)幀視頻,處理多個(gè)視頻幀包括在多個(gè)子窗口中確立掃描順序,每一個(gè)子窗口至少被掃描一次,并且兩個(gè)掃描順序相鄰的子窗口會(huì)在空間上相近。在一個(gè)實(shí)現(xiàn)中,掃描多個(gè)子窗口包括執(zhí)行水平掃描、豎直掃描、或同時(shí)執(zhí)行水平掃描和豎直掃描。在一些實(shí)現(xiàn)方式中,該方法還包括在參考幀中確定包括多個(gè)搜索點(diǎn)的搜索區(qū)域之前將一視頻幀分成包含NxN個(gè)像素的塊;以及其中所述處理步驟包括在一個(gè)時(shí)鐘周期內(nèi)并行讀取N個(gè)像素和一次性加載子窗口內(nèi)的所有像素。在進(jìn)一步的實(shí)現(xiàn)方式中,掃描多個(gè)子窗口的步驟包括用從16種不同蛇形掃描中所選擇的至少一種蛇型掃描來(lái)進(jìn)行掃描。在一些實(shí)現(xiàn)方式中,掃描多個(gè)子窗口的步驟還包括用第一種類型的蛇形掃描來(lái)掃描第一子窗口、移動(dòng)到第二子窗口中的相鄰搜索點(diǎn)、以及用第二種類型的蛇形掃描來(lái)掃描
第二子窗口。在另一實(shí)現(xiàn)方式中,將搜索區(qū)域劃分成多個(gè)子窗口的步驟包括將搜索區(qū)域劃分成一些不相互覆蓋的子窗口。在一個(gè)實(shí)現(xiàn)方式中,掃描多個(gè)子窗口的步驟包括使用從搜索窗口的左上角、右上角、左下角、或右下角開始的掃描來(lái)定義掃描順序,以及其中所述掃描是水平掃描或者豎直掃描。某些實(shí)現(xiàn)方式中,掃描多個(gè)子窗口的步驟包括將搜索區(qū)域劃分為多個(gè)子區(qū)域,并且在多個(gè)子區(qū)域中局部地使用蛇形掃描。本發(fā)明的另外一個(gè)方面涉及一種系統(tǒng),其包括選擇元件,用來(lái)確定參考幀;一個(gè)指定元件,用來(lái)在參考幀中定義搜索區(qū)域。該系統(tǒng)還包括一個(gè)子分割元件,用來(lái)將搜索區(qū)域分割為多個(gè)子窗口 ;一個(gè)掃描元件,用來(lái)選擇在多個(gè)子窗口之間的掃描順序,每一個(gè)子窗口至少被掃描一次,并且掃描順序相鄰的兩個(gè)子窗口在空間上是接近的。在一個(gè)實(shí)現(xiàn)方式上,掃描元件用來(lái)實(shí)現(xiàn)對(duì)多個(gè)子窗口的水平掃描、豎直掃描、或水平及豎直掃描。某些實(shí)現(xiàn)方式中,所述掃描元件構(gòu)造為執(zhí)行其中在第一方向上水平掃描第一行而在第二方向上水平掃描第二行(即,以不同的方向來(lái)掃描第一行和第二行)的水平掃描。在另一實(shí)現(xiàn)方式中,掃描元件被構(gòu)造為執(zhí)行其中在第一方向上豎直掃描第一列而在第二方向上豎直掃描第二列(即,以不同的方向來(lái)掃描第一列和第二列)的豎直掃描。在某些實(shí)現(xiàn)方式中,掃描元件被構(gòu)造為需要選擇不同掃描順序的蛇形掃描(包括從搜索窗口區(qū)域的左上角、右上角、左下角、右下角開始的蛇形掃描),并且其中蛇形掃描可以為水平掃描或豎直掃描。某些實(shí)現(xiàn)方式中,搜索窗口區(qū)域中的多個(gè)搜索點(diǎn)是對(duì)應(yīng)于當(dāng)前塊和參考幀中相同大小的候選參考?jí)K之間的候選運(yùn)動(dòng)矢量,其表示相似大小的當(dāng)前塊和參考?jí)K之間的距離。某些實(shí)現(xiàn)方式中,子分割元件被用來(lái)將搜索區(qū)域分割成多個(gè)矩形的子窗口,以及其中搜索區(qū)域中的多個(gè)搜索點(diǎn)屬于多個(gè)子窗口。某些實(shí)現(xiàn)方式中,所述系統(tǒng)包含一個(gè)數(shù)據(jù)總線,其配置為在一個(gè)時(shí)鐘周期中讀取N 個(gè)像素,其中參考幀的塊包括NxN個(gè)像素。所述系統(tǒng)還包括一個(gè)可重構(gòu)寄存器陣列,用來(lái)存儲(chǔ)可能再利用的像素而存儲(chǔ)一行的數(shù)據(jù)以用在下一行中,其中N個(gè)像素可以同時(shí)加載到多個(gè)子窗口中。在某些實(shí)現(xiàn)中,掃描元件被構(gòu)造為從16種不同的蛇形掃描中選擇掃描順序,其中第一組蛇形掃描針對(duì)豎直掃描,而第二組蛇形掃描針對(duì)水平掃描。某些實(shí)現(xiàn)方式中,掃描元件被構(gòu)造為選擇一種掃描順序,該掃描順序?qū)⑺阉鲄^(qū)域分割成多個(gè)子區(qū)域,并在多個(gè)子區(qū)域中局部應(yīng)用蛇形掃描。本發(fā)明的另一個(gè)方面涉及一種方法,所披露方法的特性是支持多個(gè)參考幀及多個(gè) MVP。所披露的方法同樣支持在多個(gè)參考幀中規(guī)定搜索區(qū)域,并且可以以第一 MVP及第二 MVP為中心,具體地講,其包括從一組視頻幀中確定多個(gè)參考幀,并且從多個(gè)參考幀中獲取第一運(yùn)動(dòng)矢量預(yù)測(cè)值(MVP)和第二 MVP。該方法還包括在多個(gè)參考幀中定義搜索區(qū)域,該搜索區(qū)域以第一 MVP或者第二 MVP為中心。其次,該披露的方法還包括基于支持多在參考幀的第一 MVP和第二 MVP的基礎(chǔ)上進(jìn)行子塊的運(yùn)動(dòng)估計(jì)并且從多個(gè)參考幀的子塊中選擇運(yùn)動(dòng)矢量。在某些實(shí)現(xiàn)方式中,獲取第一 MVP和第二 MVP的過(guò)程包括基于之前塊的MV獲取第一 MVP和第二 MVP。某些實(shí)現(xiàn)方式中,獲取第一 MVP或獲取第二 MVP包括獲取當(dāng)前塊的相鄰左塊、上塊和右上塊的MV的中值。某些實(shí)現(xiàn)方式中,執(zhí)行運(yùn)動(dòng)估計(jì)包括執(zhí)行單一 MVP,僅僅使用第一 MVP或者第二 MVP中的一個(gè),而不是多個(gè)。在某些方面中,所披露的方法包括以第一 MVP或第二 MVP為中心,進(jìn)行局部全搜索運(yùn)動(dòng)估計(jì)。在此基礎(chǔ)之上,執(zhí)行運(yùn)動(dòng)估計(jì)包括計(jì)算成本函數(shù),其包括兩個(gè)可加項(xiàng),第一個(gè)為誤差項(xiàng)(失真項(xiàng)),第二個(gè)為lambda算子(其為子塊的大小和位置、塊位置和類型、量化參數(shù)、目標(biāo)碼率、及緩存條件或緩存性能中的至少一個(gè)的函數(shù))及編碼MV所需要的碼率函數(shù)的乘積。在此,對(duì)視頻處理和圖像運(yùn)動(dòng)估計(jì)進(jìn)行了一個(gè)簡(jiǎn)介。在接下來(lái)將詳細(xì)介紹一些具體的實(shí)現(xiàn)方式。圖像的運(yùn)動(dòng)估計(jì)圖1顯示了一種用來(lái)實(shí)現(xiàn)視頻壓縮的示例性視頻處理系統(tǒng)100的上層框圖。視頻處理系統(tǒng)100包括一個(gè)分割元件102,用來(lái)將一個(gè)或多個(gè)視頻幀104分割成多個(gè)塊106。在某些實(shí)現(xiàn)方式中,系統(tǒng)100可以包括一個(gè)子分割模塊108,用以將至少一個(gè)塊106進(jìn)一步分成兩個(gè)或多個(gè)子塊110。某些情況下,分割元件102可以將至少一個(gè)塊106進(jìn)一步分成兩個(gè)或多個(gè)子塊110。某些情況下,至少一個(gè)塊106(有時(shí)稱為“當(dāng)前塊”)可以被進(jìn)一步子分割為多個(gè)當(dāng)前子塊(如子塊110)。子塊110可以有不同的大小或/和不同的形狀。同時(shí)系統(tǒng)100還包括一個(gè)選擇元件112,用來(lái)選擇第二幀作為參考幀114。一個(gè)歸類元件116用來(lái)為至少一個(gè)子塊110定義搜索區(qū)域118。在某些情況下,搜索區(qū)域118以一個(gè)位置為中心,定義為參考幀114中的搜索中心。搜索區(qū)域118中的一個(gè)或多個(gè)點(diǎn)(記為“搜索點(diǎn)”)可以對(duì)應(yīng)于候選運(yùn)動(dòng)矢量 (MV),其表示當(dāng)前塊(或當(dāng)前子塊)與參考幀114中相似大小(或相同大小)的候選參考快(或候選參考子塊)之間的距離。某些情況下,搜索中心可以由一系列的運(yùn)動(dòng)矢量預(yù)測(cè)(MVP)來(lái)得到。一個(gè)或多個(gè) MVP可以由相鄰的塊或子塊的運(yùn)動(dòng)矢量來(lái)得到。例如,一個(gè)MVP可以為當(dāng)前塊的相鄰的左邊、上方、右上方塊的運(yùn)動(dòng)矢量的中值來(lái)得到(記為單一運(yùn)動(dòng)矢量預(yù)測(cè)SMVP)。—個(gè)評(píng)估元件120被用來(lái)針對(duì)一個(gè)或多個(gè)當(dāng)前子塊,在搜索區(qū)域內(nèi)進(jìn)行基于RD代價(jià)方程的搜索,通過(guò)計(jì)算搜索區(qū)域內(nèi)所選搜索點(diǎn)的RD成本函數(shù)來(lái)進(jìn)行搜索。每一個(gè)搜索點(diǎn)都會(huì)有一個(gè)對(duì)應(yīng)的RD代價(jià),對(duì)應(yīng)的運(yùn)動(dòng)矢量可以選擇作為該子塊的MV,基于此選擇最優(yōu)的子塊的MV在某些情況下,RD代價(jià)方程會(huì)包含多個(gè)項(xiàng)。例如,RD代價(jià)中的第一項(xiàng)為可加項(xiàng), 也就是當(dāng)前子塊與候選參考子塊間的誤差(即,失真衡量)。RD代價(jià)中的第二項(xiàng)是一個(gè)參數(shù)(稱為lambda算子)與候選MV和MVP之間的差的函數(shù)(編碼MV所需要的比特?cái)?shù))的乘積。某些情況下,誤差項(xiàng)可以為SAD。某些情況下,lambda算子可以用2的冪來(lái)近似。某些情況下,所需要的比特?cái)?shù)可以由SMVP和候選MV之間的差來(lái)估計(jì)。在某些情況下,RD代價(jià)的第二項(xiàng)中的MVP可以上相鄰塊或子塊的運(yùn)動(dòng)矢量的函數(shù)(單一 MVP)。在某些情況下, 對(duì)于當(dāng)前塊中的所有(或者基本上所有)子塊,利用相同的(或類似的)MVP。綜上所述,系統(tǒng)100 (及其相關(guān)情況),也被稱為率失真優(yōu)化的單一 MVP偏置的全搜索(RDOMFS),使用單一 MVP,并通過(guò)計(jì)算RD代價(jià)方程來(lái)進(jìn)行搜索,即使用單一 MVP偏置和RD 代價(jià)方程(也成為成本函數(shù))。在某些情況下,RDOMFS可以取得與FS-RD-var-mvp (H. 264 參考軟件JM中默認(rèn)的運(yùn)動(dòng)估計(jì)算法)相當(dāng)?shù)穆适д嫘?,并超過(guò)FS-SAD-var-zero的率失真效率。例如,在最新的H. 264標(biāo)準(zhǔn)的參考軟件JM中采用了幾種率失真效果很好并且計(jì)算復(fù)雜度低的快速運(yùn)動(dòng)估計(jì)算法。大部分快速運(yùn)動(dòng)估計(jì)算法使用MVP作為起始搜索點(diǎn),并采用了局部搜索模式如鉆石搜索、六邊形搜索。一般來(lái)說(shuō),快速運(yùn)動(dòng)估計(jì)算法首先會(huì)計(jì)算幾個(gè)可能的候選MVP的代價(jià),并從中選出一個(gè)作為搜索起始點(diǎn)。采用局部搜索可能導(dǎo)致局部最優(yōu)的MV而不是全局最優(yōu)的MV。使用多個(gè)MVP可以有效的提高全局最優(yōu)的概率。一般來(lái)說(shuō),這些快速運(yùn)動(dòng)估計(jì)算法中所使用的MVP是通過(guò)空域或時(shí)域相鄰塊的MV 得到的。時(shí)域相鄰的MV既是參考幀中同一位置的塊的MV,這需要存儲(chǔ)參考幀中的塊的MV。 空域相鄰的MV則包括左邊、上方、右上方的子塊。由這三個(gè)MV來(lái)推導(dǎo)MVP,例如中值。注意在H.沈4中,對(duì)于左邊、上方、右上方的塊的定義可能根據(jù)子塊大小的不同而不同,并且對(duì)于不同位置上的大小相同或基本相同的子塊來(lái)說(shuō)可以不同。所以,需要大量的存儲(chǔ)單元來(lái)存儲(chǔ)所有大小的子塊的MV。圖2A以子塊大小為4x4及16x16為例。另外,計(jì)算中值的數(shù)據(jù)流也是不規(guī)則的。具體的來(lái)說(shuō),使用多個(gè)MVP會(huì)造成不利于硬件實(shí)現(xiàn)的結(jié)果。這是因?yàn)?,第一,如圖 2B所示,空域上的對(duì)于左邊、上方、右上方子塊的定義是不同的,這會(huì)導(dǎo)致不規(guī)則的數(shù)據(jù)流。 第二,在選擇MVP時(shí),整體硬件的效率會(huì)下降,并不利于有效的流水線設(shè)計(jì)。第三,注意多個(gè) MVP可能分布在搜索區(qū)域的不同位置,因此,對(duì)應(yīng)多個(gè)MVP的參考像素是單獨(dú)加載的,不能被再利用,這會(huì)造成存儲(chǔ)器帶寬的增加。第四,需要存儲(chǔ)大量的MV,導(dǎo)致顯著的片上存儲(chǔ)器需求和成本。為了使算法更加易于硬件實(shí)現(xiàn),本發(fā)明提出的RDOMFS中使用了一種單一的運(yùn)動(dòng)矢量預(yù)測(cè)(SMVP)來(lái)替代多個(gè)運(yùn)動(dòng)矢量預(yù)測(cè)。在一個(gè)宏塊中,對(duì)于所有的不同大小的子塊 (或者基本上所有的子塊和/或基本上所有的大小)使用統(tǒng)一的SMVP定義。使用符號(hào) MV16>U6來(lái)表示16X16模式下的最優(yōu)運(yùn)動(dòng)矢量,那么SMVP可以被定義為SMVP =胸也咖(Μ ^, MlC^(3)它是相鄰的左,上,右上的三個(gè)宏塊的MV16xi6的中值,如同圖2C所示。也就是說(shuō), 在同一宏塊中的任意位置上的不同大小的所有的子塊(或基本上所有的子塊)都使用相同的或基本上相同的SMVP。雖然使用單一MVP會(huì)使得陷入局部最小的概率增大,當(dāng)使用多個(gè)MVP的時(shí)候,局部最小與全局最小相同的概率會(huì)更高,但是實(shí)際上的效果只有微小的區(qū)別。并且,本發(fā)明所披露的SMVP可以有效地解決上述問題并帶來(lái)一系列的益處。例如,雖然所披露的SMVP是基于空域上相鄰的宏塊的MV,但由于不同大小的所有子塊都使用相同的(或大致相同的) SMVP定義,使得數(shù)據(jù)流更加規(guī)則。其二,由于使用了 SMVP,也就實(shí)際上省略了從多個(gè)MVP中選擇最終MVP的過(guò)程,使得算法更加便于流水線設(shè)計(jì)。實(shí)際上由于只存在一個(gè)候選,所以不存在MVP選擇階段。其三,同所披露的MVP再利用架構(gòu)相配合,SMVP不需要存儲(chǔ)大量已得到的MV,可以極大的減少片上內(nèi)存的需求,將會(huì)在隨后詳細(xì)討論。由于涉及規(guī)則的局部搜索,因此不同的快速運(yùn)動(dòng)估計(jì)(FME)算法會(huì)使用不同的迭代局部搜索,并使用不同的局部搜索模式,例如矩形搜索,菱形搜索,六邊形搜索,環(huán)狀搜索等。在每一次迭代中,快速運(yùn)動(dòng)估計(jì)算法根據(jù)所使用的搜索模式計(jì)算搜索點(diǎn)的誤差,并據(jù)此選擇最優(yōu)的下一次迭代的搜索中心。估計(jì)的誤差可以使用SAD或RD。在不同迭代和不同方向上,可以使用不同的步長(zhǎng)。在快速運(yùn)動(dòng)估計(jì)算法中,快速結(jié)束是一種使得搜索在一定前提下提前結(jié)束的技術(shù)。如果沒有使用快速結(jié)束技術(shù),那么快速運(yùn)動(dòng)估計(jì)算法將繼續(xù)直到完成所有的迭代,或搜索模式的中心為下一迭代的起始搜索點(diǎn)。上文所提到的局部搜索有著很大的缺點(diǎn)。例如,這樣的貪婪算法會(huì)使得搜索相對(duì)于局部全搜索率失真性能下降。其二,在各個(gè)搜索模式的搜索點(diǎn)中與候選相關(guān)的像素值需要被單獨(dú)讀取,無(wú)法再利用,這將導(dǎo)致巨大的存儲(chǔ)器帶寬消耗和時(shí)延。其三,由于每次迭代選擇的新起始點(diǎn)是不可預(yù)計(jì)的,這將導(dǎo)致不規(guī)則的數(shù)據(jù)流和不易于硬件實(shí)現(xiàn)。同樣,使用快速結(jié)束技術(shù)和不同步長(zhǎng)也會(huì)導(dǎo)致這個(gè)問題。為了解決這些與規(guī)則局部搜索相關(guān)的問題,披露的RDOMFS使用了一種基于MVP的預(yù)測(cè)局部全搜索。因此,RDOMFS是FS-MVP。如上所述,在兩種常見的誤差估計(jì)方法SAD和RD之間是存在著一種關(guān)系的。SAD 的計(jì)算相對(duì)簡(jiǎn)單且易于硬件實(shí)現(xiàn),現(xiàn)存的絕大多數(shù)的ME硬件架構(gòu)都是基于SAD的。另一方面,RD被定義為
RD (MV) = SAD (MV) + λ ^p) R (| MVmedian-MV |)(4)其中MV為候選MV,λ是拉格朗日算子(Lagrange multiplier),其隨量化因子Qp 變化而變化,MVmedian是H. 264中的MV編碼使用的中值運(yùn)動(dòng)矢量預(yù)測(cè),R是比特速率,用來(lái)編碼運(yùn)動(dòng)矢量誤差的。在HJ64JM參考軟件中,λ也就是λΜΕ被定義為
權(quán)利要求
1.一種方法,包括將一個(gè)或多個(gè)由多個(gè)塊創(chuàng)建的視頻幀劃分成多個(gè)子塊;確定在一個(gè)或多個(gè)視頻幀中的參考幀;將多個(gè)子塊的一個(gè)搜索區(qū)域定義為多個(gè)運(yùn)動(dòng)矢量預(yù)測(cè)(MVP)的函數(shù),其中包括將搜索區(qū)域集中在在參考幀內(nèi)定義的位置周圍;以及搜索多個(gè)子塊中的至少一個(gè)子塊,包括確定率失真(RD)代價(jià),并根據(jù)率失真代價(jià)選擇相應(yīng)的運(yùn)動(dòng)矢量作為所述至少一個(gè)子塊的運(yùn)動(dòng)矢量(MV)。
2.根據(jù)權(quán)利要求1所述的方法,其中確定率失真代價(jià)的步驟包括確定代價(jià)函數(shù)中的兩個(gè)可加項(xiàng),第一個(gè)可加項(xiàng)為當(dāng)前子塊和候選參考子塊之間的失真度量,第二個(gè)可加項(xiàng)為lambda算子與候選運(yùn)動(dòng)矢量和運(yùn)動(dòng)矢量預(yù)測(cè)之間的差值的函數(shù)這二者的乘積,所述 lambda算子是子塊大小和位置、塊位置和類型、量化參數(shù)、目標(biāo)碼率、及緩存條件或者緩存性能中的至少一個(gè)的函數(shù)。
3.根據(jù)權(quán)利要求2所述的方法,其中確定第二可加項(xiàng)的步驟包括將第二可加項(xiàng)確定為相鄰塊或相鄰子塊的運(yùn)動(dòng)矢量的函數(shù)。
4.根據(jù)權(quán)利要求1所述的方法,還包括將多個(gè)運(yùn)動(dòng)矢量預(yù)測(cè)確定為多個(gè)相鄰塊或相鄰子塊的運(yùn)動(dòng)矢量的函數(shù),以及其中定義搜索區(qū)域的步驟包括將將搜索中心確定為多個(gè)運(yùn)動(dòng)矢量預(yù)測(cè)的函數(shù)。
5.根據(jù)權(quán)利要求4所述的方法,還包括將多個(gè)運(yùn)動(dòng)矢量預(yù)測(cè)中的一個(gè)運(yùn)動(dòng)矢量預(yù)測(cè)指定作為左方的塊、上方的塊和右上方的塊上的塊運(yùn)動(dòng)矢量的中值。
6.根據(jù)權(quán)利要求1所述的方法,其中確定搜索區(qū)域的步驟包括將搜索中心確定為三個(gè)過(guò)去的相鄰塊的運(yùn)動(dòng)矢量的中值,這三個(gè)過(guò)去的相鄰塊包括在左邊的第一塊、在上方的第二塊、和在右上方的第三塊。
7.根據(jù)權(quán)利要求6所述的方法,還包括在第一塊、第二塊、或者第三塊中的一個(gè)不存在時(shí)確定至少一個(gè)替代塊。
8.根據(jù)權(quán)利要求7所述的方法,其中確定至少一個(gè)替代塊包括選擇左上角位置的第四塊。
9.一種系統(tǒng),包括分割元件,將一個(gè)視頻幀分成多個(gè)塊;子分割元件,將多個(gè)塊劃分成多個(gè)子塊;選擇元件,從多個(gè)子塊中選擇參考幀;歸類元件,確定一個(gè)包括搜索中心的搜索區(qū)域,其中該搜索區(qū)域基于多個(gè)運(yùn)動(dòng)矢量預(yù)測(cè);以及評(píng)估元件,為搜索區(qū)域中所選的搜索點(diǎn)計(jì)算率失真(RD)代價(jià)函數(shù),以為多個(gè)子塊選擇一個(gè)運(yùn)動(dòng)矢量(MV)。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其中率失真代價(jià)函數(shù)包括第一元素和第二元素,其中第一元素是一種失真度量,第二元素是一個(gè)參數(shù)與一個(gè)候選運(yùn)動(dòng)矢量和多個(gè)運(yùn)動(dòng)矢量預(yù)測(cè)中的一個(gè)運(yùn)動(dòng)矢量預(yù)測(cè)之間的差值的函數(shù)的乘積。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述參數(shù)是lambda,其是子塊大小和位置、塊位置和類型、量化參數(shù)、目標(biāo)碼率、緩存條件和緩存性能的函數(shù)。
12.根據(jù)權(quán)利要求10所述的系統(tǒng),所述參數(shù)是lambda,并且lambda可以近似成2的冪的線性組合。
13.根據(jù)權(quán)利要求10所述的系統(tǒng),其中第二元素的運(yùn)動(dòng)矢量預(yù)測(cè)是過(guò)去的相鄰塊的運(yùn)動(dòng)矢量的函數(shù)。
14.根據(jù)權(quán)利要求10所述的系統(tǒng),其中第二元素的運(yùn)動(dòng)矢量預(yù)測(cè)是與當(dāng)前塊相關(guān)的左邊、上方和右上方的過(guò)去的相鄰塊的運(yùn)動(dòng)矢量的函數(shù)。
15.根據(jù)權(quán)利要求10所述的系統(tǒng),其中第二元素的運(yùn)動(dòng)矢量預(yù)測(cè)是與當(dāng)前塊相關(guān)的左邊、上方和右上方的過(guò)去的相鄰塊的運(yùn)動(dòng)矢量的中值。
16.根據(jù)權(quán)要求10所述的系統(tǒng),其中搜索區(qū)域?qū)?yīng)于當(dāng)前塊或當(dāng)前子塊與參考幀中同樣大小的候選參考?jí)K或者候選子塊之間的候選運(yùn)動(dòng)矢量。
17.根據(jù)權(quán)利要求10所述的系統(tǒng),其中搜索中心是運(yùn)動(dòng)矢量預(yù)測(cè)。
18.根據(jù)權(quán)利要求9所述的系統(tǒng),其中搜索中心是所確定的三個(gè)過(guò)去的相鄰塊的運(yùn)動(dòng)矢量的中值。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中三個(gè)過(guò)去的相鄰塊包括和當(dāng)前塊相關(guān)的一個(gè)左邊的塊、一個(gè)上方的塊和一個(gè)右上方的塊。
20.一種方法,包括從多個(gè)視頻幀中確定參考幀;在該參考幀中確定包括多個(gè)搜索點(diǎn)的搜索區(qū)域;將搜索區(qū)域劃分成多個(gè)子窗口 ;以及處理多個(gè)幀視頻,處理多個(gè)視頻幀包括在多個(gè)子窗口中確立掃描順序,每一個(gè)子窗口至少被掃描一次,并且兩個(gè)掃描順序相鄰的子窗口在空間上相近。
21.根據(jù)權(quán)利要求20所述的方法,其中掃描多個(gè)子窗口的步驟包括執(zhí)行水平掃描、豎直掃描、或同時(shí)執(zhí)行水平掃描和豎直掃描。
22.根據(jù)權(quán)利要求20所述的方法,還包括在參考幀中確定包括多個(gè)搜索點(diǎn)的搜索區(qū)域之前將視頻幀分成包含NxN個(gè)像素的塊;以及其中所述處理步驟包括在一個(gè)時(shí)鐘周期內(nèi)并行讀取N個(gè)像素并且將這些像素一次性加載到子窗口內(nèi)。
23.根據(jù)權(quán)利要求20所述的方法,其中掃描多個(gè)子窗口的步驟包括用從16種不同蛇形掃描中所選擇的至少1種蛇型掃描來(lái)進(jìn)行掃描。
24.根據(jù)權(quán)利要求20所述的方法,其中掃描多個(gè)子窗口的步驟還包括用第一種類型的蛇形掃描來(lái)掃描第一子窗口;移動(dòng)到第二子窗口中的相鄰搜索點(diǎn);以及用第二種類型的蛇形掃描來(lái)掃描第二子窗口。
25.根據(jù)權(quán)利要求20所述的方法,其中將搜索區(qū)域劃分成多個(gè)子窗口的步驟包括將搜索區(qū)域劃分成一些不相互覆蓋的矩形子窗口。
26.根據(jù)權(quán)利要求20所述的方法,其中掃描多個(gè)子窗口的步驟包括使用從搜索窗口的左上角、右上角、左下角、或右下角開始的掃描來(lái)定義掃描順序,以及其中所述掃描是水平掃描或者豎直掃描。
27.根據(jù)權(quán)利要求20所述的方法,其中掃描多個(gè)子窗口的步驟包括將搜索區(qū)域劃分為多個(gè)子區(qū)域,并且在多個(gè)子區(qū)域中局部地應(yīng)用蛇形掃描。
28.一種系統(tǒng),包括選擇元件,用來(lái)確定參考幀;指定元件,用來(lái)在參考幀中定義搜索區(qū)域;子分割元件,用來(lái)將搜索區(qū)域分割為多個(gè)子窗口 ;以及掃描元件,用來(lái)選擇多個(gè)子窗口之間的掃描順序,每一個(gè)子窗口至少被掃描一次,并且掃描順序相鄰的兩個(gè)子窗口在空間上是接近的。
29.根據(jù)權(quán)利要求觀所述的系統(tǒng),其中掃描元件構(gòu)造為對(duì)多個(gè)子窗口執(zhí)行水平掃描、 豎直掃描、或同時(shí)執(zhí)行水平掃描和豎直掃描。
30.根據(jù)權(quán)利要求觀所述的系統(tǒng),其中所述掃描元件構(gòu)造為執(zhí)行其中在第一方向上水平掃描第一行而在第二方向上水平掃描第二行的水平掃描。
31.根據(jù)權(quán)利要求觀所述的系統(tǒng),其中掃描元件被構(gòu)造為執(zhí)行其中在第一方向上豎直掃描第一列而在第二方向上豎直掃描第二列的豎直掃描。
32.根據(jù)權(quán)利要求觀所述的系統(tǒng),其中掃描元件被構(gòu)造為選擇掃描順序,該掃描順序包括從搜索區(qū)域的左上角、右上角、左下角、右下角開始的蛇形掃描,以及其中蛇形掃描使用水平掃描或豎直掃描。
33.根據(jù)權(quán)利要求觀所述的系統(tǒng),其中搜索區(qū)域中的多個(gè)點(diǎn)對(duì)應(yīng)于當(dāng)前塊和參考幀中相同大小的候選參考?jí)K之間的候選運(yùn)動(dòng)矢量。
34.根據(jù)權(quán)利要求觀所述的系統(tǒng),其中子分割元件被構(gòu)造為將搜索區(qū)域分割成多個(gè)矩形的子窗口,以及其中搜索區(qū)域中的多個(gè)搜索點(diǎn)屬于多個(gè)子窗口。
35.根據(jù)權(quán)利要求觀所述的系統(tǒng),還包括數(shù)據(jù)總線,其配置為在一個(gè)時(shí)鐘周期中并行讀取N個(gè)像素,其中參考幀的塊包括NxN個(gè)像素;以及可重構(gòu)寄存器陣列,用來(lái)存儲(chǔ)一行的數(shù)據(jù)以用在下一行中,其中N個(gè)像素一次加載到多個(gè)子窗口中。
36.根據(jù)權(quán)利要求觀所述的系統(tǒng),其中掃描元件被構(gòu)造為從16種不同的蛇形掃描中選擇掃描順序,其中第一組蛇形掃描針對(duì)豎直掃描,而第二組蛇形掃描針對(duì)水平掃描。
37.根據(jù)權(quán)利要求觀所述的系統(tǒng),其中掃描元件被構(gòu)造為選擇一種掃描順序,該掃描順序?qū)⑺阉鲄^(qū)域分割成多個(gè)子區(qū)域,并在多個(gè)子區(qū)域中局部應(yīng)用蛇形掃描。
38.一種方法,包括從一組視頻幀中確定多個(gè)參考幀,從多個(gè)參考幀中獲取第一運(yùn)動(dòng)矢量預(yù)測(cè)(MVP)和第二運(yùn)動(dòng)矢量預(yù)測(cè)(MVP);在多個(gè)參考幀中定義搜索區(qū)域,該搜索區(qū)域以第一運(yùn)動(dòng)矢量預(yù)測(cè)或者第二運(yùn)動(dòng)矢量預(yù)測(cè)為中心;基于第一運(yùn)動(dòng)矢量預(yù)測(cè)和第二運(yùn)動(dòng)矢量預(yù)測(cè)進(jìn)行子塊的運(yùn)動(dòng)估計(jì);以及從多個(gè)參考幀的子塊中選擇運(yùn)動(dòng)矢量。
39.根據(jù)權(quán)利要求38所述的方法,其中獲取第一運(yùn)動(dòng)矢量預(yù)測(cè)和第二運(yùn)動(dòng)矢量預(yù)測(cè)的步驟包括基于過(guò)去的塊的運(yùn)動(dòng)矢量獲取第一運(yùn)動(dòng)矢量預(yù)測(cè)和第二運(yùn)動(dòng)矢量預(yù)測(cè)。
40.根據(jù)權(quán)利要求38所述的方法,獲取第一運(yùn)動(dòng)矢量預(yù)測(cè)或獲取第二運(yùn)動(dòng)矢量預(yù)測(cè)包括獲取當(dāng)前塊的相鄰左塊的運(yùn)動(dòng)矢量的中值、相鄰上塊的運(yùn)動(dòng)矢量的中值或相鄰右上塊的的運(yùn)動(dòng)矢量的中值。
41.根據(jù)權(quán)利要求38所述的方法,其中執(zhí)行運(yùn)動(dòng)估計(jì)包括執(zhí)行單一運(yùn)動(dòng)矢量預(yù)測(cè),僅僅使用第一運(yùn)動(dòng)矢量預(yù)測(cè)或者第二運(yùn)動(dòng)矢量預(yù)測(cè)中的一個(gè)。
42.根據(jù)權(quán)利要求41所述的方法,還包括以第一運(yùn)動(dòng)矢量預(yù)測(cè)或第二運(yùn)動(dòng)矢量預(yù)測(cè)為中心,進(jìn)行局部全搜索運(yùn)動(dòng)估計(jì)。
43.根據(jù)權(quán)利要求38所述的方法,其中執(zhí)行運(yùn)動(dòng)估計(jì)包括計(jì)算代價(jià)函數(shù),該代價(jià)函數(shù)包括多個(gè)可加項(xiàng),其中包括失真項(xiàng)和lambda參數(shù)與編碼運(yùn)動(dòng)矢量的碼率函數(shù)的乘積項(xiàng),其中l(wèi)ambda參數(shù)為子塊的大小和位置、塊位置和類型、量化參數(shù)、目標(biāo)碼率、及緩存條件或緩存性能中的至少一個(gè)的函數(shù)。
全文摘要
本發(fā)明提供了一種圖像運(yùn)動(dòng)估計(jì)的方法及系統(tǒng)。提供了一種子塊運(yùn)動(dòng)估計(jì),其包括在運(yùn)動(dòng)矢量預(yù)測(cè)周圍的減少搜索范圍的完全搜索。還提供了一種單一的(或統(tǒng)一)運(yùn)動(dòng)矢量預(yù)測(cè)和一種類似率失真成本函數(shù)的函數(shù)。還提供了一種能夠降低或基本上消除多余的數(shù)據(jù)裝載和/或?qū)崿F(xiàn)不同的數(shù)據(jù)復(fù)用率的掃描順序。而且,還提供了一種基于單一運(yùn)動(dòng)矢量預(yù)測(cè)和類似于率失真代價(jià)函數(shù)的函數(shù)的可重構(gòu)多分辨率運(yùn)動(dòng)矢量重用硬件體系結(jié)構(gòu)。此外,通過(guò)利用所披露的方面,只有一小部分過(guò)去的運(yùn)動(dòng)矢量被傳播,且這些方面可以很容易地對(duì)不同空間分辨率的視頻重新配置。
文檔編號(hào)H04N7/26GK102263947SQ20111014169
公開日2011年11月30日 申請(qǐng)日期2011年5月27日 優(yōu)先權(quán)日2010年5月27日
發(fā)明者區(qū)子廉, 聞興, 須江 申請(qǐng)人:香港科技大學(xué)