專利名稱:視頻編碼方法
技術(shù)領(lǐng)域:
本發(fā)明總地來說涉及數(shù)據(jù)壓縮領(lǐng)域,并且更加具體地講,涉及一種對由圖像元素(像素)組成的幀的序列進(jìn)行編碼的方法,所述序列被再分為連續(xù)的幀組(GOF),上述幀組自身被再分為包含先前幀A和當(dāng)前幀B的連續(xù)的幀對(POF),所述方法執(zhí)行三維(3D)子帶分解,該三維子帶分解包括在被視為3D體積的所述序列中對與各個(gè)GOF相應(yīng)的空間-時(shí)間數(shù)據(jù)應(yīng)用的濾波步驟,所述分解與在每個(gè)GOF中對所述POF A和B和對在每個(gè)時(shí)間分解層次上獲得的相應(yīng)低頻時(shí)間子帶對(POS)進(jìn)行的運(yùn)動(dòng)估計(jì)和補(bǔ)償步驟一起被應(yīng)用于所述GOF,這一運(yùn)動(dòng)補(bǔ)償時(shí)間濾波處理在每個(gè)先前幀A中一方面產(chǎn)生沿著與借助所述運(yùn)動(dòng)估計(jì)步驟定義的運(yùn)動(dòng)向量相對應(yīng)的運(yùn)動(dòng)軌跡進(jìn)行了濾波的相連像素,及另一方面會(huì)產(chǎn)生根本沒有被濾波的剩余數(shù)量的所謂的不相連像素。
本發(fā)明還涉及一種嵌入在一計(jì)算機(jī)可用介質(zhì)中的計(jì)算機(jī)可讀程序碼,用于在處理器執(zhí)行所述程序時(shí)使計(jì)算機(jī)系統(tǒng)執(zhí)行該編碼方法。
近幾年來,三維(3D)子帶分析已經(jīng)被越來越多地研究用于視頻壓縮。被視為3D體積的幀序列的3D或(2D+t)子波分解確實(shí)提供了一種自然的空間分辨率和幀速率可伸縮性。小波變換所產(chǎn)生的系數(shù)構(gòu)成了一個(gè)錐狀的層級結(jié)構(gòu),其中借助系數(shù)之間的親子衍生從屬關(guān)系的3D定向樹定義了空間時(shí)間關(guān)系,并且所產(chǎn)生的系數(shù)在分級樹內(nèi)的深入掃描和漸進(jìn)位平面編碼技術(shù)給出了期望的質(zhì)量可調(diào)整性。如
圖1所述,這種方法的實(shí)際應(yīng)用階段是對八幀的幀組(GOF)使用簡單的二抽頭小波濾波器來產(chǎn)生運(yùn)動(dòng)補(bǔ)償時(shí)間子頻帶。
在所示的實(shí)現(xiàn)方式中,輸入視頻序列被劃分成多個(gè)幀組(GOF),且每個(gè)GOF先進(jìn)行運(yùn)動(dòng)補(bǔ)償(MC)后進(jìn)行時(shí)間濾波(TF),其中每個(gè)GOF本身又被再分成連續(xù)的幀對(與用于所謂的運(yùn)動(dòng)補(bǔ)償時(shí)間濾波,或MCTF模塊的輸入數(shù)量相同)。對產(chǎn)生的第一時(shí)間分解級的低頻(L)時(shí)間子帶進(jìn)一步進(jìn)行濾波(TF),并當(dāng)只剩兩個(gè)時(shí)間低頻子帶(根部時(shí)間子帶)時(shí)停止該處理,其中每一個(gè)代表該GOF的第一個(gè)半組和第二個(gè)半組的時(shí)間近似值。在圖1的例子中,用F1至F8表示所示組的幀,虛箭頭對應(yīng)高通時(shí)間濾波,而其它箭頭對應(yīng)低通時(shí)間濾波。該圖示出了分解的兩個(gè)階段(L和H=第一階段;LL和LH=第二階段)。在所示8個(gè)幀的組的每個(gè)時(shí)間分解層次上,產(chǎn)生一組運(yùn)動(dòng)向量場(在本例中,是第一層次上的MV4,第二層次上的MV3)。
當(dāng)將Haar多分辨率分析用于時(shí)間分解時(shí),由于在每個(gè)時(shí)間分解層次上,在所考慮的幀組中的每兩個(gè)幀之間產(chǎn)生了一個(gè)運(yùn)動(dòng)向量場,所以運(yùn)動(dòng)向量場的數(shù)目等于時(shí)間子帶中幀的數(shù)目的一半,即在運(yùn)動(dòng)向量場的第一個(gè)層次上為4而在第二個(gè)層次上為2。僅對輸入序列的每兩個(gè)幀實(shí)施運(yùn)動(dòng)估計(jì)(ME)和運(yùn)動(dòng)補(bǔ)償(MC),并且通常是用前向方式進(jìn)行的。用這些非常簡單的濾波器,每個(gè)低頻時(shí)間子帶(L)代表輸入幀對的時(shí)間平均數(shù),而高頻時(shí)間子帶(H)包含MCTF步驟之后的殘留誤差。
不幸的是,由于場景中運(yùn)動(dòng)的單一和物體的遮擋/露出,所以運(yùn)動(dòng)補(bǔ)償時(shí)間濾波可能會(huì)出現(xiàn)根本沒有被濾波的不相連圖像元素(或像素)的問題(或者還會(huì)出現(xiàn)被濾波了兩次的雙重相連像素的問題)。將參照圖2介紹一種嘗試解決該問題的傳統(tǒng)方案,該圖示出了在每欄僅有一個(gè)像素的理論幀中實(shí)施對完整像素的運(yùn)動(dòng)補(bǔ)償?shù)那闆r下的不相連(和雙重相連)像素(用黑點(diǎn)表示不相連像素,用圓圈表示雙重相連像素,而其它的相連像素用被圓圈圈起來的黑點(diǎn)表示)。
對每個(gè)連續(xù)的幀對(當(dāng)前幀B與對應(yīng)的先前幀A關(guān)聯(lián))來說,通過濾波和抽選來產(chǎn)生包含時(shí)間低層子帶L和時(shí)間高層子帶H的一對子帶。如示出了塊的邊界BB的圖2所述,a0至a6是先前幀A的像素,b0至b6是當(dāng)前幀B的像素,l0至l6是時(shí)間子帶L的低通系數(shù)的值,及h0至h6是時(shí)間子帶H的高通系數(shù)的值。沿著通過塊匹配方法定義的運(yùn)動(dòng)軌跡對相連像素(如a2)進(jìn)行濾波。
根據(jù)所述傳統(tǒng)解決方案,對于先前幀A中的一個(gè)不相連像素(如圖2中的a3或a4),將初始值插入到時(shí)間低層子帶中。對于先前幀A中的雙重相連像素(如圖2中的a0),對當(dāng)前幀B選取的像素進(jìn)行任意選擇,只要解碼器應(yīng)用相同的選擇在圖2中,選擇了h2,而不是h1,以便計(jì)算l0(如S.J.Choi和J.W.Woods于1999年2月,在IEEETransactions on Image Processing雜志的第2期第8卷的第155頁至167頁的文件《視頻的運(yùn)動(dòng)補(bǔ)償3D子帶編碼(Motion-compensated 3Dsubband coding of video)》中,提出了從上至下和從左至右地掃描當(dāng)前幀,并且為低通系數(shù)的計(jì)算考慮指向它的當(dāng)前幀中的第一個(gè)像素)。
在半像素運(yùn)動(dòng)補(bǔ)償?shù)那闆r下,對所有整數(shù)向量的管理是一樣的。對半像素向量來說,截?cái)嘀赶蛳惹皫珹中半像素位置的運(yùn)動(dòng)向量,使其指向所述先前幀中的整數(shù)像素,如圖3所述,其中半像素位置用叉表示,并用弧形箭頭示出了對像素b2的截?cái)鄼C(jī)制,在這種情況下,向量被朝向圖象的頂部截?cái)?這種截?cái)鄼C(jī)制必須與解碼器中的完全相同,從而保證正確的重建)。
在所有情況下,不相連像素的數(shù)目表現(xiàn)出3D子帶編碼/解碼方法的缺陷,因?yàn)樗鼑?yán)重地影響到了圖象的質(zhì)量,尤其是劇烈運(yùn)動(dòng)的序列或最后的時(shí)間分解層次(對于它們來說,時(shí)間相關(guān)性不太好)。
因此本發(fā)明的一個(gè)目的是避免上述缺陷,并提供一種因?yàn)闇p少了不相連像素的數(shù)目而提高了編碼效率的視頻編碼方法。
最后,本發(fā)明涉及一種如說明書的前言部分中所定義的編碼方法,其中,所述運(yùn)動(dòng)估計(jì)步驟包括,考慮可行的半像素運(yùn)動(dòng)補(bǔ)償和根據(jù)其的截?cái)鄼C(jī)制,其中當(dāng)運(yùn)動(dòng)向量由當(dāng)前幀B指向?qū)?yīng)的先前幀A中的子像素位置時(shí),所述運(yùn)動(dòng)向量被截?cái)嘁灾赶蛩鱿惹皫械耐暾袼?,所述截?cái)鄼C(jī)制依賴于所述子像素位置的鄰接情況。
接下來將結(jié)合附圖,通過實(shí)施例來描述本發(fā)明,其中圖1示出了一個(gè)具有運(yùn)動(dòng)補(bǔ)償?shù)膬呻A段時(shí)間多分辨率分析;圖2闡述了對完整像素進(jìn)行運(yùn)動(dòng)補(bǔ)償時(shí)的不相連(和雙重相連)像素的問題;圖3闡述了半像素運(yùn)動(dòng)向量時(shí)向量截?cái)嗟脑?;圖4闡述了本發(fā)明的原理,基于其半像素位置優(yōu)選地是與之前不相連的先前幀中對應(yīng)像素的位置關(guān)聯(lián)的。
圖5闡述了半像素位置的潛在關(guān)系的三種不同類型;圖6給出了四分之一像素位置的潛在關(guān)系的五個(gè)例子;圖7給出了當(dāng)存在一個(gè)大于最近的完整像素之間的距離的距離時(shí),圖6的四分之一像素位置的潛在關(guān)系的擴(kuò)充實(shí)施例。
本發(fā)明的目的是減少不相連像素的數(shù)目,從而提高3D子帶方法的編碼效率。為此,本發(fā)明的原理是,根據(jù)所研究的像素的相鄰情況,從現(xiàn)在開始,將如圖3所示的“慣常的”向量截?cái)鄼C(jī)制修改為將半像素位置與完整像素位置關(guān)聯(lián)起來。例如,在圖3中,通過向幀頂部的向量截?cái)?見圖3中的彎箭頭),把位于a0和a1之間的作為當(dāng)前幀B中像素b2的參考位置的半像素位置與整數(shù)位置a1關(guān)聯(lián)起來,然而像素a0仍然是不相連的。在這種特殊情況下,于是按照本發(fā)明,提出了把半像素位置與a0關(guān)聯(lián)起來以代替a1,這樣使不相連像素的數(shù)目減一。圖4中圖解說明了這種技術(shù)方案,其中,由于像素a1已相連,所以弧形箭頭表示把半像素位置與位置a0關(guān)聯(lián)了起來,然而像素a0仍然是不相連的。
為了保證正確重建,為半像素運(yùn)動(dòng)向量這樣提出的向量關(guān)聯(lián)機(jī)制必須與解碼器端一致。由于在編碼和解碼兩端能夠以對稱方式使用的僅有的共同信息是運(yùn)動(dòng)向量場(因?yàn)樗俏ㄒ煌耆l(fā)送的信息),因此在編碼端提出的方案將與可以映射到解碼端的向量關(guān)系協(xié)議相關(guān)聯(lián)。
如圖5中所示,可以注意到,在先前幀A中,在垂直方向(V)上(圖3中所示的背景技術(shù)情形下的情況或者附圖4中所示的按照本發(fā)明的情形下的情況)、水平方向(H)、或兩個(gè)方向(HV)上所標(biāo)出的每個(gè)非整數(shù)像素的位置可以是半像素位置。需要注意的是,在V和H情況下,對于與較近的整數(shù)位置相關(guān)聯(lián)而言,只有兩個(gè)自然位置,由雙圓圈表示,而在HV的情況下,有四個(gè)可能的相鄰位置。對于所有這些半像素位置而言,向量關(guān)聯(lián)必須要在對已經(jīng)與參考整數(shù)位置自然相關(guān)的整數(shù)向量加以考慮的前提下盡力使不相連像素的數(shù)量最小例如如下所述。在下面的算法的指令中給出了實(shí)現(xiàn)這種向量關(guān)聯(lián)手法的可行實(shí)例<pre listing-type="program-listing"><![CDATA[ for each pixel(i,j)in previous frame { status(i,j)=unconnected; } for each pixel(k,l)in the current frme with an integer vector(vk,vl) { if sta tus(k-vk,1-vl)=unconnected {status(k-vk,1-vl)=connected; associa ted(k-vk,1-vl)=(k,l) } } for each pixel(k,l)in the current frame with a V half-pixel vector(vk,vl) { if status(k-vk,1-vl-0.5)=unconnected { status(k-vk,1-vl-0.5)=connected; associated(k-vk,1-vl-0.5)=(k,1-0.5) } else if status(k-vk,1-vl+0.5)=unconnected { status(k-vk,1-vl+0.5)=connected; associated(k-vk,1-vl+0.5)=(k,1+0.5) } } for each pixel(k,l)in the current frame woth a H half-pixel vector(vk,vl) { if sta tus(k-vk-0.5,1-vl)=unconnected { status(k-vk-0.5,1-vl)=connected; associated(k-vk-0.5,1-vl)=(k-0.5,1) } else if status(k-vk+0.5,1-vl)=unconnected { status(k-vk+0.5,1-vl)=connected; associated(k-vk+0.5,1-vl)=(k+0.5,1) } }for each pixel(k,l)in the current frame with a HV half-pixel vec tor(vk,vl) { if sta tus(k-vk-0.5,1-vl-0.5)=unconnected { sta tus(k-vk-0.5,1-vl-0.5)=connected; associa ted(k-vk-0.5,1-vl-0.5)=(k-0.5,1-0.5) } else if sta tus(k-vk-0.5,1-vl+0.5)=unconnected { sta tus(k-vk-0.5,1-vl+0.5)=connected; associated(k-vk-0.5,1-vl+0.5)=(k-0.5,1+0.5) } else if sta tus(k-vk+0.5,1-vl-0.5)=unconnected { sta tus(k-vk+0.5,1-vl-0.5)=connected; associa ted(k-vk+0.5,1-vl-0.5)=(k+0.5,1-0.5) } else if sta tus(k-vk+0.5,1-vl+0.5)=unconnected { sta tus(k-vk+0.5,1-vl+0.5)=connected; associated(k-vk+0.5,1-vl+0.5)=(k+0.5,1+0.5) } }]]></pre>借助“status(i,j)”并且只要對當(dāng)前幀一進(jìn)行處理(更加準(zhǔn)確地說,對當(dāng)前幀的每個(gè)像素),這種算法就能夠?qū)⒖紟南袼貭顟B(tài)存儲在表中。所述表“status(i,j)”在處理開始時(shí)被初始為“不相連”,并以與掃描順序相同的順序處理當(dāng)前幀的每個(gè)像素。只要參考幀中不相連的像素一變成“相連”,那么就修改“status(i,j)”并使其變?yōu)椤跋噙B”。因此,在任何時(shí)候,都可以借助該表得知所述狀態(tài)。
有很重要的一點(diǎn)要注意,上面給出的公開內(nèi)容僅僅是說明性的,且本發(fā)明不局限于上述的實(shí)現(xiàn)方式。盡管主要是在半像素運(yùn)動(dòng)補(bǔ)償?shù)沫h(huán)境中對本發(fā)明加以介紹,但是它還能很好地應(yīng)用于采用與半像素精度不同的子像素精度進(jìn)行的運(yùn)動(dòng)補(bǔ)償。對于四分之一像素位置的可能關(guān)聯(lián)例如已在圖6中進(jìn)行了闡述(其中,單個(gè)圓圈對應(yīng)整數(shù)像素位置,叉對應(yīng)四分之一像素位置,及雙圓圈對應(yīng)自然關(guān)聯(lián)的整數(shù)位置)。該關(guān)聯(lián)還可以被擴(kuò)充至具有比到最近的整數(shù)像素之間的距離更長的距離的整數(shù)像素,如圖7所述(其中用被方框框起來的圓圈表示這些距離較長的整數(shù)像素位置)在第二次選擇時(shí),如果更接近的整數(shù)像素已經(jīng)是相連的了,那么向量關(guān)聯(lián)機(jī)制選擇這些間隔的整數(shù)位置。
權(quán)利要求
1.一種對由圖像元素(像素)組成的幀序列進(jìn)行編碼的方法,所述序列被再分為連續(xù)的幀組(GOF),上述幀組自身被再分為包含先前幀A和當(dāng)前幀B的連續(xù)的幀對(POF),所述方法執(zhí)行三維(3D)子帶分解,該三維子帶分解包括在被視為3D體積的所述序列中對與各個(gè)GOF相應(yīng)的空間-時(shí)間數(shù)據(jù)應(yīng)用的濾波步驟,所述分解與在每個(gè)GOF中對所述POF A和B和對在每個(gè)時(shí)間分解層次上獲得的相應(yīng)低頻時(shí)間子帶對(POS)進(jìn)行的運(yùn)動(dòng)估計(jì)和補(bǔ)償步驟一起被應(yīng)用于所述GOF,這一運(yùn)動(dòng)補(bǔ)償時(shí)間濾波處理在每個(gè)先前幀A中一方面產(chǎn)生沿著與借助所述運(yùn)動(dòng)估計(jì)步驟定義的運(yùn)動(dòng)向量相對應(yīng)的運(yùn)動(dòng)軌跡進(jìn)行了濾波的相連像素,及另一方面會(huì)產(chǎn)生根本沒有被濾波的剩余數(shù)量的所謂的不相連像素,所述運(yùn)動(dòng)估計(jì)步驟包括,考慮可行的半像素運(yùn)動(dòng)補(bǔ)償,根據(jù)其的截?cái)鄼C(jī)制,當(dāng)運(yùn)動(dòng)向量由當(dāng)前幀B指向?qū)?yīng)的先前幀A中的子像素位置時(shí),將所述運(yùn)動(dòng)向量截?cái)喑芍赶蛩鱿惹皫械恼麛?shù)像素,所述向量截?cái)鄼C(jī)制取決于所述子像素位置的鄰接情況。
2.如權(quán)利要求1所述的編碼方法,其中,所述向量截?cái)鄼C(jī)制是借助依據(jù)緊鄰的整數(shù)像素是相連還是不相連的事實(shí)對對每個(gè)先前幀A的頂部或?qū)λ鰩牡撞窟M(jìn)行向量截?cái)嗖僮鱽韺?shí)現(xiàn)的,以便在所述關(guān)聯(lián)之前將涉及的子像素位置與仍未相連的整數(shù)像素關(guān)聯(lián)起來。
3.如權(quán)利要求2所述的編碼方法,其中對位于幀對或子帶內(nèi)被指向且在垂直方向、水平方向或垂直和水平兩個(gè)方向上為半像素位置的所有位置執(zhí)行所述向量截?cái)喾椒?,在所述關(guān)聯(lián)前,借助與緊鄰的仍未相連的整數(shù)像素的自然關(guān)聯(lián)來完成向量截?cái)嗖僮鳌?br>
4.如權(quán)利要求2所述的編碼方法,其中對位于幀對或子帶內(nèi)被指向且在垂直方向、水平方向或任意一個(gè)截?cái)喾较蛏蠟樗姆种幌袼匚恢玫乃形恢脠?zhí)行所述向量截?cái)喾椒?,在所述關(guān)聯(lián)前,借助與緊鄰的仍未相連的整數(shù)像素的自然關(guān)聯(lián)來完成向量截?cái)嗖僮鳌?br>
5.如權(quán)利要求2所述的編碼方法,其中對位于幀對或子帶內(nèi)被指向且在垂直方向、水平方向或任意一個(gè)截?cái)喾较蛏蠟樗姆种幌袼匚恢玫乃形恢脠?zhí)行所述向量截?cái)喾椒?,如果緊鄰的整數(shù)像素是相連的,那么借助與一個(gè)具有比到最近的整數(shù)像素的距離更長的距離的不相連的整數(shù)像素的關(guān)聯(lián)來完成向量截?cái)嗖僮鳌?br>
6.一種嵌入在計(jì)算機(jī)可用介質(zhì)中的計(jì)算機(jī)可讀程序代碼,用于促使計(jì)算機(jī)系統(tǒng)執(zhí)行權(quán)利要求1至5中任何一項(xiàng)所述的編碼方法,此時(shí)借助處理器來實(shí)現(xiàn)所述程序。
7.一種編碼設(shè)備,包括一個(gè)含有權(quán)利要求6中所述的計(jì)算機(jī)可讀程序代碼的處理器。
全文摘要
本發(fā)明涉及一種編碼幀序列的方法,將三維子帶分解和運(yùn)動(dòng)估計(jì)和補(bǔ)償步驟一起應(yīng)用于連續(xù)的幀組中。由于這些步驟會(huì)產(chǎn)生一些嚴(yán)重影響圖象最終質(zhì)量的不相連的像素,所以提出了本發(fā)明以減少不相連像素的數(shù)目,其中當(dāng)運(yùn)動(dòng)向量由當(dāng)前幀B指向先前參考幀A中的子像素位置時(shí),截?cái)嗨鲞\(yùn)動(dòng)向量,使其指向位于所述位置的相鄰范圍內(nèi)的所述先前幀的整數(shù)像素并且取決于它。
文檔編號H04N7/26GK1717937SQ200380104260
公開日2006年1月4日 申請日期2003年11月20日 優(yōu)先權(quán)日2002年11月27日
發(fā)明者E·巴勞 申請人:皇家飛利浦電子股份有限公司