(本申請是申請日為2012年1月11日、申請?zhí)枮?01280005380.7、發(fā)明名稱為“錯誤恢復(fù)改進(jìn)的視頻編碼和解碼”的申請的分案申請)
本發(fā)明涉及一種用于對數(shù)字圖像序列進(jìn)行編碼的方法和裝置以及用于對相應(yīng)的位流進(jìn)行解碼的方法和裝置。
本發(fā)明屬于數(shù)字信號處理領(lǐng)域,尤其屬于使用運動補償來減少視頻流中的空間冗余和時間冗余的視頻壓縮領(lǐng)域。
背景技術(shù):
例如h.263、h.264、mpeg-1、mpeg-2、mpeg-4、svc等的許多視頻壓縮格式使用基于塊的離散余弦變換(dct)和運動補償以去除空間冗余和時間冗余。這些格式可被稱為預(yù)測視頻格式。視頻信號的各幀或圖像被分割成編碼后的并且能夠獨立進(jìn)行解碼的片(slice)。片通常是幀的矩形部分、或者更通常為幀的一部分或整個幀。此外,各片被分割成多個宏塊(mb),并且將各宏塊被進(jìn)一步分割成塊、通常為8×8個像素的塊。這些編碼幀為(被稱為p幀的根據(jù)一個參考幀而預(yù)測到的或者被稱為b幀的根據(jù)兩個參考幀而預(yù)測到的)時間預(yù)測幀和非時間預(yù)測幀(被稱為內(nèi)幀或i幀)這兩種類型。
時間預(yù)測在于從參考幀(視頻序列的先前幀或?qū)韼?中發(fā)現(xiàn)最接近要編碼的塊的圖像部分或參考區(qū)域。該步驟已知為運動估計。接著,連同與表示運動補償要使用的參考區(qū)域的運動矢量有關(guān)的運動信息項一起,對要編碼的塊和參考部分之間的差進(jìn)行編碼(運動補償)。
為了進(jìn)一步降低對運動信息進(jìn)行編碼的代價,已提出了利用相對于通常根據(jù)要編碼的塊周圍的塊的運動矢量所計算出的運動矢量預(yù)測結(jié)果的差來對運動矢量進(jìn)行編碼。
在h.264中,針對根據(jù)位于要編碼的塊的因果鄰域(例如根據(jù)位于要編碼的塊的上方和左方的塊)的運動矢量所計算出的中值預(yù)測結(jié)果來對運動矢量進(jìn)行編碼。僅對中值預(yù)測結(jié)果和當(dāng)前塊運動矢量之間的差(還被稱為殘差運動矢量)進(jìn)行編碼。
使用殘差運動矢量的編碼節(jié)省了若干位率,但需要解碼器進(jìn)行運動矢量預(yù)測結(jié)果的相同計算從而對要編碼的塊的運動矢量的值進(jìn)行解碼。
近來,已提出了諸如使用多個可能運動矢量預(yù)測結(jié)果等的進(jìn)一步改進(jìn)。被稱為運動矢量競爭的該方法在于在幾個運動矢量預(yù)測結(jié)果或候選之間判斷哪個運動矢量預(yù)測結(jié)果使殘差運動信息的編碼代價(通常為率失真代價)最小。該殘差運動信息包括殘差運動矢量(即,要編碼的塊的實際運動矢量和所選擇的運動矢量預(yù)測結(jié)果之間的差)、以及例如所選擇的運動矢量預(yù)測結(jié)果的索引的編碼值等的表示所選擇的運動矢量預(yù)測結(jié)果的信息項。
在目前標(biāo)準(zhǔn)化期間的高效率視頻編碼(hevc)中,已提出了使用如圖1示意性示出的多個運動矢量預(yù)測結(jié)果:從位于要編碼的塊的鄰域的塊提取的3個所謂的空間運動矢量預(yù)測結(jié)果v1、v2和v3;基于三個空間運動矢量預(yù)測結(jié)果v1、v2和v3的分量所計算出的中值運動矢量預(yù)測結(jié)果;以及作為該序列的前一圖像中的同一位置塊(例如位于與圖像n的塊“編碼中”相同的空間位置處的圖像n-1的塊)的運動矢量的時間運動矢量預(yù)測結(jié)果v0。當(dāng)前在hevc中,根據(jù)可用性的預(yù)定規(guī)則,從位于要編碼的塊的左方的塊(v3)、位于上方的塊(v2)、以及從位于要編碼的塊的各角部的塊之一中提取3個空間運動矢量預(yù)測結(jié)果。該運動矢量預(yù)測結(jié)果選擇方案被稱為高級運動矢量預(yù)測(amvp)。在圖1的例子中,選擇位于左上方的塊的矢量v1。
最終,獲得了混合有空間預(yù)測結(jié)果和時間預(yù)測結(jié)果的5個運動矢量預(yù)測結(jié)果候選的集合。為了減少在位流中傳送運動矢量預(yù)測結(jié)果的開銷,通過除去重復(fù)的運動矢量、即具有相同值的運動矢量來縮減運動矢量預(yù)測結(jié)果的集合。例如,在圖1的例示中,v1和v2相等,并且v0和v3也相等,因而應(yīng)僅保持這四者中的兩個(例如,v0和v1)作為運動矢量預(yù)測候選。在這種情況下,僅需要1位來向解碼器指示運動矢量預(yù)測結(jié)果的索引。
可以基于預(yù)測結(jié)果的值來進(jìn)一步縮減運動矢量預(yù)測結(jié)果的集合。在得知運動矢量殘差和編碼器的代價優(yōu)化標(biāo)準(zhǔn)的情況下,一旦選擇了最佳的運動矢量預(yù)測結(jié)果并且計算出運動矢量殘差,可以從該預(yù)測集合中進(jìn)一步除去尚未選擇的候選。由于可以使用較少的位來對所選擇的運動矢量預(yù)測結(jié)果的指示進(jìn)行編碼,因此充分縮減預(yù)測結(jié)果的集合使得獲得信令開銷。在極限的情況下,例如如果所有的運動矢量預(yù)測結(jié)果都相等,則可以將候選的集合縮減為1,因此無需將與所選擇的運動矢量預(yù)測結(jié)果有關(guān)的任何信息插入位流。
概括而言,利用與運動矢量預(yù)測結(jié)果的差所進(jìn)行的運動矢量的編碼連同運動矢量預(yù)測結(jié)果候選的數(shù)量的縮減一起會導(dǎo)致壓縮增益。然而,如上所述,對于給定要編碼的塊,運動矢量預(yù)測結(jié)果候選的數(shù)量的縮減基于該集合的運動矢量預(yù)測結(jié)果所取的值、特別是相鄰塊的運動矢量的值和同一位置塊的運動矢量的值。此外,解碼器需要能夠?qū)赡苓\動矢量預(yù)測結(jié)果的集合應(yīng)用與編碼器相同的分析,從而推知表示所選擇的運動矢量預(yù)測結(jié)果所使用的位量、能夠?qū)\動矢量預(yù)測結(jié)果的索引進(jìn)行解碼、并且最終使用接收到的運動矢量殘差對運動矢量進(jìn)行解碼。參考圖1的示例,利用編碼器將塊“編碼中”的運動矢量預(yù)測結(jié)果的集合縮減為v0和v1,因而將索引編碼到一位上。在圖像n-1的塊“同一位置”在傳輸期間丟失的情況下,解碼器無法獲得v0的值,因此無法得出v0和v3相等。因此,解碼器無法發(fā)現(xiàn)使用多少位來對塊“編碼中”的運動矢量預(yù)測結(jié)果的索引進(jìn)行編碼,結(jié)果解碼器由于其無法發(fā)現(xiàn)索引編碼在何處停止以及視頻數(shù)據(jù)的編碼在何處開始因此無法正確地解析片的數(shù)據(jù)。
因此,在有損通信網(wǎng)絡(luò)上將位流傳輸至解碼器的情況下,發(fā)送運動矢量預(yù)測結(jié)果所使用的位數(shù)依賴于運動矢量預(yù)測結(jié)果所取的值這一事實使得該方法非常容易受通信錯誤所影響。實際上,該方法需要了解運動矢量預(yù)測結(jié)果的值以在解碼器處正確地解析位流。在包丟失的情況下,當(dāng)某些運動矢量殘差值丟失時,解碼器無法判斷使用多少位來對表示運動矢量預(yù)測結(jié)果的索引進(jìn)行編碼,因而無法正確地解析位流。這種錯誤可能會傳播,由此造成在解碼器接收到隨后的未經(jīng)預(yù)測的編碼后的同步圖像之前發(fā)生解碼器的去同步。
期望即使在包丟失的情況下也至少能夠在解碼器處對編碼位流進(jìn)行解析,以使得隨后可以應(yīng)用某些去同步或錯誤隱藏。
在2010年10月7~15日于廣州召開的視頻編碼聯(lián)合組(jtc-vc)第三次會議上k.sato所發(fā)布的文獻(xiàn)jctvc-c166r1,“te11:studyonmotionvectorcoding(experiment3.3aand3.3c)”中提出了僅使用預(yù)測結(jié)果集合內(nèi)的來自同一片的空間運動矢量預(yù)測結(jié)果。該解決方案解決了在片丟失的情況下在解碼器處進(jìn)行解析的問題。然而,由于不再使用時間運動矢量預(yù)測結(jié)果,因此編碼效率顯著下降。因此,該解決方案在壓縮性能方面不令人滿意。
技術(shù)實現(xiàn)要素:
期望解決一個或多個現(xiàn)有技術(shù)的缺陷。
根據(jù)本發(fā)明的一個方面,提供一種用于將數(shù)字圖像序列編碼成位流的方法,其中圖像的至少一部分是通過相對于參考圖像部分的運動補償來進(jìn)行編碼的,所述方法包括以下步驟:針對要編碼的圖像部分獲得運動信息預(yù)測結(jié)果的初始集合;測試所述初始集合的運動信息預(yù)測結(jié)果的數(shù)量(n;n1)是否低于目標(biāo)數(shù)量,并且在低于所述目標(biāo)數(shù)量的情況下,向所述初始集合添加一個或多個運動信息預(yù)測結(jié)果以生成運動信息預(yù)測結(jié)果的集合;以及從所生成的運動信息預(yù)測結(jié)果的集合中選擇用于所述要編碼的圖像部分的運動信息預(yù)測結(jié)果,其中,所述初始集合的運動信息預(yù)測結(jié)果是具有從編碼中圖像或參考圖像的圖像部分獲得的運動矢量的實際運動信息預(yù)測結(jié)果,以及用于添加的可能運動信息預(yù)測結(jié)果包括一個或多個其它實際運動信息預(yù)測結(jié)果,并且還包括不具有從所述編碼中圖像或所述參考圖像的圖像部分獲得的運動矢量的一個或多個虛擬運動信息預(yù)測結(jié)果。
根據(jù)本發(fā)明的另一方面,提供一種用于對包括編碼后的數(shù)字圖像序列的位流進(jìn)行解碼的方法,其中圖像的至少一部分是通過相對于參考圖像的運動補償來進(jìn)行編碼的,所述方法包括以下步驟:針對要解碼的圖像部分獲得運動信息預(yù)測結(jié)果的初始集合;測試所述初始集合的運動信息預(yù)測結(jié)果的數(shù)量是否低于目標(biāo)數(shù)量,并且在低于目標(biāo)數(shù)量的情況下,向所述初始集合添加一個或多個運動信息預(yù)測結(jié)果以生成運動信息預(yù)測結(jié)果的集合;以及使用所生成的運動信息預(yù)測結(jié)果的集合來確定用于所述要解碼的圖像部分的運動信息預(yù)測結(jié)果,其中,所述初始集合的運動信息預(yù)測結(jié)果是具有從解碼中圖像或參考圖像的圖像部分獲得的運動矢量的實際運動信息預(yù)測結(jié)果,以及用于添加的可能運動信息預(yù)測結(jié)果包括一個或多個其它實際運動信息預(yù)測結(jié)果,并且還包括不具有從所述解碼中圖像或所述參考圖像的圖像部分獲得的運動矢量的一個或多個虛擬運動信息預(yù)測結(jié)果。
根據(jù)本發(fā)明的另一方面,提供一種用于將數(shù)字圖像序列編碼成位流的裝置,其中圖像的至少一部分是通過相對于參考圖像部分的運動補償來進(jìn)行編碼的,所述裝置包括以下部件:用于針對要編碼的圖像部分獲得運動信息預(yù)測結(jié)果的初始集合的部件;用于測試所述初始集合的運動信息預(yù)測結(jié)果的數(shù)量是否低于目標(biāo)數(shù)量、并且在低于目標(biāo)數(shù)量的情況下向所述初始集合添加一個或多個運動信息預(yù)測結(jié)果以生成運動信息預(yù)測結(jié)果的集合的部件;以及用于從所生成的運動信息預(yù)測結(jié)果的集合中選擇用于所述要編碼的圖像部分的運動信息預(yù)測結(jié)果的部件,其中,所述初始集合的運動信息預(yù)測結(jié)果是具有從編碼中圖像或參考圖像的圖像部分獲得的運動矢量的實際運動信息預(yù)測結(jié)果,以及用于添加的可能運動信息預(yù)測結(jié)果包括一個或多個其它實際運動信息預(yù)測結(jié)果,并且還包括不具有從所述編碼中圖像或所述參考圖像的圖像部分獲得的運動矢量的一個或多個虛擬運動信息預(yù)測結(jié)果。
根據(jù)本發(fā)明的另一方面,提供一種用于對包括編碼后的數(shù)字圖像序列的位流進(jìn)行解碼的裝置,其中圖像的至少一部分是通過相對于參考圖像的運動補償來進(jìn)行編碼的,所述裝置包括以下部件:用于針對要解碼的圖像部分獲得運動信息預(yù)測結(jié)果的初始集合的部件;用于測試所述初始集合的運動信息預(yù)測結(jié)果的數(shù)量是否低于目標(biāo)數(shù)量、并且在低于目標(biāo)數(shù)量的情況下向所述初始集合添加一個或多個運動信息預(yù)測結(jié)果以生成運動信息預(yù)測結(jié)果的集合的部件;以及用于使用所生成的運動信息預(yù)測結(jié)果的集合來確定用于所述要解碼的圖像部分的運動信息預(yù)測結(jié)果的部件,其中,所述初始集合的運動信息預(yù)測結(jié)果是具有從解碼中圖像或參考圖像的圖像部分獲得的運動矢量的實際運動信息預(yù)測結(jié)果,以及用于添加的可能運動信息預(yù)測結(jié)果包括一個或多個其它實際運動信息預(yù)測結(jié)果,并且還包括不具有從所述解碼中圖像或所述參考圖像的圖像部分獲得的運動矢量的一個或多個虛擬運動信息預(yù)測結(jié)果。
根據(jù)本發(fā)明的另一方面,提供一種計算機程序,其中所述計算機程序在運行在計算機上的情況下,使計算機執(zhí)行如上所述的用于對數(shù)字視頻信號進(jìn)行編碼的方法或者如上所述的用于對位流進(jìn)行解碼的方法。該程序可以存儲在計算機可讀存儲介質(zhì)上。
根據(jù)本發(fā)明的另一方面,提供一種用于將數(shù)字圖像序列編碼成位流的方法,其中圖像的至少一部分是通過相對于參考圖像部分的運動補償來進(jìn)行編碼的,所述方法包括以下步驟:針對要編碼的圖像部分獲得運動信息預(yù)測結(jié)果的初始集合;測試所述初始集合的運動信息預(yù)測結(jié)果的數(shù)量是否低于目標(biāo)數(shù)量,并且在低于所述目標(biāo)數(shù)量的情況下,向所述初始集合添加一個或多個運動信息預(yù)測結(jié)果以生成具有受控多樣性的運動信息預(yù)測結(jié)果的集合;以及從所生成的運動信息預(yù)測結(jié)果的集合中選擇用于所述要編碼的圖像部分的運動信息預(yù)測結(jié)果。
在一個實施例中,所述初始集合的運動信息預(yù)測結(jié)果是具有從編碼中圖像或參考圖像的圖像部分獲得的運動矢量的實際運動信息預(yù)測結(jié)果,以及用于添加的可能運動信息預(yù)測結(jié)果包括一個或多個其它實際運動信息預(yù)測結(jié)果,并且還包括不具有從所述編碼中圖像或所述參考圖像的圖像部分獲得的運動矢量的一個或多個虛擬運動信息預(yù)測結(jié)果。
在一個實施例中,所述方法還包括以下步驟:測試所述初始集合的運動信息預(yù)測結(jié)果的數(shù)量是否低于所述目標(biāo)數(shù)量,并且在“是”的情況下,首先添加一個或多個所述其它實際運動信息預(yù)測結(jié)果,然后再次測試在添加了所述其它實際運動信息預(yù)測結(jié)果之后運動信息預(yù)測結(jié)果的數(shù)量是否低于所述目標(biāo)數(shù)量,并且在“是”的情況下,添加一個或多個所述虛擬運動信息預(yù)測結(jié)果。
在一個實施例中,至少一個所述虛擬運動信息預(yù)測結(jié)果是根據(jù)現(xiàn)有運動信息預(yù)測結(jié)果計算出的。
在一個實施例中,向現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量加上補充矢量,其中所述補充矢量相對于所述現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量的方向具有預(yù)先確定的方向。
在一個實施例中,所述補充矢量的大小依賴于所述現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量的大小。
在一個實施例中,所述補充矢量具有與所述現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量的各相應(yīng)分量成比例的分量。
在一個實施例中,所述方法還包括以下步驟:對表示所選擇的運動信息預(yù)測結(jié)果的信息項進(jìn)行編碼。
在一個實施例中,所述方法還包括以下步驟:在所述位流中發(fā)送所述目標(biāo)數(shù)量。
在一個實施例中,所述方法還包括以下步驟:從所述初始集合中除去重復(fù)值。
根據(jù)本發(fā)明的另一方面,提供一種用于對包括編碼后的數(shù)字圖像序列的位流進(jìn)行解碼的方法,其中圖像的至少一部分是通過相對于參考圖像的運動補償來進(jìn)行編碼的,所述方法包括以下步驟:針對要解碼的圖像部分獲得運動信息預(yù)測結(jié)果的初始集合;測試所述初始集合的運動信息預(yù)測結(jié)果的數(shù)量是否低于目標(biāo)數(shù)量,并且在低于目標(biāo)數(shù)量的情況下,向所述初始集合添加一個或多個運動信息預(yù)測結(jié)果以生成具有受控多樣性的運動信息預(yù)測結(jié)果的集合;以及從所生成的運動信息預(yù)測結(jié)果的集合中確定用于所述要解碼的圖像部分的運動信息預(yù)測結(jié)果。
在一個實施例中,所述方法還包括以下步驟:對表示所選擇的用于所述要解碼的圖像部分的運動信息預(yù)測結(jié)果的信息項進(jìn)行解碼。
在一個實施例中,所述方法還包括以下步驟:使用解碼后的信息項來從所生成的運動信息預(yù)測結(jié)果的集合中檢索所選擇的運動信息預(yù)測結(jié)果。
在一個實施例中,所述初始集合的運動信息預(yù)測結(jié)果是具有從解碼中圖像或參考圖像的圖像部分獲得的運動矢量的實際運動信息預(yù)測結(jié)果,以及用于添加的可能運動信息預(yù)測結(jié)果包括一個或多個其它實際運動信息預(yù)測結(jié)果,并且還包括不具有從所述解碼中圖像或所述參考圖像的圖像部分獲得的運動矢量的一個或多個虛擬運動信息預(yù)測結(jié)果。
在一個實施例中,所述方法還包括以下步驟:測試所述初始集合的運動信息預(yù)測結(jié)果的數(shù)量是否低于所述目標(biāo)數(shù)量,并且在“是”的情況下,首先添加一個或多個所述其它實際運動信息預(yù)測結(jié)果,然后再次測試在添加了所述其它實際運動信息預(yù)測結(jié)果之后運動信息預(yù)測結(jié)果的數(shù)量是否低于所述目標(biāo)數(shù)量,并且在“是”的情況下,添加一個或多個所述虛擬運動信息預(yù)測結(jié)果。
在一個實施例中,至少一個所述虛擬運動信息預(yù)測結(jié)果是根據(jù)現(xiàn)有運動信息預(yù)測結(jié)果計算出的。
在一個實施例中,向現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量加上補充矢量,其中所述補充矢量相對于所述現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量的方向具有預(yù)先確定的方向。
在一個實施例中,所述補充矢量的大小依賴于所述現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量的大小。
在一個實施例中,所述補充矢量具有與所述現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量的各相應(yīng)分量成比例的分量。
在一個實施例中,所述方法還包括以下步驟:從所述位流獲得所述目標(biāo)數(shù)量。
在一個實施例中,所述方法還包括以下步驟:從所述初始集合中除去重復(fù)值。
本發(fā)明的其它方面提供一種編碼所用的相應(yīng)裝置、解碼所用的相應(yīng)裝置、以及相應(yīng)的計算機程序和計算機可讀存儲介質(zhì)。
根據(jù)本發(fā)明的另一方面,提供一種用于將數(shù)字圖像序列編碼成位流的方法,其中圖像的至少一部分是通過相對于參考圖像部分的運動補償來進(jìn)行編碼的,所述方法包括以下步驟:針對要編碼的圖像部分獲得運動信息預(yù)測結(jié)果的第一集合;進(jìn)行所述第一集合的運動信息預(yù)測結(jié)果的數(shù)量是否低于目標(biāo)數(shù)量的第一測試,并且在低于所述目標(biāo)數(shù)量的情況下,進(jìn)行向所述第一集合添加一個或多個運動信息預(yù)測結(jié)果以獲得運動信息預(yù)測結(jié)果的第二集合的第一添加處理;進(jìn)行所述第二集合的運動信息預(yù)測結(jié)果的數(shù)量是否低于所述目標(biāo)數(shù)量的第二測試,并且在低于所述目標(biāo)數(shù)量的情況下,進(jìn)行向所述第二集合添加一個或多個運動信息預(yù)測結(jié)果以生成具有受控多樣性的運動信息預(yù)測結(jié)果的集合的第二添加處理;以及從所生成的運動信息預(yù)測結(jié)果的集合中選擇用于所述要編碼的圖像部分的運動信息預(yù)測結(jié)果。
在一個實施例中,所述第一集合的運動信息預(yù)測結(jié)果是具有從編碼中圖像或參考圖像的圖像部分獲得的運動矢量的實際運動信息預(yù)測結(jié)果,以及所述第一添加處理添加一個或多個其它實際運動信息預(yù)測結(jié)果,并且所述第二添加處理添加不具有從所述編碼中圖像或所述參考圖像的圖像部分獲得的運動矢量的一個或多個虛擬運動信息預(yù)測結(jié)果。
在一個實施例中,至少一個所述虛擬運動信息預(yù)測結(jié)果是根據(jù)現(xiàn)有運動信息預(yù)測結(jié)果計算出的。
在一個實施例中,向現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量加上補充矢量,其中所述補充矢量相對于所述現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量的方向具有預(yù)先確定的方向。
在一個實施例中,所述補充矢量的大小依賴于所述現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量的大小。
在一個實施例中,所述補充矢量具有與所述現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量的各相應(yīng)分量成比例的分量。
在一個實施例中,所述方法還包括以下步驟:對表示所選擇的運動信息預(yù)測結(jié)果的信息項進(jìn)行編碼。
在一個實施例中,所述方法還包括以下步驟:在所述位流中發(fā)送所述目標(biāo)數(shù)量。
在一個實施例中,所述方法還包括以下步驟:從所述初始集合中除去重復(fù)值。
根據(jù)本發(fā)明的另一方面,提供一種用于對包括編碼后的數(shù)字圖像序列的位流進(jìn)行解碼的方法,其中圖像的至少一部分是通過相對于參考圖像的運動補償來進(jìn)行編碼的,所述方法包括以下步驟:針對要解碼的圖像部分獲得運動信息預(yù)測結(jié)果的第一集合;進(jìn)行所述第一集合的運動信息預(yù)測結(jié)果的數(shù)量是否低于目標(biāo)數(shù)量的第一測試,并且在低于所述目標(biāo)數(shù)量的情況下,進(jìn)行向所述第一集合添加一個或多個運動信息預(yù)測結(jié)果以獲得運動信息預(yù)測結(jié)果的第二集合的第一添加處理;進(jìn)行所述第二集合的運動信息預(yù)測結(jié)果的數(shù)量是否低于所述目標(biāo)數(shù)量的第二測試,并且在低于所述目標(biāo)數(shù)量的情況下,進(jìn)行向所述第二集合添加一個或多個運動信息預(yù)測結(jié)果以生成具有受控多樣性的運動信息預(yù)測結(jié)果的集合的第二添加處理;以及從所生成的運動信息預(yù)測結(jié)果的集合中確定用于所述要解碼的圖像部分的運動信息預(yù)測結(jié)果。
在一個實施例中,所述方法還包括以下步驟:對表示所選擇的用于所述要解碼的圖像部分的運動信息預(yù)測結(jié)果的信息項進(jìn)行解碼。
在一個實施例中,所述方法還包括以下步驟:使用解碼后的信息項來從所生成的運動信息預(yù)測結(jié)果的集合中檢索所選擇的運動信息預(yù)測結(jié)果。
在一個實施例中,所述第一集合的運動信息預(yù)測結(jié)果是具有從解碼中圖像或參考圖像的圖像部分獲得的運動矢量的實際運動信息預(yù)測結(jié)果,以及所述第一添加處理添加一個或多個其它實際運動信息預(yù)測結(jié)果,并且所述第二添加處理添加不具有從所述解碼中圖像或所述參考圖像的圖像部分獲得的運動矢量的一個或多個虛擬運動信息預(yù)測結(jié)果。
在一個實施例中,至少一個所述虛擬運動信息預(yù)測結(jié)果是根據(jù)現(xiàn)有運動信息預(yù)測結(jié)果計算出的。
在一個實施例中,向現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量加上補充矢量,其中所述補充矢量相對于所述現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量的方向具有預(yù)先確定的方向。
在一個實施例中,所述補充矢量的大小依賴于所述現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量的大小。
在一個實施例中,所述補充矢量具有與所述現(xiàn)有運動信息預(yù)測結(jié)果的運動矢量的各相應(yīng)分量成比例的分量。
在一個實施例中,所述方法還包括以下步驟:從所述位流獲得所述目標(biāo)數(shù)量。
在一個實施例中,所述方法還包括以下步驟:從所述初始集合中除去重復(fù)值。
本發(fā)明的其它方面提供一種編碼所用的相應(yīng)裝置、解碼所用的相應(yīng)裝置、以及相應(yīng)的計算機程序和計算機可讀存儲介質(zhì)。
還期望提供如下一種方法,其中該方法使得即使在因傳輸損失而損壞的位流的情況下也能夠在解碼器處進(jìn)行正確解析,同時保持良好的壓縮效率。
為此,本發(fā)明涉及一種用于將數(shù)字圖像序列編碼成位流的方法,其中圖像的至少一部分是通過相對于參考圖像部分的運動補償來進(jìn)行編碼的。針對至少一個要編碼的圖像部分,所述方法包括以下步驟:
-獲得所述要編碼的圖像部分要使用的運動信息預(yù)測結(jié)果的目標(biāo)數(shù)量,以及
-生成包括所述目標(biāo)數(shù)量的運動信息預(yù)測結(jié)果的運動信息預(yù)測結(jié)果的集合,其中所生成的集合的各運動矢量預(yù)測結(jié)果不同于所生成的集合的任何其它運動矢量預(yù)測結(jié)果。
有利地,本發(fā)明的方法使得能夠系統(tǒng)地確定對與圖像部分相關(guān)聯(lián)的諸如運動矢量等的運動信息進(jìn)行編碼要使用的運動信息預(yù)測結(jié)果的目標(biāo)數(shù)量,并且通過生成全部彼此不同的運動信息預(yù)測結(jié)果的集合來有利地改善壓縮。使用固定的運動信息預(yù)測結(jié)果的目標(biāo)數(shù)量的潛在開銷由所選擇的各種預(yù)測結(jié)果來補償,從而有助于改善壓縮率。不同的運動信息預(yù)測結(jié)果的目標(biāo)數(shù)量與作為用于要編碼的當(dāng)前圖像部分的運動信息預(yù)測結(jié)果所選擇的諸如運動矢量等的運動信息的項的實際值無關(guān)地確定的并且是固定的。
本發(fā)明的實施例在例如使用amvp的情況那樣、初始生成的運動信息預(yù)測結(jié)果的數(shù)量先驗未知的情況下是有效的。例如,在執(zhí)行初始集合的縮減、并且通過縮減處理所除去的初始預(yù)測結(jié)果的數(shù)量是先驗未知的情況下,本發(fā)明的實施例可用于確保運動信息預(yù)測結(jié)果的最終集合包括目標(biāo)數(shù)量的運動信息預(yù)測結(jié)果。
根據(jù)實施例,編碼方法還包括以下步驟:
-從所述所生成的運動信息預(yù)測結(jié)果的集合中選擇用于所述要編碼的圖像部分的運動信息預(yù)測結(jié)果,以及
-基于所獲得的所述目標(biāo)數(shù)量來對表示所述所選擇的運動信息預(yù)測結(jié)果的信息項進(jìn)行編碼。
有利地,可以針對要編碼的當(dāng)前塊選擇運動信息預(yù)測結(jié)果并且可以根據(jù)所確定的運動信息預(yù)測結(jié)果的數(shù)量對所選擇的運動矢量預(yù)測結(jié)果進(jìn)行編碼。解碼器可以系統(tǒng)地檢索到運動信息預(yù)測結(jié)果的數(shù)量,由此即使在損失的情況下也可以在解碼器處系統(tǒng)地對編碼位流進(jìn)行解析。
根據(jù)實施例,表示所述所選擇的運動矢量預(yù)測結(jié)果的信息項是所生成的運動信息預(yù)測結(jié)果的集合中的所選擇運動信息預(yù)測結(jié)果的索引,并且將該索引編碼到依賴于所獲得的所述目標(biāo)數(shù)量的位數(shù)上。
根據(jù)實施例,在獲得所述要編碼的圖像部分要使用的運動信息預(yù)測結(jié)果的目標(biāo)數(shù)量的步驟中,針對數(shù)字圖像的序列中的任何要編碼的圖像部分將所述目標(biāo)數(shù)量設(shè)置得等于預(yù)定值。
本實施例的優(yōu)點在于以下:在編碼器和解碼器這兩者處,可以在無需任何輔助計算或信令開銷的情況下容易地獲得運動信息預(yù)測結(jié)果的目標(biāo)數(shù)量。
根據(jù)另一實施例,在獲得所述要編碼的圖像部分要使用的運動信息預(yù)測結(jié)果的目標(biāo)數(shù)量的步驟中,針對給定要編碼的圖像部分,根據(jù)所述給定要編碼的圖像部分的編碼信息來確定所述目標(biāo)數(shù)量。
有利地,這種編碼信息可以是編碼參數(shù),例如在將圖像分割成可變大小的宏塊以進(jìn)行處理的情況下要編碼的圖像部分所屬于的宏塊的大小等。這種編碼信息例如還可以是與要編碼的圖像部分相關(guān)聯(lián)的編碼模式。
根據(jù)又一方面,本發(fā)明涉及一種用于將數(shù)字圖像序列編碼成位流的裝置,其中圖像的至少一部分是通過相對于參考圖像部分的運動補償來進(jìn)行編碼的。針對至少一個要編碼的圖像部分,所述裝置包括:
-用于獲得所述要編碼的圖像部分要使用的運動信息預(yù)測結(jié)果的目標(biāo)數(shù)量的部件,以及
-用于生成包括所述目標(biāo)數(shù)量的運動信息預(yù)測結(jié)果的運動信息預(yù)測結(jié)果的集合的部件,其中所生成的集合的各運動信息預(yù)測結(jié)果不同于所生成的集合的任何其它運動信息預(yù)測結(jié)果。
根據(jù)又一方面,本發(fā)明還涉及一種能夠載入可編程設(shè)備的計算機程序產(chǎn)品,包括指令序列,其中所述指令序列用于在將所述計算機程序載入所述可編程設(shè)備并且由所述可編程設(shè)備來執(zhí)行的情況下,實現(xiàn)如以上簡要說明的用于對數(shù)字圖像序列進(jìn)行編碼的方法。這種計算機程序可以是瞬態(tài)或非瞬態(tài)的。在實現(xiàn)中,該計算機程序可以存儲在非瞬態(tài)計算機可讀載體介質(zhì)上。
用于對數(shù)字圖像序列進(jìn)行編碼的裝置、存儲部件和計算機程序產(chǎn)品的特定特征和優(yōu)點與數(shù)字視頻信號編碼方法的特征和優(yōu)點類似,因而這里不進(jìn)行重復(fù)。
根據(jù)又一方面,本發(fā)明還涉及一種用于對包括編碼后的數(shù)字圖像序列的位流進(jìn)行解碼的方法,其中圖像的至少一部分是通過相對于參考圖像部分的運動補償來進(jìn)行編碼的。針對至少一個所述要解碼的圖像部分,所述方法包括以下步驟:
-獲得所述要解碼的圖像部分要使用的運動信息預(yù)測結(jié)果的目標(biāo)數(shù)量,以及
-生成包括所述目標(biāo)數(shù)量的運動信息預(yù)測結(jié)果的運動信息預(yù)測結(jié)果的集合,其中所生成的集合的各運動矢量預(yù)測結(jié)果不同于所生成的集合的任何其它運動矢量預(yù)測結(jié)果。
用于對位流進(jìn)行解碼的方法具有使得能夠確定運動信息預(yù)測結(jié)果的目標(biāo)數(shù)量并且使用這些數(shù)量的不同運動信息預(yù)測結(jié)果的優(yōu)點??梢韵到y(tǒng)地檢索到運動信息預(yù)測結(jié)果的目標(biāo)數(shù)量,結(jié)果即使在傳輸錯誤的情況下也可以系統(tǒng)地解析位流。另一優(yōu)點如下:在所有情況下,位流的解析簡單,并且特別是與不使用解碼器能夠獲得的預(yù)定目標(biāo)數(shù)量的、自適應(yīng)地縮減運動信息預(yù)測結(jié)果的數(shù)量的現(xiàn)有技術(shù)方法相比更為簡單。
根據(jù)實施例,該方法還包括基于所獲得的所述目標(biāo)數(shù)量來對表示所選擇的用于所述要解碼的圖像部分的運動信息預(yù)測結(jié)果的信息項進(jìn)行解碼的步驟。
有利地,如果在編碼器處應(yīng)用了依賴于運動信息預(yù)測結(jié)果的數(shù)量的編碼的情況下,則即使在傳輸錯誤的情況下,也可以系統(tǒng)地對表示所選擇的用于所述要解碼的圖像部分的運動信息預(yù)測結(jié)果的信息項進(jìn)行解碼。
根據(jù)又一方面,本發(fā)明還涉及一種用于對包括編碼后的數(shù)字圖像序列的位流進(jìn)行解碼的裝置,其中圖像的至少一部分是通過相對于參考圖像部分的運動補償來進(jìn)行編碼的。針對至少一個所述要解碼的圖像部分,所述裝置包括:
-用于獲得所述要解碼的圖像部分要使用的運動信息預(yù)測結(jié)果的目標(biāo)數(shù)量的部件,以及
-用于生成包括所述目標(biāo)數(shù)量的運動信息預(yù)測結(jié)果的運動信息預(yù)測結(jié)果的集合的部件,其中所生成的集合的各運動矢量預(yù)測結(jié)果不同于所生成的集合的任何其它運動矢量預(yù)測結(jié)果。
根據(jù)又一方面,本發(fā)明還涉及一種計算機或微處理器能夠讀取的信息存儲部件,其中該存儲部件是能夠移除的,并且存儲有實現(xiàn)如以上簡要說明的用于對位流進(jìn)行解碼的方法所用的計算機程序的指令。
根據(jù)又一方面,本發(fā)明還涉及一種能夠載入可編程設(shè)備的計算機程序產(chǎn)品,包括指令序列,其中所述指令序列用于在將所述計算機程序載入所述可編程設(shè)備并且由所述可編程設(shè)備來執(zhí)行的情況下,實現(xiàn)如以上簡要說明的用于對位流進(jìn)行解碼的方法。這種計算機程序可以是瞬態(tài)或非瞬態(tài)的。在實現(xiàn)中,該計算機程序可以存儲在非瞬態(tài)計算機可讀載體介質(zhì)上。
用于對位流進(jìn)行解碼的裝置、存儲部件和計算機程序產(chǎn)品的特定特征和優(yōu)點與解碼方法的特征和優(yōu)點類似,因而這里不進(jìn)行重復(fù)。
根據(jù)本發(fā)明的另一方面,提供一種用于將數(shù)字圖像序列編碼成位流的方法,其中圖像的至少一部分是通過相對于參考圖像部分的運動補償來進(jìn)行編碼的,所述方法包括以下步驟:生成具有受控多樣性的運動信息預(yù)測結(jié)果的集合;以及從所述所生成的運動信息預(yù)測結(jié)果的集合中選擇用于所述要編碼的圖像部分的運動信息預(yù)測結(jié)果。
受控多樣性意味著該集合的運動信息預(yù)測結(jié)果彼此不同,但這些運動信息預(yù)測結(jié)果中的一個或多個從統(tǒng)計上有可能接近實際運動信息由此殘差(實際運動信息和所關(guān)注的預(yù)測結(jié)果之間的差)小,因而能夠高效地進(jìn)行壓縮。
所述方法可以包括以下步驟:
生成第一運動信息預(yù)測結(jié)果;
將一個或多個第一運動信息預(yù)測結(jié)果識別為種子預(yù)測結(jié)果;
基于種子預(yù)測結(jié)果來生成一個或多個第二運動信息預(yù)測結(jié)果;以及
根據(jù)第一和/或第二運動信息預(yù)測結(jié)果來形成運動信息預(yù)測結(jié)果的所述集合。
在這種情況下,第一運動信息預(yù)測結(jié)果可以是從統(tǒng)計上有望在壓縮效率方面得到良好結(jié)果的預(yù)測結(jié)果。然后,可以使用基于第一預(yù)測結(jié)果的第二運動信息預(yù)測結(jié)果來以有組織或系統(tǒng)方式研究第一預(yù)測結(jié)果附近的預(yù)測結(jié)果空間內(nèi)的其它預(yù)測結(jié)果。這些預(yù)測結(jié)果也有望得到良好結(jié)果,并且研究的預(yù)測結(jié)果越多,發(fā)現(xiàn)與實際運動信息良好匹配的機會越大。
在一個實施例中,基于所關(guān)注的第一運動信息預(yù)測結(jié)果的重要度來將至少一個第一運動信息預(yù)測結(jié)果識別為這種種子預(yù)測結(jié)果。
該重要度可以依賴于所關(guān)注的第一運動信息預(yù)測結(jié)果在這些第一運動信息預(yù)測結(jié)果中出現(xiàn)的次數(shù)。次數(shù)越大,該預(yù)測結(jié)果被視為越重要并且在該集合中越有可能使用該預(yù)測結(jié)果。除了尋找相同的預(yù)測結(jié)果(重復(fù)值)以外,尋找相近匹配也是有效的。
可選地,重要度可以依賴于所關(guān)注的第一運動信息預(yù)測結(jié)果表示第一運動信息預(yù)測結(jié)果整體的程度的度量。例如,在對第一運動信息預(yù)測結(jié)果求平均的情況下,平均預(yù)測結(jié)果和給定的第一運動信息預(yù)測結(jié)果之間的差或距離是該給定預(yù)測結(jié)果表示第一運動信息預(yù)測結(jié)果整體的程度的度量。
控制多樣性的一個方式是通過從所述種子預(yù)測結(jié)果的其中一個中加上或減去偏移量來生成至少一個所述第二運動信息預(yù)測結(jié)果。該偏移量可以是固定的。還可以是偽隨機值,只要對于解碼器可利用與編碼器相同的種子值即可。在種子預(yù)測結(jié)果是矢量的情況下,還可以通過向該種子預(yù)測結(jié)果添加例如具有固定大小和相對于該種子預(yù)測結(jié)果的方向的預(yù)定方向的另一矢量來控制多樣性。
多個所述第二運動信息預(yù)測結(jié)果可以是基于同一所述種子預(yù)測結(jié)果所生成的。在運動信息預(yù)測結(jié)果是各自具有x分量和y分量的矢量的情況下,可以通過相對于同一所述種子預(yù)測結(jié)果的一個或這兩個所述分量加上和/或減去偏移量來獲得多個第二運動信息預(yù)測結(jié)果。例如,可以相對于同一種子預(yù)測結(jié)果加上和減去同一偏移量。在種子預(yù)測結(jié)果是具有x分量和y分量的矢量的情況下,存在相對于同一種子預(yù)測結(jié)果的x分量和y分量的其中一個或這兩個加上/減去偏移量的多個排列。這是在不會產(chǎn)生大的處理負(fù)荷的情況生成受控多樣性的高效方式。
控制多樣性的另一方式是通過形成不同對(或其它組合)的第一運動信息預(yù)測結(jié)果的平均值來生成多個第二運動信息預(yù)測結(jié)果。例如,在第一運動信息預(yù)測結(jié)果為v1、v2和v3的情況下,可以根據(jù)v1&v2、v2&v3和v3&v1的平均值形成3個第二運動信息預(yù)測結(jié)果。還可以形成相同的第一運動信息預(yù)測結(jié)果的不同加權(quán)組合作為不同的第二運動信息預(yù)測結(jié)果。
第一運動信息預(yù)測結(jié)果可以是或者包括與編碼中的圖像部分具有預(yù)定的空間和/或時間關(guān)系的圖像部分相關(guān)聯(lián)的運動信息預(yù)測結(jié)果。例如,amvp中使用的運動信息預(yù)測結(jié)果可以是第一運動信息預(yù)測結(jié)果。這些運動信息預(yù)測結(jié)果是種子預(yù)測結(jié)果的良好源。
在另一實施例中,所述方法包括以下步驟:
生成第一運動信息預(yù)測結(jié)果;
檢查所生成的第一運動信息預(yù)測結(jié)果之間的差;以及
基于這些差來從運動信息預(yù)測結(jié)果的所述集合中排除一個或多個第一運動信息預(yù)測結(jié)果。
通過考慮到第一運動信息預(yù)測結(jié)果之間的差,可以對該集合的運動信息預(yù)測結(jié)果的多樣性進(jìn)行控制。在這種情況下,無需在第一運動信息預(yù)測結(jié)果中識別種子預(yù)測結(jié)果以及基于這些種子預(yù)測結(jié)果來生成第二運動信息預(yù)測結(jié)果。例如,這在初始可利用充分高的數(shù)量的第一運動信息預(yù)測結(jié)果的情況下可以是有效的。
例如,作為控制多樣性的方式,可以除去相對于另一第一運動信息預(yù)測結(jié)果的差最小的第一運動信息預(yù)測結(jié)果。可以根據(jù)需要重復(fù)該處理,以連續(xù)除去變化較少的預(yù)測結(jié)果。
在本發(fā)明的該方面中,重要的是要注意所述集合中的運動信息預(yù)測結(jié)果的數(shù)量可以是可變的。
然而,與本發(fā)明的其它基本方面相同,至少針對要編碼的給定圖像部分或者即使針對所有圖像部分,所述集合中的運動信息預(yù)測結(jié)果的數(shù)量可以是預(yù)先確定的(目標(biāo)數(shù)量)。這使得不僅可以實現(xiàn)該集合的預(yù)測結(jié)果中的受控多樣性,而且還可以解決引言部分所提到的解析問題。
本發(fā)明的該方面還提供一種相應(yīng)的解碼方法、相應(yīng)的編碼裝置和解碼裝置、以及使得進(jìn)行編碼和解碼的程序。
根據(jù)又一方面,本發(fā)明涉及一種用于將數(shù)字圖像序列編碼成位流的方法,其中圖像的至少一部分是通過相對于參考圖像部分的運動補償來進(jìn)行編碼的。針對至少一個要編碼的圖像部分,所述方法包括以下步驟:
-獲得所述要編碼的圖像部分要使用的運動矢量預(yù)測結(jié)果的第一集合,以及
-根據(jù)所述運動信息預(yù)測結(jié)果的第一集合來生成運動信息預(yù)測結(jié)果的第二集合,該所生成的集合的各運動矢量預(yù)測結(jié)果不同于所生成的運動矢量預(yù)測結(jié)果的第二集合的任何其它運動矢量預(yù)測結(jié)果,其中第二集合的至少一個運動矢量預(yù)測結(jié)果是根據(jù)第一集合的所選擇的運動矢量預(yù)測結(jié)果計算出的。
有利地,所生成的運動矢量預(yù)測結(jié)果的第二集合用于對與要編碼的圖像部分相關(guān)聯(lián)的運動矢量進(jìn)行編碼。該運動矢量預(yù)測結(jié)果的第二集合包括所生成的(并且有可能是所選擇的)各種不同運動矢量預(yù)測結(jié)果,從而提高壓縮效率。
根據(jù)實施例,在選擇步驟中,根據(jù)重要度值來選擇第一集合的運動矢量預(yù)測結(jié)果。
根據(jù)實施例,該編碼方法包括用于計算與第一集合的各運動矢量預(yù)測結(jié)果相關(guān)聯(lián)的重要度值的步驟。
根據(jù)實施例,在選擇步驟中,根據(jù)第一集合的運動矢量預(yù)測結(jié)果之間的距離來選擇第一集合的運動矢量預(yù)測結(jié)果。
用于選擇運動矢量預(yù)測結(jié)果以進(jìn)一步生成附加或虛擬運動矢量預(yù)測結(jié)果的各實施例使得能夠應(yīng)用受控多樣性選擇,從而具有提高壓縮效率的優(yōu)點。實際上,使用根據(jù)初始集合的重要運動矢量預(yù)測結(jié)果所計算出的運動矢量預(yù)測結(jié)果使得能夠更加精確地表示要編碼的當(dāng)前圖像部分的運動矢量。此外,在最終集合中具有固定或目標(biāo)數(shù)量的預(yù)測結(jié)果并非是必需的。
根據(jù)實施例,運動矢量預(yù)測結(jié)果的第一集合中的運動矢量預(yù)測結(jié)果是與編碼中圖像和/或參考圖像中的要編碼的圖像部分相關(guān)聯(lián)的運動矢量。該第一集合可以由amvp中使用的預(yù)測結(jié)果構(gòu)成或者可以包括amvp中使用的預(yù)測結(jié)果。
附圖說明
在以下參考附圖所進(jìn)行的僅以非限制性示例的方式給出的說明中將出現(xiàn)其它特征和優(yōu)點,其中:
(前面所述的)圖1示意性示出運動矢量預(yù)測方案中所使用的運動矢量預(yù)測結(jié)果的集合;
圖2是被配置為實現(xiàn)本發(fā)明的實施例的處理裝置的圖;
圖3是根據(jù)本發(fā)明的實施例的編碼器的框圖;
圖4示出根據(jù)本發(fā)明的實施例的解碼器的框圖;
圖5詳細(xì)說明根據(jù)第一實施例的運動矢量預(yù)測結(jié)果的集合的判斷;
圖6詳細(xì)說明根據(jù)第二實施例的運動矢量預(yù)測結(jié)果的集合的判斷;
圖7示意性示出運動矢量預(yù)測結(jié)果的第二集合;以及
圖8示意性示出坐標(biāo)系中的運動矢量。
具體實施方式
圖2示出被配置為實現(xiàn)本發(fā)明的一個實施例的處理裝置1000的圖。該裝置1000例如是微計算機、工作站或輕薄便攜式裝置。
裝置1000包括通信總線1113,其中優(yōu)選該通信總線1113連接有以下組件:
-諸如微處理器等的表示為cpu的中央處理單元1111;
-表示為rom的只讀存儲器1107,其能夠容納實現(xiàn)本發(fā)明所用的計算機程序;
-表示為ram的隨機存取存儲器1112,其能夠容納本發(fā)明的方法的可執(zhí)行代碼以及如下寄存器,其中這些寄存器被配置為記錄實現(xiàn)對數(shù)字圖像序列進(jìn)行編碼的方法和/或?qū)ξ涣鬟M(jìn)行解碼的方法所需的變量和參數(shù);以及
-通信接口1102,其連接至傳輸要處理的數(shù)字?jǐn)?shù)據(jù)所經(jīng)由的通信網(wǎng)絡(luò)1103。
可選地,裝置1000還可以具有以下組件:
-諸如硬盤等的數(shù)據(jù)存儲部件1104,其能夠容納實現(xiàn)本發(fā)明的程序以及在本發(fā)明的實現(xiàn)期間所使用或所產(chǎn)生的數(shù)據(jù);
-盤1106所用的盤驅(qū)動器1105,其中該盤驅(qū)動器被配置為從盤1106讀取數(shù)據(jù)或者將數(shù)據(jù)寫到所述盤上;
-屏幕1109,用于利用鍵盤1110或任何其它指示部件來顯示數(shù)據(jù)以及/或者用作與用戶的圖形界面。
裝置1000可以連接至例如數(shù)字照相機1100或麥克風(fēng)1108等的各種外圍設(shè)備,其中這些外圍設(shè)備各自連接至輸入/輸出卡(未示出)從而向裝置1000供給多媒體數(shù)據(jù)。
通信總線提供裝置1000內(nèi)所包括的或連接至裝置1000的各種元件之間的通信和互操作性。該總線的表示并非限制性的,并且特別地,中央處理單元能夠直接地或者利用裝置1000的其它元件向裝置100的任意元件通信指示。
盤1106可以由例如(可重寫或不可重寫的)致密盤(cd-rom)、zip盤或存儲卡等的任何信息介質(zhì)以及概括而言由信息存儲部件來替換,其中該信息存儲部件可以由集成于該裝置內(nèi)或沒有集成于該裝置內(nèi)的可能能夠移除的微計算機或微處理器來讀取,并且被配置為存儲如下的一個或多個程序,其中執(zhí)行該一個或多個程序使得能夠?qū)崿F(xiàn)根據(jù)本發(fā)明的對數(shù)字圖像序列進(jìn)行編碼的方法和/或?qū)ξ涣鬟M(jìn)行解碼的方法。
可執(zhí)行代碼可以存儲在只讀存儲器1107中、硬盤1104上或者例如前面所述的盤1106等的可移除數(shù)字介質(zhì)上。根據(jù)變形例,程序的可執(zhí)行代碼可以利用通信網(wǎng)絡(luò)1103經(jīng)由接口1102接收到,從而在執(zhí)行之前存儲在諸如硬盤1104等的裝置1000的存儲部件的其中一個中。
中央處理單元1111被配置為控制和指導(dǎo)根據(jù)本發(fā)明的程序的指令或軟件代碼的一部分的執(zhí)行,其中這些指令存儲在上述存儲部件的其中一個中。在通電時,將存儲在非易失性存儲器中(例如硬盤1104上或只讀存儲器1107中)的程序傳遞至隨機存取存儲器1112,然后該隨機存取存儲器1112容納程序的可執(zhí)行代碼以及用于存儲實現(xiàn)本發(fā)明所需的變量和參數(shù)的寄存器。
在本實施例中,該裝置是使用軟件來實現(xiàn)本發(fā)明的可編程設(shè)備。然而,可選地,本發(fā)明可以以硬件形式(例如,以專用集成電路或asic的形式)來實現(xiàn)。
圖3示出根據(jù)本發(fā)明的實施例的編碼器的框圖。該編碼器由所連接的模塊來表示,其中各模塊被配置為例如以對裝置1000的cpu1111要執(zhí)行的編程指令的形式來執(zhí)行實現(xiàn)本發(fā)明的實施例的方法的相應(yīng)步驟。
編碼器30接收到原始的數(shù)字圖像序列i0~in301作為輸入。各數(shù)字圖像由已知為像素的一組樣本來表示。
編碼器30輸出位流310。
位流310包括多個編碼單位或片,其中各片包括:片頭,其包括對片進(jìn)行編碼所使用的編碼參數(shù)的編碼值;以及片本體,其包括編碼視頻數(shù)據(jù)。
將所輸入的數(shù)字圖像分割成塊(302),其中這些塊是圖像部分并且可以具有可變大小(例如,4×4、8×8、16×16、32×32)。針對各輸入塊選擇編碼模式。存在空間預(yù)測編碼或幀內(nèi)編碼以及時間預(yù)測編碼或幀間編碼這兩類編碼模式。對可能的編碼模式進(jìn)行測試。
模塊303實現(xiàn)幀內(nèi)預(yù)測,其中利用根據(jù)給定要編碼的塊附近的像素計算出的預(yù)測結(jié)果來預(yù)測該要編碼的塊。在選擇幀內(nèi)編碼的情況下,對所選擇的幀內(nèi)預(yù)測結(jié)果的指示和給定塊與其預(yù)測結(jié)果之間的差進(jìn)行編碼。
時間預(yù)測由模塊304和305來實現(xiàn)。首先,選擇一組參考圖像316中的參考圖像,并且利用運動估計模塊304來選擇該參考圖像中的作為最接近要編碼的給定塊的區(qū)域的部分(還被稱為參考區(qū)域)。利用運動補償模塊305來計算所選擇的參考區(qū)域和給定塊之間的差(還稱為殘差塊)。所選擇的參考區(qū)域由運動矢量來表示。
在選擇幀間預(yù)測的情況下,對與運動矢量和殘差塊有關(guān)的信息進(jìn)行編碼。為了進(jìn)一步降低比特率,利用相對于運動矢量預(yù)測結(jié)果的差來對運動矢量進(jìn)行編碼。利用運動矢量預(yù)測和編碼模塊317來從運動矢量字段318獲得運動矢量預(yù)測結(jié)果(還稱為運動信息預(yù)測結(jié)果)的集合。
有利地,如以下參考圖5和6更詳細(xì)地所述,生成用于選擇最佳運動矢量預(yù)測結(jié)果以對當(dāng)前運動矢量進(jìn)行編碼的運動矢量預(yù)測結(jié)果的集合。對于給定要編碼的當(dāng)前塊,設(shè)置預(yù)定數(shù)量nmax的運動矢量預(yù)測結(jié)果,結(jié)果可以使用預(yù)定的位數(shù)來對作為表示所選擇的運動矢量預(yù)測結(jié)果的信息項的、所選擇的運動矢量預(yù)測結(jié)果的索引進(jìn)行編碼。即使在丟失的情況下,解碼器也可以檢索到該預(yù)定的位數(shù),因此確保解碼器即使在錯誤或丟失的情況下也能夠?qū)ξ涣鬟M(jìn)行解析。這nmax個運動矢量預(yù)測結(jié)果根據(jù)各實施例被選擇為全部彼此不同,從而提高了壓縮效率。
根據(jù)諸如塊大小或編碼模式等的編碼參數(shù),可以針對整個序列、針對該序列的一組圖像或者以塊水平應(yīng)用預(yù)定數(shù)量nmax的運動矢量預(yù)測結(jié)果和用于對運動矢量預(yù)測結(jié)果的索引進(jìn)行編碼的相應(yīng)的位數(shù)的選擇。例如,針對使用對殘差塊進(jìn)行編碼的幀間預(yù)測而進(jìn)行編碼的塊,可以使用第一預(yù)定數(shù)量nmax1的運動矢量預(yù)測結(jié)果,并且針對使用僅對運動矢量進(jìn)行編碼而沒有對殘差塊進(jìn)行編碼的skip模式而進(jìn)行編碼的塊,可以使用第二預(yù)定數(shù)量nmax2的運動矢量預(yù)測結(jié)果。例如,可以通過將運動矢量預(yù)測結(jié)果的各數(shù)量nmax1和nmax2插入諸如片頭等的頭或者任何適當(dāng)?shù)脑獢?shù)據(jù)字段來在位流中發(fā)送這些數(shù)量。
編碼器30還包括編碼模式的選擇的模塊306,其中該模塊306使用諸如率失真標(biāo)準(zhǔn)等的編碼代價標(biāo)準(zhǔn)來判斷在空間預(yù)測模式和時間預(yù)測模式中哪個模式是最佳模式。將變換307應(yīng)用于殘差塊,然后所獲得的變換數(shù)據(jù)由模塊308進(jìn)行量化并且由模塊309進(jìn)行熵編碼。最后,將要編碼的當(dāng)前塊的編碼殘差塊連同與所使用的預(yù)測結(jié)果有關(guān)的信息一起插入位流310。對于以“skip”模式編碼后的塊,僅將該預(yù)測結(jié)果的參考編碼在位流中,而無任何殘差塊。
編碼器30還進(jìn)行編碼圖像的解碼從而產(chǎn)生后續(xù)圖像的運動估計所用的參考圖像。模塊311對量化數(shù)據(jù)進(jìn)行逆量化,之后進(jìn)行逆變換312。逆運動預(yù)測模塊313使用預(yù)測信息來判斷哪個預(yù)測結(jié)果用于給定塊,并且逆運動補償模塊314實際將模塊312所獲得的殘差加至從一組參考圖像316獲得的參考區(qū)域??蛇x地,應(yīng)用去塊濾波器315以除去結(jié)塊效果并且提高解碼圖像的視覺質(zhì)量。在解碼器處應(yīng)用相同的去塊濾波器,以使得在不存在傳輸損失的情況下,編碼器和解碼器應(yīng)用相同的處理。
圖4示出根據(jù)本發(fā)明的實施例的解碼器的框圖。該解碼器由所連接的模塊來表示,其中各模塊被配置為例如以對裝置1000的cpu1111要執(zhí)行的編程指令的形式執(zhí)行實現(xiàn)本發(fā)明的實施例的方法的相應(yīng)步驟。
解碼器40接收包括編碼單位的位流401,其中每一個編碼單位包括包含與編碼參數(shù)有關(guān)的信息的頭以及包含編碼視頻數(shù)據(jù)的本體。如參考圖3所述,對編碼視頻數(shù)據(jù)進(jìn)行熵編碼,并且按預(yù)定的位數(shù)針對給定塊對運動矢量預(yù)測結(jié)果的索引進(jìn)行編碼。對接收到的編碼視頻數(shù)據(jù)進(jìn)行熵解碼(402),去量化(403),然后應(yīng)用逆變換(404)。
特別地,在接收到的編碼視頻數(shù)據(jù)與要編碼的當(dāng)前塊的殘差塊相對應(yīng)的情況下,解碼器也對來自該位流的運動預(yù)測信息進(jìn)行解碼,從而得到編碼器所使用的參考區(qū)域。
模塊410對通過運動預(yù)測編碼后的各當(dāng)前塊應(yīng)用運動矢量解碼,其中該運動矢量解碼包括確定所使用的運動矢量預(yù)測結(jié)果的數(shù)量nmax并且檢索按根據(jù)nmax的位數(shù)編碼后的運動矢量預(yù)測結(jié)果索引。與圖3的模塊317類似,運動矢量解碼模塊410生成nmax個運動矢量預(yù)測結(jié)果的集合。以下參考圖5和6所述的實施例同樣適用。在毫無丟失地接收到位流的情況下,解碼器生成與編碼器完全相同的運動矢量預(yù)測結(jié)果的集合。在丟失的情況下,可能無法生成運動矢量預(yù)測結(jié)果的集合并且因此無法正確地對與當(dāng)前塊相關(guān)聯(lián)的運動矢量進(jìn)行解碼。然而,由于解碼器可以系統(tǒng)地檢索到對運動矢量預(yù)測結(jié)果的索引進(jìn)行編碼所使用的位數(shù),因此即使在丟失的情況下也總是可以進(jìn)行位流的解析。
一旦獲得了當(dāng)前塊的運動矢量預(yù)測結(jié)果的索引,則在沒有發(fā)生丟失的情況下,可以對與當(dāng)前塊相關(guān)聯(lián)的運動矢量的實際值進(jìn)行解碼并且使用該實際值來應(yīng)用逆運動補償(406)。從參考圖像(408)提取由解碼后的運動矢量表示的參考區(qū)域以最終應(yīng)用逆運動補償406。
在應(yīng)用了幀內(nèi)預(yù)測的情況下,利用模塊405應(yīng)用逆幀內(nèi)預(yù)測。
最終,獲得了解碼塊。與在編碼器處應(yīng)用的去塊濾波器315類似,應(yīng)用去塊濾波器407。最終,解碼器40提供解碼后的視頻信號409。
圖5詳細(xì)說明本發(fā)明的第一實施例中的運動矢量預(yù)測結(jié)果或運動矢量候選的集合的生成。圖5所示的算法的所有步驟可以以軟件形式實現(xiàn)并且由裝置1000的中央處理單元1111來執(zhí)行。
圖5示出適用于具有在參考圖像中指定參考區(qū)域的關(guān)聯(lián)運動矢量的給定要編碼的當(dāng)前塊的流程圖。
首先,在步驟s500中獲得運動矢量預(yù)測結(jié)果的初始集合l1。該集合l1包括n個候選。在實施例中,運動矢量預(yù)測結(jié)果的初始集合包括根據(jù)參考圖1已經(jīng)說明的運動矢量預(yù)測方案amvp所選擇的運動矢量候選(例如,圖1的矢量v0~v3以及根據(jù)v1、v2和v3計算出的中值矢量)。因此,n的最大值為5。
優(yōu)選地,運動矢量預(yù)測結(jié)果的初始集合l1僅包含彼此不同的運動矢量。以圖1為例,應(yīng)僅將運動矢量v0、v1和中值矢量保持在l1中,并且運動矢量預(yù)測結(jié)果的數(shù)量為n=3。
在可選實施例中,可以應(yīng)用用于選擇已計算出的運動矢量、并且根據(jù)可用的運動矢量計算其它運動矢量(即,平均值、中間值等)以形成運動矢量預(yù)測結(jié)果的初始集合l1的任何其它方案。
在又一可選實施例中,運動矢量預(yù)測結(jié)果的初始集合l1為空并且n=0。
在以下的步驟s502中,獲得要使用的候選運動矢量預(yù)測結(jié)果的目標(biāo)數(shù)量nmax。nmax可以是針對要編碼的整個數(shù)字圖像序列預(yù)先確定的(例如,nmax=4),或者可以根據(jù)要編碼的當(dāng)前塊或該要編碼的當(dāng)前塊所屬于的編碼單位(例如,片)的編碼參數(shù)來選擇的。
例如,數(shù)量nmax可以依賴于應(yīng)用于處理中的當(dāng)前塊所屬于的宏塊的變換的大小:例如,對于施加于2p+1×2p+1的塊的變換,nmax=p。
在本實施例中對運動矢量預(yù)測結(jié)果的索引進(jìn)行編碼要使用的位數(shù)k與nmax直接有關(guān):k=intsup(log2(nmax)),其中intsup(x)是緊接著值x的整數(shù)。優(yōu)選地,nmax應(yīng)當(dāng)是2的冪(nmax=2k),從而使用能夠在k位上編碼的所有索引。有利地,使用發(fā)信令所使用的所有位從而能夠指定各種運動矢量預(yù)測結(jié)果并且提高壓縮。
可選地,在確定了不同的運動矢量預(yù)測結(jié)果的數(shù)量nmax之后,可以使用表示運動矢量預(yù)測結(jié)果的索引的任意類型的編碼。特別地,可以使用諸如霍夫曼(huffman)編碼或算術(shù)編碼等的任意類型的熵編碼。此外,還可以使用諸如rice-golomb或一元編碼等的前綴型編碼來對索引進(jìn)行編碼。
接著,在步驟s503中測試集合l1中的運動矢量預(yù)測結(jié)果的數(shù)量n是否高于nmax。
在回答為肯定的情況下,在測試s503之后進(jìn)入從l1中選擇運動矢量預(yù)測結(jié)果候選的步驟s504,之后在步驟s506中從l1中除去所選擇的運動矢量預(yù)測結(jié)果候選以形成運動矢量預(yù)測結(jié)果的修改集合l2。
根據(jù)例如距離標(biāo)準(zhǔn)的除去標(biāo)準(zhǔn)來應(yīng)用步驟s504的選擇。例如,集合l1包括運動矢量預(yù)測結(jié)果{v1,….,vn},其中如圖8所示,各運動矢量預(yù)測結(jié)果是由其在坐標(biāo)系的x軸和y軸上的分量或坐標(biāo)所表示的矢量。
在實施例中,步驟s504通過如下計算距離來確定l1的各矢量vk和除vk自身以外的各其它矢量vn之間的距離:d(vk,vn)=|vkx-vnx|+|vky-vny|,其中|a|表示a的絕對值。以圖8為例,矢量v的坐標(biāo)為(3,2),矢量v’的坐標(biāo)為(4,2)并且v”的坐標(biāo)為(3,3)。在該示例中,d(v,v’)=d(v,v”)=1,因而v’和v”相對于矢量v位于相同距離處,而d(v’,v”)=2。
可選地,可以應(yīng)用距離的計算所使用的任何其它類型的度量。
得到d(vp,vq)的最小距離表示集合l1中的兩個最近矢量vp、vq,因此選擇這兩個矢量的其中一個以進(jìn)行除去。針對這兩個矢量的其中一個的選擇可以基于這兩個矢量中的每一個到修改集合l1中的剩余運動預(yù)測矢量的距離:選擇vp和vq中的相對于集合l1中的其它矢量的距離最小的矢量來進(jìn)行除去。
效果是確保修改集合l2中的剩余矢量之間的距離最大,從而使得能夠使用盡可能不同或多樣的運動矢量預(yù)測結(jié)果。
在除去了所選擇的矢量之后,n的值遞減(s508),然后將n與nmax進(jìn)行比較(s510)。在n的值尚未達(dá)到nmax的情況下(針對測試s510的回答為“否”),重復(fù)步驟s504~s510。否則,在n達(dá)到nmax的情況下,在步驟s510之后進(jìn)入以下所述的步驟s522。
在針對測試s503的回答為“否”的情況下,測試s512檢查n是否低于nmax。在回答為否定的情況下、即在n=nmax的情況下,在測試s512之后進(jìn)入以下所述的步驟s522。
在針對測試s512的回答為“是”的情況下、即在n嚴(yán)格低于nmax的情況下,在測試s512之后進(jìn)入步驟s514,其中該步驟s514獲得或生成附加運動矢量預(yù)測結(jié)果候選。實際上,從運動矢量預(yù)測結(jié)果的初始集合l1開始,可以按預(yù)定順序添加其它候選作為運動矢量預(yù)測結(jié)果,以形成運動矢量預(yù)測結(jié)果的修改集合l2。以圖7為例,可以添加塊710、720、730和740的運動矢量作為可能運動矢量預(yù)測結(jié)果。此外,可以添加s500中沒有選擇的770、760、750中的兩個預(yù)測結(jié)果作為可能運動矢量預(yù)測結(jié)果。
針對各可能運動矢量預(yù)測結(jié)果候選mv,檢查運動矢量預(yù)測結(jié)果mv是否不同于已存儲在集合l2中的所有運動矢量預(yù)測結(jié)果候選。
在例如作為圖7的塊710、720、730、740、750、760和770的運動矢量所考慮的各可能運動矢量候選等于集合l2的運動矢量預(yù)測結(jié)果的情況下,在步驟s514中計算新的“虛擬”運動矢量預(yù)測結(jié)果候選。
這些運動矢量預(yù)測結(jié)果候選由于不是當(dāng)前圖像或參考圖像的其它塊的運動矢量因而被稱為虛擬的。這些虛擬運動矢量預(yù)測結(jié)果例如是通過添加偏移量來根據(jù)現(xiàn)有運動矢量預(yù)測結(jié)果計算出的。例如,根據(jù)坐標(biāo)為(mvx,mvy)的集合l2的運動矢量mv,可以通過向其坐標(biāo)加上/減去偏移量off來計算出四個虛擬運動矢量預(yù)測結(jié)果:mv’(mvx±off,mvy±off)。通常,可以將off設(shè)置為等于1或2。
可選地,可以應(yīng)用運動矢量預(yù)測結(jié)果mv的分量的其它變形以獲得虛擬運動矢量預(yù)測結(jié)果,從而獲得相對于現(xiàn)有運動矢量預(yù)測結(jié)果不同的運動矢量預(yù)測結(jié)果,從而增加壓縮效率。
例如,可以分別使用兩個值offx和offy來獨立修改運動矢量mv的分量,并且可以將offx或offy設(shè)置為0。
在實施例中,offx和offy這兩者與相應(yīng)的分量成比例:offx=amvx并且offy=bmvy,其中a和b通常小于0.5。在需要的情況下,將修改后的坐標(biāo)mvx和mvy四舍五入為最近整數(shù)值,從而表示像素的網(wǎng)格上的位移。
在實施例中,將預(yù)定規(guī)范的補充運動矢量加至矢量mv,其中該補充矢量具有與運動矢量mv相同的方向,如圖8所示:將補充矢量850加至矢量820。
在又一可選實施例中,如下計算集合l2的運動矢量的方差:
其中,
在步驟s516中將步驟s514中獲得的一個運動矢量預(yù)測結(jié)果添加至運動矢量預(yù)測結(jié)果的集合l2,并且數(shù)量n增加1(步驟s518)。
接著,在步驟s520中檢查n是否等于nmax。在回答為否定的情況下,重復(fù)步驟s514~s520。
在回答為肯定的情況下,達(dá)到了所確定的運動矢量預(yù)測結(jié)果候選的目標(biāo)數(shù)量nmax,并且在步驟s520之后在編碼器處進(jìn)行從集合l2中選擇當(dāng)前塊的最佳運動矢量預(yù)測結(jié)果的步驟s522。例如,應(yīng)用率失真優(yōu)化標(biāo)準(zhǔn)以選擇最佳運動矢量預(yù)測結(jié)果mvi,從而對當(dāng)前塊的運動矢量進(jìn)行編碼。
在編碼器處,在步驟s524中,對運動殘差(即,當(dāng)前塊的運動矢量和所選擇的運動矢量預(yù)測結(jié)果之間的差)、以及所選擇的運動矢量預(yù)測結(jié)果的指示進(jìn)行編碼。例如,使用k=intsup(log2(nmax))位來對l2的所選擇的運動矢量預(yù)測結(jié)果mvi的索引i進(jìn)行編碼。
可選地,可以應(yīng)用索引i的熵編碼。
在又一可選例中,可以使用諸如rice-golomb編碼等的前綴型編碼來對索引i進(jìn)行編碼,其中使用之后跟著“0”的i個“1”來對各值i進(jìn)行編碼。
在無需進(jìn)行步驟s522和s524的情況下,圖5的算法還可以通過解碼器生成給定塊的運動矢量預(yù)測結(jié)果或運動矢量候選的集合來實現(xiàn)。
在解碼器處,在得知nmax并由此得知對索引i進(jìn)行了編碼的位數(shù)k的情況下,從位流獲得針對給定要解碼的塊的所選擇的運動矢量預(yù)測結(jié)果mvi的索引i。同樣地實現(xiàn)步驟s500~s518以獲得運動矢量預(yù)測結(jié)果的集合l2,由此從位流解碼得到的索引i指定編碼器實際使用的運動矢量預(yù)測結(jié)果。
在傳輸期間發(fā)生損失的情況下,由于解碼器可以系統(tǒng)地檢索到數(shù)量nmax,因此即使根據(jù)包損失、在解碼器處可能無法獲得運動矢量預(yù)測結(jié)果的完整集合l2,也可以系統(tǒng)地對接收到的位流進(jìn)行解析以提取指定所選擇的運動矢量預(yù)測結(jié)果的索引i。
圖6詳細(xì)說明本發(fā)明的第二實施例中的運動矢量預(yù)測結(jié)果或運動矢量候選的集合的生成。圖6所示的算法的所有步驟可以以軟件形式來實現(xiàn)并且由裝置1000的中央處理單元1111來執(zhí)行。
圖6示出適用于具有在參考圖像中指定參考區(qū)域的關(guān)聯(lián)運動矢量的給定要編碼的當(dāng)前塊的流程圖。
首先,與圖5的步驟s502類似,在步驟s600中確定要使用的運動矢量預(yù)測結(jié)果候選的目標(biāo)數(shù)量nmax。
在實施例中,nmax是2k的形式,以使得可以在k位上編碼的各索引值與可能運動矢量預(yù)測結(jié)果相對應(yīng)。
例如,為了使用提出5個運動矢量預(yù)測結(jié)果的amvp方案的所有運動矢量預(yù)測結(jié)果,需要3位來對運動矢量預(yù)測結(jié)果的索引進(jìn)行編碼。在這種情況下,優(yōu)選為nmax=23=8。
在步驟s602中,獲得運動矢量預(yù)測結(jié)果候選的初始集合l1。例如,選擇amvp的n=5個運動矢量預(yù)測結(jié)果的初始集合。
對運動矢量預(yù)測結(jié)果的初始集合應(yīng)用縮減處理以除去重復(fù)值,從而獲得包含n1個元素的運動矢量預(yù)測結(jié)果的縮減集合。優(yōu)選地,將縮減處理之后的各剩余矢量的重復(fù)值的數(shù)量記錄和存儲在存儲器中以隨后在以下所述的步驟s612中使用。
接著,檢查n1是否高于或等于運動矢量預(yù)測結(jié)果的目標(biāo)數(shù)量nmax(測試s606)??梢灾赋?,針對該測試的肯定結(jié)果僅在算法以運動矢量的數(shù)量比nmax大的運動矢量預(yù)測結(jié)果的第一集合開始的情況下發(fā)生。在回答為肯定的情況下,在步驟s606之后進(jìn)入步驟s630,其中該步驟s630選擇集合l1的最初nmax個運動矢量預(yù)測結(jié)果候選以形成運動矢量預(yù)測結(jié)果的集合l2。
在回答為否定的情況下,即在n1低于nmax的情況下,必須利用附加運動矢量預(yù)測結(jié)果來補充運動矢量預(yù)測結(jié)果的該集合。
在步驟s608中,獲得運動矢量預(yù)測結(jié)果候選的第二集合l1’。
運動矢量預(yù)測結(jié)果候選的第二集合l1’包括第一集合l1的剩余運動矢量預(yù)測結(jié)果以及例如與如圖7所示的參考圖像的塊710、720、730和740的運動矢量相對應(yīng)的附加運動矢量。此外,可以添加s600中沒有選擇的770、760、750中的兩個預(yù)測結(jié)果作為可能運動矢量預(yù)測結(jié)果。集合l1’的各運動矢量預(yù)測結(jié)果具有相應(yīng)的索引。
接著,在步驟s610中向運動矢量預(yù)測結(jié)果的第二集合應(yīng)用縮減處理以獲得n2個矢量的運動矢量預(yù)測結(jié)果的縮減第二集合l1”。該縮減處理除去重復(fù)值,由此l1”的所有運動矢量預(yù)測結(jié)果彼此不同。將l1”中所保持的各矢量的重復(fù)值的數(shù)量記錄和存儲在存儲器中以隨后在以下所述的步驟s612中使用。
然后,在步驟s628中檢查運動矢量預(yù)測結(jié)果的數(shù)量n2是否高于或等于nmax。在回答為肯定的情況下,在步驟s628之后進(jìn)入已經(jīng)說明的步驟s630。
在回答為否定的情況下,需要向運動矢量預(yù)測結(jié)果的縮減第二集合l1”添加更多的運動矢量預(yù)測結(jié)果,以獲得nmax個運動矢量預(yù)測結(jié)果的最終集合。
在測試s628之后,在回答為否定的情況下,在步驟s612中向運動矢量預(yù)測結(jié)果的縮減第二集合l1”的各剩余運動矢量預(yù)測結(jié)果候選指派重要度值。
在可選實施例中,在針對測試s606的回答為否定的情況下,在測試s606之后直接進(jìn)入步驟s612。
在本實施例中,使用在步驟s604和s610期間計算和存儲的給定運動矢量預(yù)測結(jié)果的重復(fù)值的數(shù)量來將重要度值作為給定運動矢量預(yù)測結(jié)果的重復(fù)值的數(shù)量進(jìn)行計算。以圖1為例,兩個矢量v0和v3相等,因而矢量v0的重要度值等于2。
在可選實施例中,可以將重要度值作為相對于所考慮的矢量的集合中的代表矢量(諸如該集合的矢量的平均值或該集合的矢量的中間值等)的距離的函數(shù)來計算。然后,可以將重要度作為該集合vn的給定矢量相對于代表矢量的距離的倒數(shù)來計算:矢量vn越接近該集合的代表值,vn的重要度越高。
然后,在步驟s614中,根據(jù)重要度值遞減的順序?qū)κS嗟膎2個運動矢量預(yù)測結(jié)果候選排序。在幾個運動矢量預(yù)測結(jié)果具有相同的重要度值的情況下,可以根據(jù)這些運動矢量預(yù)測結(jié)果的索引的遞增順序來對它們排序。
向重新排序后的運動矢量預(yù)測結(jié)果重新指派遞增索引{v0,v1,…,vn2-1}。
在下一步驟s616中,將變量n初始化為0并且將變量n初始化為n2,這是重新排序后的集合中的運動矢量預(yù)測結(jié)果的當(dāng)前數(shù)量。
接著,在步驟s616之后的步驟s618中,向重新排序后的集合添加虛擬運動矢量預(yù)測結(jié)果候選。在本實施例中,根據(jù)基于重要度排序后的剩余運動矢量預(yù)測結(jié)果來計算虛擬運動矢量預(yù)測結(jié)果??紤]重新排序后的集合的索引n的運動矢量預(yù)測結(jié)果(坐標(biāo)為(vnx,vny)的vn)。根據(jù)vn,可以通過向vn的一個或兩個坐標(biāo)連續(xù)加上+off和-off來計算由坐標(biāo)所定義的以下列出的8個虛擬運動矢量預(yù)測結(jié)果:{(vnx+off,vny),(vnx-off,vny),(vnx+off,vny+off),(vnx+off,vny-off),(vnx-off,vny+off),(vnx-off,vny-off),(vnx,vny+off),(vnx,vny-off)}。
可以使用從運動數(shù)量預(yù)測結(jié)果vn開始的虛擬運動矢量預(yù)測結(jié)果(特別是以上針對圖5的步驟s514所述的替代值)的任何替代計算。
將虛擬運動矢量預(yù)測結(jié)果的該列表添加至運動矢量預(yù)測結(jié)果的當(dāng)前集合。
在步驟s620中除去重復(fù)值。
在除去了可能的重復(fù)值之后,在步驟s622中將值n更新為運動矢量預(yù)測結(jié)果的剩余數(shù)量。
接著,在步驟s624中檢查n是否高于或等于nmax。在回答為否定的情況下,在步驟s624之后進(jìn)行使值n增加1的步驟s626,并且重復(fù)步驟s618~s624。
在針對步驟s624的回答為肯定的情況下,獲得了足夠的運動矢量預(yù)測結(jié)果。在步驟s624之后進(jìn)入步驟s630,其中在該步驟s630中,選擇最初nmax個運動矢量候選以構(gòu)成nmax個矢量的運動矢量預(yù)測結(jié)果的最終集合l2。
在編碼器處,在步驟s630之后進(jìn)入步驟s632,其中在該步驟s632中,與圖5的步驟s522類似,根據(jù)諸如率失真標(biāo)準(zhǔn)等的預(yù)定標(biāo)準(zhǔn)來在當(dāng)前塊的運動矢量預(yù)測結(jié)果的集合中選擇最佳運動矢量預(yù)測結(jié)果mvi。
在步驟s632之后進(jìn)入步驟s634,其中在該步驟s634中,與圖5的步驟s524類似,使用運動矢量預(yù)測結(jié)果mvi來對當(dāng)前塊的運動矢量進(jìn)行編碼。例如,使用k位來對運動矢量預(yù)測結(jié)果mvi的索引i進(jìn)行編碼,其中k是根據(jù)nmax計算出的、即k=intsup(log2(nmax))。
可選地,可以應(yīng)用索引i的熵編碼。
在又一可選例中,可以使用諸如rice-golomb編碼等的前綴型編碼來對索引i進(jìn)行編碼,其中使用之后跟著“0”的i個“1”來對各值i進(jìn)行編碼。
在解碼器側(cè),除了省略了步驟s632和s634以外,圖6的算法還可以通過解碼器生成給定塊的運動矢量預(yù)測結(jié)果或運動矢量候選的集合來實現(xiàn)。
在解碼器處,在得知nmax并由此得知對索引i進(jìn)行了編碼的位數(shù)k的情況下,從位流獲得給定要編碼的塊的所選擇的運動矢量預(yù)測結(jié)果mvi的索引i。類似地執(zhí)行步驟s600~s630以獲得運動矢量預(yù)測結(jié)果的集合l2,由此從位流解碼得到的索引i指定編碼器實際使用的運動矢量預(yù)測結(jié)果。
在傳輸期間發(fā)生損失的情況下,由于解碼器可以系統(tǒng)地檢索到數(shù)量nmax,因此即使根據(jù)包丟失、在解碼器處可能無法獲得運動矢量預(yù)測結(jié)果的完整集合l2,也可以系統(tǒng)地對接收到的位流進(jìn)行解析以提取指定所選擇的運動矢量預(yù)測結(jié)果的索引i。
上述實施例基于輸入圖像的塊分割,但更通常地,可以考慮要編碼或解碼的任何類型的圖像部分(特別是矩形部分或者更通常為幾何部分)。
可以設(shè)想例如以下等的其它可選實施例:以包括比被確定為nmax的運動矢量預(yù)測結(jié)果的目標(biāo)數(shù)量大的n個矢量的運動矢量預(yù)測結(jié)果候選的大集合開始,并且應(yīng)用聚類算法以縮減矢量的集合。例如,可以應(yīng)用
更通常地,本領(lǐng)域技術(shù)人員可以容易地想到的上述實施例的任何變形或改進(jìn)均應(yīng)被視為落在本發(fā)明的范圍內(nèi)。
本申請要求2011年1月12日提交的英國專利申請1100462.9的優(yōu)先權(quán),在此通過引用包含其全部內(nèi)容。