專利名稱:編碼和解碼圖像的制作方法
技術(shù)領(lǐng)域:
本發(fā)明針對于一種用于編碼和解碼圖像的方法。
背景技術(shù):
視頻編解碼是設(shè)計為編碼(即,壓縮)和解碼(即,解壓縮)視頻數(shù)據(jù)流的壓縮算法,用來減小流的大小,從而加快傳送速度和減小存儲空間。盡管有損失,現(xiàn)在的視頻編解碼試圖在壓縮視頻流的二進制數(shù)據(jù)的同時保持視頻質(zhì)量。
視頻流典型地由視頻幀的序列組成。視頻編碼器通常將每個幀分割成若干宏塊,每個宏塊為一組16×16的像素。視頻編碼器典型地使用幀內(nèi)編碼或幀間編碼來編碼視頻幀或視頻幀中的宏塊。幀內(nèi)編碼的幀或宏塊獨立于其它幀或獨立于在其它幀中的宏塊來編碼。
幀間編碼的幀或宏塊通過參考一個或若干其它幀或其它幀中的宏塊來編碼。由于編碼不得不將特定幀的宏塊或宏塊內(nèi)的分區(qū)與另一參考幀的宏塊或宏塊內(nèi)的分區(qū)比較,因此典型地塊間編碼是耗時的。由此,本領(lǐng)域需要更有效的塊間編碼方法。理想地,該編碼方法可以加速編碼和解碼操作。
發(fā)明內(nèi)容
一些實施方式提供了一種通過參考視頻序列中的第二圖像對在第一圖像中的第一組像素編碼的方法。在第二圖像的第一搜索窗口中,該方法搜索以識別與第一圖像中的第一組像素最匹配的第二圖像中的第一特定部分。在第二圖像中第一搜索窗口中,該方法識別相應(yīng)于第一特定部分的第一位置。在第二圖像中的第二搜索窗口中,該方法接下來搜索以識別與在第一圖像中的第一組像素最匹配的第二圖像中的第二特定部分,其中第二搜索窗口被定義在第一位置周圍。
一些實施方式提供了一種用于在視頻序列中塊間編碼圖像的方法。視頻序列中的每個圖像具有若干整數(shù)像素位置,每個整數(shù)像素位置具有至少一個圖像值(例如,亮度值)。該方法通過參考第二圖像選擇用于編碼的第一圖像。該方法接下來識別與第一圖像中一組像素匹配的第二圖像中的一組非整數(shù)像素位置。該標識需要將第二圖像中的若干整數(shù)像素位置的圖像值內(nèi)插到與第二圖像中非整數(shù)像素位置相關(guān)聯(lián)的圖像值中。該方法存儲非整數(shù)像素位置的內(nèi)插的圖像值,用于在此后的通過參考第二圖像的第三圖像的編碼期間使用。
一些實施方式提供了一種用于在視頻序列中塊間解碼圖像的方法。視頻序列中每個圖像具有若干整數(shù)像素位置,每個整數(shù)像素位置具有至少一個圖像值(例如,亮度值)。該方法通過參考第二圖像選擇用于解碼的第一圖像。該方法接下來在第二圖像中識別與第一圖像中的一組像素對應(yīng)的一組非整數(shù)像素位置。該方法接下來將第二圖像中的若干整數(shù)像素位置的圖像值內(nèi)插到與第二圖像中的非整數(shù)像素位置相關(guān)聯(lián)的圖像值中。該方法存儲內(nèi)插的非整數(shù)像素位置的圖像值,用于在此后通過參考第二圖像在第三圖像的解碼期間使用。
一些實施方式提供了一種用于通過參考在視頻圖像的序列中的第二圖像來塊間處理第一圖像中的第一部分的方法。該方法將第二圖像分割成一組拼接片(tilt)并且將拼接片存儲在第一非高速緩沖存儲器中。只要子組拼接片需要將第一圖像的第一部分與第二圖像的一部分相匹配時,該方法就從第一非高速緩沖存儲器中檢索該子組拼接片,并將檢索到的子組拼接片存儲在第二高速緩沖存儲器中,以在第一部分和作為檢索到的子組拼接片的一部分的第二圖像的部分之間進行快速比較。該檢索到的子組拼接片比整組拼接片小。
在一些實施方式中,當該方法識別第二圖像中的位置來搜索以識別與第一部分匹配的第二圖像中的部分時,該方法確定其需要檢索子組拼接片并將其存儲在第二高速緩沖存儲器中,其中,該識別的位置對應(yīng)于子組拼接片。在一些實施方式中,該高速緩沖存儲器為計算機的隨機存取存儲器,而非高速緩沖存儲器為計算機的非易失性存儲設(shè)備。同時,在一些實施方式中,塊間處理方法為塊間編碼方法,而在其它實施方式中,塊間處理方法為塊間解碼方法。此外,一些實施方式中的拼接片組包括至少兩個水平相鄰的拼接片和至少兩個垂直相鄰的拼接片。
一些實施方式提供了一種塊間編碼方法,其通過從一組搜索方式中選擇第一搜索方式,對第一視頻圖像中的第一組像素進行編碼,每個搜索方式定義用于檢查可能與第一組像素匹配的第二圖像的部分的方式。該編碼方法基于一組標準,在該組搜索方式中自適應(yīng)地選擇第一搜索方式。在一些實施方式中,該組標準包括視頻圖像的媒體類型。
本發(fā)明的新的特征在所附的權(quán)利要求中闡明。然而,為了說明,在下圖中闡明了本發(fā)明的一些實施方式。
圖1示出了概念性地說明利用各種新穎的裁減技術(shù)來簡化其編碼處理的編碼器的流程的處理。
圖2說明了執(zhí)行兩級運動估計操作來識別指定在一個或兩個參考幀和當前幀之間的宏塊的運動的運動向量的處理。
圖3說明了一些實施方式如何定位與在當前幀中宏塊的位置相對應(yīng)的參考幀的位置周圍的第一搜索窗口。
圖4說明了基于與當前幀宏塊關(guān)聯(lián)的預(yù)測的運動向量標識第一搜索窗口位置的一種方法。
圖5說明了在第一搜索窗口中多個起始點的例子。
圖6說明了第二級搜索窗口的例子。
圖7說明了執(zhí)行精細的運動估計處理,該處理在參考幀中識別一組像素的分區(qū),其與當前幀宏塊的一組像素的分區(qū)最匹配。
圖8在概念上說明了具有若干位置點的搜索窗口。
圖9在概念上說明了在多像素級上為參考幀宏塊搜索像素分區(qū)的處理。
圖10在概念上說明了若干可能的分區(qū)(即,塊)的尺寸。
圖11在概念上說明了用于不同像素級的若干搜索位置。
圖12在概念上說明了與參考幀中子像素位置對準的當前幀宏塊。
圖13在概念上說明了包括指向同一幀的運動向量的若干幀。
圖14在概念上說明了與一組像素(例如,整數(shù)、非整數(shù))相關(guān)的數(shù)據(jù)如何被存儲在高速緩存中。
圖15示出了在搜索窗口中的低密度搜索方式。
圖16示出了在搜索窗口中的高密度搜索方式。
圖17示出了偏向于垂直方向上的搜索方式的例子。
圖18示出了偏向于水平方向上的搜索方式的例子。
圖19示出了選擇地檢查運動估計方案的子組,以便標識計算RD成本需要的方案的處理。
圖20示出了實現(xiàn)本發(fā)明的一些實施方式的計算機系統(tǒng)。
具體實施例方式
在本發(fā)明的下述詳細描述中,提出并描述了本發(fā)明的各種細節(jié)、示例及實施方式。但本領(lǐng)域技術(shù)人員可以清楚并明白本發(fā)明并不局限于提出的實施方式,并且本發(fā)明可以不需要一些特定的細節(jié)和討論的示例而實現(xiàn)。
I.綜述本發(fā)明的一些實施方式提供新的塊間編碼和解碼處理。這些新的處理包括(1)多級運動估計處理,(2)用于緩存參考幀的非整數(shù)像素位置值的插值緩存處理,(3)用于緩存參考幀的拼接片的子組的拼接片緩存處理,和(4)為用于在參考幀中的搜索來自適應(yīng)地選擇搜索方式的運動估計處理。
A.多級運動估計一些實施方式的多級運動估計處理通過參考在視頻序列里的第二圖像來編碼第一圖像中的第一組像素。在第二圖像中的第一搜索窗口中,運動估計處理搜索以在第二圖像中識別與第一圖像中第一組像素最匹配的第一特定部分。在第二圖像中的第一搜索窗口中,運動估計處理識別對應(yīng)于第一特定部分的第一位置。在第二圖像中的第二搜索窗口中,運動估計處理接著搜索以在第二圖像中識別與在第一圖像中第一組像素最匹配的第二特定部分,其中第二搜索窗口被定義在第一位置周圍。在一些實施方式中,第一搜索為粗略的運動估計處理,而第二搜索為精細的運動估計處理。此外,在一些實施方式中,精細的運動估計處理用于可變塊尺寸的搜索。
B.插值緩存本發(fā)明的一些實施方式的編碼器在視頻序列中塊間編碼圖像。視頻序列中的每個圖像具有若干整數(shù)像素位置,每個整數(shù)像素位置具有至少一個圖像值(例如,亮度值)。該編碼器通過參考第二圖像選擇用于編碼的第一圖像。該編碼器然后識別與在第一圖像中的一組像素匹配的第二圖像中的一組非整數(shù)像素位置。該識別需要將來自第二圖像中若干整數(shù)像素的圖像值內(nèi)插到與第二圖像的非整數(shù)像素位置相關(guān)的圖像值中。該編碼器將非整數(shù)像素位置的內(nèi)插的圖像值存儲至插值高速緩存中,用于在稍后通過參考第二圖像的第三圖像編碼期間使用。
本發(fā)明一些實施方式的解碼器使用類似的插值高速緩存。具體地,該解碼器選擇用于通過參考第二圖像解碼的第一圖像。該解碼器然后在第二圖像中識別一組對應(yīng)于第一圖像中一組像素的非整數(shù)像素位置。該解碼器然后將來自第二圖像的一些整數(shù)像素位置的圖像值內(nèi)插到與第二圖像的非整數(shù)像素位置相關(guān)的圖像值中。該解碼器存儲非整數(shù)像素位置的內(nèi)插的圖像值,用于在稍后的通過參考第二圖像的第三圖像解碼期間使用。
C.拼接片緩存處理一些實施方式在其塊間處理中使用拼接片緩存處理,該處理通過參考視頻圖像的序列中的第二圖像在第一圖像中處理第一部分。該緩存處理將第二圖像分割成一組拼接片,并將這些拼接片存儲至第一非高速緩沖存儲器。只要當需要一子組拼接片以將第一圖像的第一部分與第二圖像中的一部分匹配時,該緩存處理從第一非高速緩沖存儲器中檢索拼接片子組,并將檢索到的拼接片的子組存儲至第二高速緩沖存儲器,用于在第一位置和作為檢索到的拼接片子組的部分的第二圖像的部分之間進行快速比較。該檢索到的拼接片的子組比整組拼接片小。
在一些實施方式中,當該緩存處理標識第二圖像中的位置來搜索以識別與第一部分匹配的第二圖像中的一部分時,該緩存處理確定其需要一子組拼接片被檢索并存儲在第二高速緩沖存儲器中,其中該識別的位置對應(yīng)于拼接片的子組。在一些實施方式中,高速緩沖存儲器為計算機的隨機存取存儲器,而非高速緩沖存儲器為計算機的非易失性存儲設(shè)備。同樣,在一些實施方式中,塊間處理為塊間編碼處理,而在另一些實施方式中,塊間處理為塊間解碼處理。此外,在一些實施方式中,該組拼接片包括至少兩個水平地相鄰的拼接片和至少兩個垂直地相鄰的拼接片。
D.自適應(yīng)搜索方式本發(fā)明的一些實施方式的運動估計處理通過從一組搜索方式中選擇第一搜索方式來對第一視頻圖像中的第一組像素編碼,該一組搜索方式中的每一個定義了用于檢查可能與第一組像素匹配的部分第二圖像的方式。該運動估計處理在該組搜索方式中,基于一組標準,自適應(yīng)地選擇第一搜索方式。在一些實施方式中的該組標準包括視頻圖像的媒體類型。
在描述上述新的塊間編碼和解碼處理之前,下面首先描述包括本發(fā)明的塊間編碼處理的編碼處理的總體流程。
II.總體流程圖1示出了處理100,該處理100在概念上說明了使用各種新的裁減技術(shù)來簡化其編碼處理的編碼器的流程。一些實施方式中沒有使用這一部分描述的全部裁減技術(shù)。同樣,一些實施方式結(jié)合將在下面第II部分中描述的多級運動估計操作來使用這些裁減技術(shù)。
如圖1中所示,該處理100通過確定(在步驟105)是否放棄將宏塊編碼為幀間編碼塊而開始。在一些實施方式中,在特定情況下,該處理放棄塊間編碼。這些情況包括在請求每一個幀編碼為幀內(nèi)編碼塊來的調(diào)試模式中的解碼器的布置、請求將若干宏塊編碼為幀內(nèi)編碼塊的塊內(nèi)刷新的指定、最終選擇塊內(nèi)編碼的實現(xiàn)、太少的宏塊被塊內(nèi)編碼的實現(xiàn)或一些其它請求將宏塊編碼為幀內(nèi)編碼塊的指定。
當處理100確定不需要將宏塊編碼為幀內(nèi)編碼塊時,則它轉(zhuǎn)移至110。在110,該處理將宏塊編碼為幀內(nèi)編碼塊。各種新的用于執(zhí)行塊內(nèi)編碼的方案在題為“Selecting Encoding Types and Predictive Modes for EncodingVideo Data”(“選擇編碼類型和預(yù)測模式用于編碼視頻數(shù)據(jù)”),代理卷號為APLE.P0078(“塊內(nèi)編碼申請”)的美國專利申請中進行描述。這里引入該美國專利申請作為參考。
一個處理將宏塊編碼為幀內(nèi)編碼塊(在步驟110),該處理轉(zhuǎn)移至步驟150來指定編碼方案。在這個實例中,該處理指定其在步驟110的內(nèi)部編碼的結(jié)果,因為這是處理步驟110在該流程的這一路徑中經(jīng)歷的唯一編碼。在步驟150后,處理100結(jié)束。
可選地,當處理100確定它不應(yīng)該放棄(即,裁減)塊間編碼(在步驟105)時,該處理執(zhí)行該宏塊的跳過模式編碼(在步驟115),并且,如果需要,執(zhí)行該宏塊的直接模式編碼。在跳過模式編碼中,該宏塊作為跳過的宏塊被編碼;在解碼端,該宏塊將參考周圍的宏塊的運動向量和/或周圍的宏塊的分區(qū)來解碼。跳過模式編碼在同時提交的題為“視頻編碼中的裁減”(“Pruning During Video Ecoding”),代理卷號為APLE.P0073(“裁減申請”)的美國專利申請中進一步描述。該美國專利申請在此引入作為參考。直接模式編碼類似于跳過模式編碼,只是在直接模式編碼中,宏塊的一些紋理數(shù)據(jù)被量化并在編碼的位流中發(fā)送。在一些實施方式中,進行直接模式編碼以用于宏塊的B-模式編碼。一些實施方式也可以在P-模式編碼期間執(zhí)行直接模式編碼。
在步驟115后,處理100確定(在步驟120)跳過模式編碼是否在步驟115導致最好的編碼方案。這樣將明確地作為沒有在步驟115執(zhí)行直接模式編碼時的情況。相反,當直接模式編碼在步驟115被執(zhí)行并且該編碼得到比跳過模式編碼更好的結(jié)果時,則該處理轉(zhuǎn)移至步驟135來執(zhí)行下面描述的塊間編碼。
然而,當該處理確定(在步驟120)在步驟115跳過模式編碼導致最好的結(jié)果時,該處理確定(在步驟125)跳過模式編碼是否足夠好而終止編碼。進行這種確定的一個方法已經(jīng)在上述引入的裁減申請中描述。
如果處理確定(在步驟125)跳過模式編碼足夠好,該處理100轉(zhuǎn)移至步驟130,在步驟130中確定該跳過模式編碼方案是否應(yīng)被放棄。一些實施方式基于編碼成本,稱為失真率成本(RD成本)判斷方案。如在第II部分中進一步描述的,編碼方案的RD成本經(jīng)常說明在編碼宏塊中的失真并計算為該編碼方案生成的實際位的數(shù)量。跳過模式方案有時具有巨大的RD成本,但還是很好的方案。這是由于這種方法具有非常小的速率成本(rate cost),這種速率成本有時通過足夠的大小來使總RD成本畸變,使不好的方法看似為最好的方法。
由此,即使在步驟125選擇跳過模式編碼方案后,該處理100確定(在步驟125)是否應(yīng)當移除跳過模式方案。在一些實施方式中,做出該決定的標準為當前宏塊的跳過模式編碼的失真是否大于當前宏塊的相鄰宏塊的最大失真的二倍。
如果該處理確定(在步驟130)跳過模式方案不應(yīng)當被移除,它轉(zhuǎn)移至指定編碼方案。在這個示例中,該處理指定跳過模式編碼的結(jié)果。在步驟150后,該處理100結(jié)束。另一方面,當該處理100確定(在步驟130)跳過模式編碼方案應(yīng)當被移除時,它轉(zhuǎn)移至步驟135。當該處理確定(在步驟125)跳過模式方案用來終止該編碼不是足夠好時,該處理也轉(zhuǎn)移至步驟135。
在步驟135,該處理檢查各種塊間編碼。在一些實施方式中,處理100可能研究各種宏塊和子宏塊編碼(例如,16×16、8×16、16×8、8×8、8×4、4×8、和4×4B-模式和P-模式編碼),這在下面第II部分中將進一步描述。然而,如上結(jié)合的裁減申請所述,一些實施方式通過裁減(即,放棄)一些宏塊或子宏塊編碼模式的研究和/或分析,加快了塊間編碼處理。
在步驟135執(zhí)行了塊間編碼后,該處理確定(在步驟140)宏塊的塊間編碼是否足夠好以放棄宏塊的塊內(nèi)編碼。不同的實施方式做出不同的決定。這些方法中的一些將在下面的第II部分中進一步描述。
如果該處理100確定(在步驟140)應(yīng)當執(zhí)行塊內(nèi)編碼,則它轉(zhuǎn)移至步驟145,在這時它執(zhí)行該編碼。如上所述,該處理的塊內(nèi)編碼的若干新的特征在上面引入的塊內(nèi)編碼申請中描述。在步驟145后,該處理轉(zhuǎn)移至步驟150。當該處理確定(在步驟140)應(yīng)當放棄塊內(nèi)編碼時,該處理也轉(zhuǎn)移至步驟150。
如上所述,該處理為宏塊指定編碼方案(在步驟150)。當該處理100在其先于步驟150的操作期間識別了多個編碼方案時,該處理選擇這些方案中的一個(在步驟150)。在一些實施方式中,該處理100選擇具有最佳RD成本的方案。下面提供了一些RD成本的例子。在步驟150后,該處理結(jié)束。
III.塊間編碼A.多級運動估計如上所述,一些實施方式結(jié)合如圖1中示出的處理100使用多級運動估計操作。在一些實施方式中,當宏塊為塊間編碼時,執(zhí)行多級運動估計操作。如下面將描述的,一些多級運動估計操作包括粗略的和精確的運動估計。在一些實施方式中,處理100在初始的粗略的運動估計操作后被執(zhí)行。然而,一個本領(lǐng)域技術(shù)人員將認識到該初始的粗略的運動估計操作也可以在處理100期間被執(zhí)行(例如,在步驟105和115之間,在步驟140)。
1、整體流程圖2說明了執(zhí)行多級運動估計操作來識別指定在一個或兩個參考幀和當前幀之間的宏塊的運動的運動向量的處理。為了不模糊本發(fā)明的多級運動估計操作的討論,下面按照在單個參考幀中找到當前幀宏塊的一個位置來描述處理200。然而,本領(lǐng)域技術(shù)人員將認識到該處理經(jīng)常研究兩個參考幀來確定宏塊的最好的運動估計編碼。
該處理的第一級為粗略的搜索(例如,粗略運動估計),其在參考幀中識別當前幀的宏塊的位置的粗略的近似值,而第二級為更精確的搜索(例如,精確運動估計),其在參考幀中識別當前幀的宏塊的位置的更精確的近似值。
該處理最初執(zhí)行宏塊的參考幀的第一搜索(在步驟210),以搜索與當前幀宏塊最匹配的宏塊。該第一搜索在參考幀的第一搜索窗口中執(zhí)行。不同的實施方式確定不同的第一搜索窗口。例如,如圖3所示,一些實施方式定位與當前幀的宏塊330的位置320對應(yīng)的參考幀的位置310的周圍為第一搜索窗口300。
其它實施方式在參考幀中當前幀宏塊的預(yù)測位置定位第一搜索窗口。圖4示出了基于與當前幀宏塊關(guān)聯(lián)的預(yù)測運動向量識別第一搜索窗口位置的一種方法。圖4示出了在當前幀400中的當前幀宏塊410。該圖同時示出了與當前幀宏塊410關(guān)聯(lián)的預(yù)測運動向量420。該預(yù)測運動向量420可以基于在當前幀中臨近當前幀宏塊410的宏塊的運動向量被計算出來。如圖4所示,該預(yù)測運動向量420指向?qū)?yīng)于參考幀430的位置440的當前幀400中的位置點460。由此,進一步如圖4所示,一些實施方式在參考幀430中關(guān)于位置點440定位第一搜索窗口450。
處理200在第一搜索窗口中執(zhí)行粗略搜索(在步驟210),為了試圖識別指定當前幀宏塊從在參考幀中出現(xiàn)后運動了多少的運動向量。該處理可以通過在第一搜索窗口中搜索與當前幀宏塊最接近地匹配的參考幀宏塊而確定該運動向量。該處理不需要查看搜索窗口中的全部參考幀宏塊,而是僅需足夠確定落在某一預(yù)定的參數(shù)內(nèi)的宏塊。
一旦該處理識別了足夠的參考幀宏塊,它識別在粗略搜索期間遇到的最好的參考幀宏塊(在步驟210)。然后它使用所識別的最好的參考幀宏塊,來指定指示參考幀中當前幀宏塊的位置的粗略近似值的運動向量(在步驟210)。
在步驟210后,該處理確定是否在第一搜索窗口執(zhí)行了足夠的粗略搜索的反復(在步驟220)。一些實施方式在該窗口中僅執(zhí)行一次搜索。在這樣的實施方式中,該處理200不需要在步驟220做出確定,而是直接從步驟210進入步驟230??蛇x地,其它實施方式執(zhí)行開始于該窗口中的多個不同點的多個搜索。
當處理200確定應(yīng)該在第一搜索窗口中執(zhí)行另一個粗略搜索時(在步驟220),該處理循環(huán)回步驟210來執(zhí)行另一個搜索(在該窗口中),該搜索開始于與其它在先的在步驟210執(zhí)行的對宏塊的粗略搜索不同的位置。
圖5示出了在第一搜索窗口中多個起始點的例子。特別地,該圖示出了在第一搜索窗口500中的四個起始點510-540。每個起始點510-540導致該搜索標識出不同參考幀宏塊。在一些實施方式中,不同的起始點可以識別同一參考幀宏塊。
一旦該處理確定已經(jīng)在第一搜索窗口中執(zhí)行了足夠的粗略搜索的反復(在220),它識別最可能的粗略級方案(在230),其通過步驟210通過其一個或多個反復來識別。如圖6所示,這個方案識別運動向量620,該運動向量標識與在參考幀中的位置630對應(yīng)的當前幀中的對宏塊410的位置610。
接下來,該處理為與當前幀宏塊匹配的參考幀宏塊執(zhí)行第二精細運動估計搜索(在步驟240)。該第二搜索在參考幀的第二搜索窗口中執(zhí)行。在一些實施方式中,該第二搜索窗口小于在步驟210的粗略第一級搜索期間使用的第一搜索窗口。同樣,在一些實施方式中,該第二搜索窗口被定義為圍繞由第一級搜索產(chǎn)生的運動向量(即,在步驟230中選擇的運動向量)所標識的參考幀中的位置。圖6示出了這種第二級搜索窗口的例子。具體地,該圖示出了關(guān)于在第一搜索中指定的位置點630的第二搜索窗口640。
在一些實施方式中,在第二搜索級(在步驟240)期間使用的搜索處理比在第一搜索級期間使用的搜索處理更全面。例如,一些實施方式在第二級期間使用利用失真率優(yōu)化的徹底的子宏塊搜索,而在第一搜索級期間使用更簡單的三步搜索。
在步驟240第二搜索級結(jié)束時,該處理200提供指定當前幀宏塊自其出現(xiàn)在參考幀中運動了多少的運動向量。在步驟240后,該處理結(jié)束。
2.精細的運動估計圖7示出了執(zhí)行用來標識參考幀中與一組當前幀宏塊像素的分區(qū)最匹配的一組像素的分區(qū)的精確運動估計處理700。在一些實施方式中,該處理700在處理200的第二搜索(在步驟240)期間實現(xiàn)。
如該圖所示,處理700在搜索窗口中選擇(在步驟705)位置點。在一些實施方式中,該搜索窗口最初被定義為在處理200的步驟230所標識的參考幀宏塊周圍。
圖8在概念上示出了具有若干位置點的搜索窗口800。如該圖所示,該搜索窗口800包括九個位置點805-845。在一些實施方式中,這些位置點805-845可以隨機地生成。在其它實施方式中,這些位置點805-845預(yù)先地由一組標準確定。這些位置點805-845中的每一個在整數(shù)像素級對應(yīng)于參考幀宏塊。而且,圖8示出了在非整數(shù)像素級的位置點(即,子像素級),例如在二分之一或四分之一像素級的位置點。這些子像素級位置點的使用將進一步通過參考圖9描述。
接下來,對每個在當前幀宏塊的像素的可能的分區(qū),處理700檢查(在步驟710)在選擇的位置點的像素的特定分區(qū)與當前幀宏塊的像素的分區(qū)有多精密的匹配。圖10在概念上示出了一些可能的分區(qū)(即,塊)尺寸。具體地,該圖示出了九個可能的塊尺寸,其中每個塊尺寸代表像素的特定塊。例如,塊尺寸1代表包括16×16像素陣列的像素塊。塊尺寸2代表包括16×8像素陣列的像素塊。盡管該圖僅示出了九個塊尺寸,處理700可以搜索具有其它像素配置的塊尺寸。一些實施方式搜索全部這些塊尺寸,而其它實施方式僅搜索這些塊尺寸中的一些。
一旦檢查已經(jīng)被執(zhí)行(在步驟710),該處理700為每個塊尺寸更新(在步驟715)參考幀宏塊的最好位置。處理700確定(在步驟720)是否還有另一個位置點。如果是,處理700進行至705來選擇另一個位置點并執(zhí)行步驟710-720的另一重復。
一旦處理700確定(在步驟720)沒有更多的位置點,處理700確定(在步驟725)對特定塊尺寸的搜索結(jié)果是否足夠好。在一些實施方式中,如果具有更新位置的塊尺寸滿足一特定標準(例如,SAD低于特定閾值),則搜索結(jié)果足夠好。在一些實施方式中,如果與特定塊尺寸關(guān)聯(lián)的成本和與具有最低成本塊尺寸關(guān)聯(lián)的成本之間的差異比閾值大,則搜索結(jié)果不夠好。在一些實施方式中,該閾值在搜索期間動態(tài)地定義。如果處理700確定(在步驟725)對特定塊尺寸的搜索結(jié)果不夠好,處理700在任何隨后的搜索中排除(在步驟730)這些塊尺寸。
在排除(在步驟730)這些塊尺寸或確定(在步驟725)所有搜索結(jié)果都足夠好后,處理700執(zhí)行(在步驟735)另一個搜索。在該搜索期間,對每個塊尺寸,處理700搜索與當前幀宏塊的分區(qū)最匹配的參考幀中的像素的分區(qū)。該搜索包括在子像素級搜索像素的分區(qū)。該子像素級搜索將在下面詳細描述。在搜索后(在步驟735),處理700結(jié)束。
3.在子像素級的搜索圖9在概念上示出了用于在多像素級為參考幀宏塊搜索像素的分區(qū)的處理900。在一些實施方式中,處理900在處理700的搜索步驟735期間執(zhí)行。如該圖所示,處理900為當前幀宏塊選擇(在步驟905)像素的分區(qū)(即,選擇塊尺寸)。處理900通過步驟905重復幾次。在其通過步驟905重復期間,一些實施方式中的處理順序地基于由圖10示出它們的的數(shù)字名稱,重復地選擇沒有在步驟730丟棄的分區(qū)(即,塊)。例如,在步驟730沒有分區(qū)被丟棄時,處理900順序地選擇塊1至9。
步驟905后,處理900定義(在步驟910)搜索的初始像素分辨率(例如,像素級)(即,定義搜索粒度)。例如,處理900可以初始地定義像素分辨率為在整數(shù)像素的每隔一個位置(即,整數(shù)像素級分辨率的一半分辨率)。接下來,處理900定義(在步驟915)搜索位置為對當前幀宏塊的所選擇的分區(qū)在當前標識為最好的位置。該標識的最好的位置可以在圖7的處理700的像素級搜索期間標識,或如下進一步描述的,可以在圖9的處理900的任意像素分辨率搜索期間標識。
對每個沒有在步驟730被丟棄的特定當前幀分區(qū),處理900(在步驟920)(1)檢查圍繞在所定義的像素級分辨率(即,搜索粒度)在步驟915標識的搜索位置的參考幀分區(qū),及(2)標識與當前幀分區(qū)最匹配的特定檢查的參考幀分區(qū)。
接下來,對每個沒有在步驟730被丟棄的特定的當前幀分區(qū),處理900(在步驟925)確定在步驟920為特定當前幀分區(qū)標識的特定參考幀分區(qū)是否比先前為特定當前幀分區(qū)標識的最匹配的分區(qū)更匹配。如果是,該處理定義(在步驟925)在步驟920標識的特定參考幀分區(qū)的位置為特定當前幀分區(qū)的最好位置。
接下來,處理900確定(在步驟930)是否已經(jīng)為選擇的分區(qū)檢查過具有最大像素級分辨率的參考幀。如果沒有,處理900增加(在步驟935)像素級分辨率至下一個像素級分辨率(例如,一半,四分之一)并轉(zhuǎn)移回上面所述的步驟915。這樣,在隨后的步驟915-935的重復中,處理900檢查在子像素級(例如,一半,四分之一)的當前幀宏塊的分區(qū)。
當處理900確定(在步驟930)已經(jīng)為選擇的分區(qū)檢查在最大像素級分辨率的參考幀時,處理900確定(在步驟940)是否其已經(jīng)檢查了所有沒有在步驟730被丟棄的當前幀分區(qū)。如果沒有,處理900返回至905來選擇下一個當前幀分區(qū)并接下來對該分區(qū)重復910-935。一旦確定(在步驟940)已經(jīng)檢查了所有沒有在步驟730被丟棄的像素的分區(qū),處理900結(jié)束。
圖11在概念上示出了一些對不同像素級的搜索位置。具體地,該圖示出了以四個整數(shù)像素級位置825-830和840-845為邊界的搜索區(qū)域860。在一些實施方式中,該限定的搜索區(qū)域860位于搜索窗口800內(nèi),如圖8所示。
在限定的搜索區(qū)域860中,有五個半像素級位置。進一步地,在該限定的搜索區(qū)域860中,有十六個四分之一像素級位置。不同的實施方式可以指定不同的界定的搜索區(qū)域,其包括更多或更少的整數(shù)和非整數(shù)的位置。當處理900定義(在步驟915)搜索位置為位置850時,一些實施方式可以在步驟920的搜索期間在限定的區(qū)域860內(nèi)或周圍搜索。
在一些實施方式中,一些上述步驟被重復執(zhí)行。如上所述,一些實施方式對每個像素級執(zhí)行單獨的搜索。然而,本領(lǐng)域技術(shù)人員將認識到一些實施方式可以對每個搜索位置同時搜索不同像素級的若干塊尺寸(即,對每個位置,為所有塊尺寸在整數(shù)、一半和四分之一像素級同時搜索)。盡管子像素級被描述為一半或四分之一像素級,本領(lǐng)域技術(shù)人員將認識到子像素級可以為任意非整數(shù)像素級。
此外,處理700描述了確定(在步驟725)對特定塊尺寸的搜索結(jié)果是否足夠好。在一些實施方式中,該確定725可以在處理900期間作出。進一步,本領(lǐng)域技術(shù)人員將認識到該確定725可以在處理700和900的不同步驟期間作出。例如,該確定處理725可以在找到每個塊尺寸的最好位置后作出。
此外,一些實施方式可以在處理700期間在步驟735不執(zhí)行搜索。此外,上述處理700和900描述了對參考幀宏塊執(zhí)行的搜索,然而,本領(lǐng)域技術(shù)人員將認識到處理700和900可以被用于搜索其它類型的像素陣列(例如,16×8子宏塊)。
B.緩存插值圖12在概念地上示出了參考幀中的若干像素和子像素位置。這些子像素位置包括一半和四分之一像素位置。進一步如該圖所示,當前幀宏塊1200與四分之一子像素位置1205對準(即,當前幀宏塊的像素位置與參考幀的四分之一子像素位置排成行列)。
如上所述,在一些實施方式的運動估計操作期間,編碼器檢查與參考幀中的子像素位置對準的(即,不與像素位置對準的)宏塊或宏塊分區(qū)。從參考幀,一些實施方式的解碼器在一些情況下可能也必須在與子像素位置對準的(即,不與像素位置對準的)宏塊或宏塊分區(qū)中檢索。
與子像素位置對準的宏塊或宏塊分區(qū)的檢查和檢索要求編碼器或解碼器為在子像素位置的參考幀生成圖像值(例如,亮度值),其中該子像素位置對應(yīng)于在解碼操作期間在當前幀中的像素位置,并需要與在編碼操作期間當前幀中的像素位置比較。
在一些實施方式中,生成對應(yīng)于子像素位置的圖像值需要對圖像值內(nèi)插來自臨近像素位置的圖像值(即,從像素位置的圖像值派生的子像素位置的圖像值)。在許多示例中,為子像素位置內(nèi)插圖像值是困難的操作(例如,在計算上花費的操作),這需要超出兩個最近的像素位置的圖像值的簡單平均。由此,一些實施方式將子像素位置的內(nèi)插圖像值存儲在高速緩存中,當另一當前幀分區(qū)的隨后搜索試圖為該子像素位置檢查上述內(nèi)插的圖像值時可以被容易地檢索。一些實施方式將所有的內(nèi)插值存儲在高速緩存內(nèi),而其它實施方式僅將一些內(nèi)插值存儲在高速緩存內(nèi)。
在編碼和/或解碼操作期間,一組當前幀宏塊的許多運動向量將指向同一參考幀。例如,如圖13所示,幀1310具有通過參考幀1305和1325定義的運動向量。進一步,幀1315和1320具有通過參考幀1305定義的運動向量。由此,在一些示例中,參考幀可以被用來編碼或解碼不止一個其它幀。由此,為參考幀緩存所有或一些內(nèi)插的子像素值是有利的,因為它們可以被用于其它幀的編碼。
C.高速緩存拼接片圖14在概念上示出了在高速緩存中存儲參考幀的方法。在一些實施方式中,該方法與上述內(nèi)插操作結(jié)合實現(xiàn)。如該圖所示,參考幀1305被分割成一些拼接片1430。在一些實施方式中,幀1305被以這種方式分割來包括兩列或多列拼接片和兩行或多行拼接片。
圖14進一步示出了像素塊1450,該像素塊可以與或可以不與參考幀的像素位置對準。該像素塊1450代表在編碼操作期間(即,在運動估計期間)被檢查的或在解碼操作期間將被檢索的參考幀的一部分。
如圖14所示,拼接片1430a-1430d的部分需要檢查或檢索像素塊1450。由此,為了便于在編碼或解碼操作期間像素塊(例如,像素塊1450)的檢查,一些實施方式根據(jù)它的拼接片高速緩存參考幀1305。換句話說,代替高速緩存跨越參考幀1305的像素的行(例如,包括像素塊1450的像素行1401-1425),一些實施方式僅高速緩存參考幀中的拼接片。
當特定像素塊的分析需要一組拼接片時,這些實施方式的編碼器或解碼器確定是否所有的特定像素塊重疊的拼接片都在高速緩存中。如果是,則編碼器或解碼器使用高速緩存的拼接片來處理特定的像素塊。如果不是,則編碼器或解碼器(1)從非高速緩沖存儲器中檢索期望的拼接片(即,與特定像素塊重疊但當前不在高速緩存中的拼接片),(2)將這些拼接片存儲在高速緩存中,并且然后(3)使用這些拼接片來處理特定的像素塊。例如,當試圖處理像素塊1450時,編碼器或解碼器確定該塊重疊拼接片1430a-1430d。由此,編碼器或解碼器將這些拼接片1430a-1430d存入高速緩存中(如果它們還沒有存在那里),然后使用這些拼接片處理塊1450。
在一些實施方式中,高速緩沖存儲器為用于執(zhí)行編碼或解碼操作的計算機系統(tǒng)的處理器的高速緩存。在其它實施方式中,高速緩沖存儲器為用于執(zhí)行編碼或解碼操作的計算機系統(tǒng)的非易失性存儲器(例如,隨機存取存儲器)的專用部分。同樣,盡管通過圖14示出了用于高速緩存的方形的拼接片,但一些實施方式中可以為其拼接片使用其它形狀,例如矩形。
D.用于運動估計的自適應(yīng)搜索方式一些實施方式使用不同的搜索標準來在上述多級運動估計操作期間執(zhí)行搜索。一些實施方式在執(zhí)行搜索時使用固定的搜索方式。其它實施方式可以使用不同的搜索方式。例如,一些實施方式基于特定標準自適應(yīng)地選擇搜索方式。
一個例子是在低密度和高密度搜索方式間選擇。圖15示出了在搜索窗口1500中的低密度搜索方式。該圖示出了按照黑圓圈的搜索方式,黑圓圈表示該方式為搜索指定的位置。如圖15所示,該搜索方式在四十九個可以被檢查的潛在的宏塊位置(由黑的和白的圓圈標識)中僅指定十六個位置用于搜索。圖16示出了在搜索窗口1500中更高密度的搜索方式。在該圖中的搜索方式在四十九個可以被檢查的潛在的宏塊位置(由黑的和白的圓圈標識)中指定二十五個位置用于搜索。
一些實施方式可以基于期望的編碼結(jié)果在圖15和16中示出的搜索方式間自適應(yīng)地選擇。例如,一些實施方式可以使用圖16中示出的更高密度方式進行更高分辨率編碼(例如,HD電視編碼),而其它實施方式可以使用圖15示出的更低密度方式用于通過網(wǎng)絡(luò)傳送流數(shù)據(jù),實時視頻。
可選地,一些實施方式使用強調(diào)垂直搜索運動的搜索方式,而另一些實施方式使用強調(diào)水平搜索運動的搜索方式。圖17示出了在以預(yù)測宏塊位置為中心的搜索窗口中的搜索方式的例子。該搜索方式偏向垂直方向。假定可以研究有限數(shù)量的位置,圖17中示出的方式消耗了編碼器的有限搜索預(yù)算,來檢查關(guān)于在搜索窗口1500中心的預(yù)測宏塊位置的垂直列中的位置。
圖18示出了在以預(yù)測宏塊位置為中心的搜索窗口中的搜索方式的例子。該搜索方式偏向水平方向。假定可以研究有限數(shù)量的位置,圖18中示出的方式消耗編碼器的有限搜索預(yù)算,來檢查關(guān)于在搜索窗口1500中心的預(yù)測宏塊位置的水平行中的位置。
一些實施方式基于相鄰宏塊的向量在圖17和18中示出的兩種搜索方式間自適應(yīng)地選擇。如果大部分或全部向量指向特定的方向(例如,垂直或水平方向),那么這些實施方式選擇圖17或18中示出的方式。一些實施方式通過確定沿一個方向(例如,y軸)的運動向量的絕對值是否比沿其它方向(例如,x軸)的運動向量的絕對值大,來確定相鄰宏塊的運動向量是否指向特定方向。一些實施方式不僅考慮相鄰宏塊的運動向量的方向,還考慮這些向量的大小。一些實施方式還考慮在自適應(yīng)地選擇搜索方式中的一組圖像的運動域(motion field)(例如,這組圖像是否示出了在特定方向中的運動)。
E.RD成本計算如上所述,本發(fā)明的一些實施方式在運動估計操作期間為特定宏塊計算成本,例如失真率(“RD”)成本。在運動估計期間為所有可能的模式生成失真率成本在計算上是集中的。尤其是假定該成本經(jīng)常需要測量失真和計算將被生成的實際位。因此,一些實施方式不為所有可能的模式計算RD成本。作為代替,這些實施方式通過對運動估計方案排序并選擇前N個運動估計方案,然后為這些選擇的方案計算RD成本來削減可能模式的數(shù)量。
圖19示出了本發(fā)明一些實施方式的處理1900。該處理選擇性地檢查運動估計方案的子組以便標識計算RD成本需要的方法。在一些實施方式中,在該處理開始前,若干編碼方案已經(jīng)被計算。其它實施方式與編碼方案結(jié)合執(zhí)行該處理。
處理1900最初基于從最低至最高估計的誤差來排列(在步驟1910)編碼方案。在一些實施方式中,每個編碼方案不僅生成運動向量而且生成估計錯誤。不同的實施方式使用不同量度的計算來量化該錯誤。例如,一些實施方式使用平均絕對差(“MAD”)的量度計分,而其它的實施方式使用絕對差值和(“SAD”)的量度計分,這些都在上面結(jié)合的精簡申請中描述。然而其它實施方式使用兩種或更多的量度計分的組合。
接下來,該處理在排序表中選擇(在步驟1920)前N個編碼方案。在一些實施方式中,N的值為預(yù)定數(shù)字,而在其它實施方式中為動態(tài)生成的數(shù)字。接下來,該處理為選擇的前N個結(jié)果計算(在步驟1930)RD成本,選擇(在步驟1940)具有最低RD成本的編碼方案,并隨后終止。
一些實施方式將編碼方案的RD成本表示為RdCost=失真成本+(λ×NB),其中λ為權(quán)重因子,而NB為由于編碼生成的位數(shù)。該RdCost量化已經(jīng)被傳送的數(shù)據(jù)的數(shù)量和與該數(shù)據(jù)關(guān)聯(lián)的失真的量值。
代替計算簡單的RD成本,一些實施方式計算(在步驟2330)不僅將RD成本作為因子而且將生成編碼方案的給定模式的解碼復雜度作為因子的成本。該成本可以被表示為復雜RD=RdCost+α(cf),其中RdCost如上述指定等式計算,α為與解碼復雜度關(guān)聯(lián)的重要因子,并且cf為量化在數(shù)據(jù)上被執(zhí)行的解碼的數(shù)量的復雜度因子。
在步驟1930后,該處理選擇(在步驟1940)在步驟1930中計算出來的得到最低成本的運動估計方案,并且隨后結(jié)束。通過最初通過初始量度計分排序運動估計操作和僅對那些具有最低初始量度計分的編碼方案量化成本量度,處理1900保證以最快的可能方法找到可接受的結(jié)果。
IV.計算機系統(tǒng)圖20在概念上示出了本發(fā)明的一些實施方式被實現(xiàn)的計算機系統(tǒng)。計算機系統(tǒng)2000包括總線2005、處理器2010、系統(tǒng)存儲器2015、只讀存儲器2020、永久存儲設(shè)備2025、輸入設(shè)備2030和輸出設(shè)備2035。
總線2005總體地代表全部系統(tǒng)、外圍設(shè)備及提供計算機系統(tǒng)2000的內(nèi)部設(shè)備間通信的芯片組總線。例如,總線2005通信地將處理器2010和只讀存儲器2020、系統(tǒng)存儲器2015及永久存儲設(shè)備2025連接。
處理器2010為了執(zhí)行本發(fā)明的處理在這些多種存儲單元中檢索執(zhí)行的指令和處理的數(shù)據(jù)。只讀存儲器(ROM)2020存儲處理器2020和其它計算機系統(tǒng)模塊需要的靜態(tài)數(shù)據(jù)和指令。另一方面,永久存儲設(shè)備2025為讀寫存儲器設(shè)備。該設(shè)備為即使在計算機系統(tǒng)2000關(guān)閉時也存儲指令和數(shù)據(jù)的非易失性存儲器單元。本發(fā)明的一些實施方式使用海量存儲設(shè)備(例如,磁或光盤和其相應(yīng)的磁盤驅(qū)動器)作為永久存儲設(shè)備2025。其它實施方式使用可移除存儲設(shè)備(例如軟盤或zip盤及其相應(yīng)的磁盤驅(qū)動器)作為永久存儲設(shè)備。
類似永久存儲設(shè)備2025,系統(tǒng)存儲器2015為讀寫存儲器設(shè)備。然而,與存儲設(shè)備2025不同,該系統(tǒng)存儲器為易失性的讀寫存儲器,例如隨機存取存儲器。該系統(tǒng)存儲器存儲處理器在運行時需要的指令和數(shù)據(jù)。在一些實施方式中,本發(fā)明的處理被存儲在系統(tǒng)存儲器2015、永久存儲設(shè)備2025和/或只讀存儲器2020中。
總線2005也連接至輸入和輸出設(shè)備2030和2035。該輸入設(shè)備允許用戶傳遞信息和選擇命令至計算機系統(tǒng)。該輸入設(shè)備2030包括字母數(shù)字鍵盤和光標控制器。該輸出設(shè)備2035顯示由計算機系統(tǒng)生成的圖像。輸出設(shè)備包括打印機和顯示設(shè)備,例如陰極射線管(CRT)或液晶顯示器(LCD)。
最后,如圖20所示,總線2005也通過網(wǎng)絡(luò)適配器(未示出)將計算機2000連接至網(wǎng)絡(luò)2065。通過這種方式,計算機可以成為計算機網(wǎng)絡(luò)(例如局域網(wǎng)(“LAN”),廣域網(wǎng)(“WAN”),或企業(yè)內(nèi)部互聯(lián)網(wǎng))的一部分或多個網(wǎng)絡(luò)中的一個網(wǎng)絡(luò)(例如,因特網(wǎng))。計算機系統(tǒng)2000的任何或所有部分都可以結(jié)合本發(fā)明使用。然而,本領(lǐng)域技術(shù)人員可以認識到任何其它的系統(tǒng)配置也可以與本發(fā)明結(jié)合使用。
盡管已經(jīng)參照不同的特定細節(jié)描述了本發(fā)明,本領(lǐng)域技術(shù)人員可以認識到本發(fā)明可以不脫離本發(fā)明的精神而以其它特定方式實施。例如,本發(fā)明的許多實施方式通過參考宏塊描述。本領(lǐng)域技術(shù)人員可以認識到這些實施方式可以與其它任何像素值陣列結(jié)合使用。
權(quán)利要求
1.一種用于通過參考視頻序列中的第二圖像編碼第一圖像中的第一組像素的方法,該方法包括a)在第二圖像內(nèi)的第一搜索窗口中,搜索以識別與所述第一圖像中的所述第一組像素最匹配的所述第二圖像中的第一特定部分;并在所述第二圖像內(nèi)的所述第一搜索窗口中,識別對應(yīng)于所述第一特定部分的第一位置;以及b)在所述第二圖像內(nèi)的第二搜索窗口中,搜索以識別與在所述第一圖像中的所述第一組像素最匹配的所述第二圖像中的第二特定部分,其中所述第二搜索窗口關(guān)于所述第一位置定義。
2.如權(quán)利要求1所述的方法,其中,所述第二圖像中的所述第二搜索窗口比所述第二圖像中的第一搜索窗口小。
3.如權(quán)利要求1所述的方法,其中,搜索以識別所述第一特定部分包括從一個以上開始位置進行搜索。
4.如權(quán)利要求1所述的方法,其中在所述第一搜索窗口中搜索包括粗略搜索,其中在所述第二搜索窗口中搜索包括精細搜索。
5.如權(quán)利要求1所述的方法,其中在所述第二搜索窗口中搜索進一步包括a)在所述第二搜索窗口中識別多個搜索點;b)對每個特定搜索點,重復地;i.識別多個第二分組像素ii.為每個識別的第二分組像素計算運動向量量度;iii.為每個第一分組像素指定最佳的第二分組像素;iv.如果標準被滿足則放棄剩余搜索點。
6.如權(quán)利要求5所述的方法進一步包括a)確定與特定分組像素關(guān)聯(lián)的指定的第二分組像素是否具有大于閾值的所計算的運動向量量度;并且b)在確定與所述特定的第一分組像素關(guān)聯(lián)的所述指定的第二分組像素大于所述閾值后,從隨后的搜索中排除所述特定的第一分組像素。
7.如權(quán)利要求6所述的方法,其中所述閾值是在所述第二搜索窗口內(nèi)搜索期間動態(tài)定義的。
8.如權(quán)利要求5所述的方法,其中在所述第二搜索窗口中搜索包括在第一像素級搜索。
9.如權(quán)利要求8所述的方法,其中在所述第二搜索窗口中搜索進一步包括在第二像素級搜索,其中所述第一像素級為整數(shù)像素級,其中所述第二像素級為二分之一像素級。
10.一種用于在視頻序列中塊間編碼圖像的方法,其中所述視頻序列中的每個圖像具有多個整數(shù)像素位置,每個整數(shù)像素位置具有至少一個圖像值,該方法包括a)通過參考第二圖像選擇用于編碼的第一圖像;b)識別與所述第一圖像中的一組像素匹配的所述第二圖像中的第一組非整數(shù)像素位置,其中該識別包括從所述第二圖像中的所述多個整數(shù)像素位置的圖像值內(nèi)插與所述第二圖像中的所述非整數(shù)像素位置相關(guān)的圖像值;c)存儲所述非整數(shù)像素位置所內(nèi)插的圖像值,用于在此后的通過參考所述第二圖像的第三圖像的編碼期間使用。
11.如權(quán)利要求10所述的方法,進一步包括在識別所述第二圖像中該組非整數(shù)像素位置后,在所述第二圖像中內(nèi)插一組其它非整數(shù)像素位置的圖像值。
12.如權(quán)利要求11所述的方法,其中該組非整數(shù)像素位置關(guān)于所述第一組非整數(shù)像素位置定位。
13.一種用于在視頻序列中塊間解碼圖像的方法,其中所述視頻序列中的每個圖像具有多個整數(shù)像素位置,每個整數(shù)像素位置具有至少一個圖像值,該方法包括a)通過參考第二圖像選擇用于解碼的第一圖像;b)在所述第二圖像中識別與所述第一圖像中的一組像素對應(yīng)的一組非整數(shù)像素位置。c)從所述第二圖像中的多個整數(shù)像素位置的圖像值內(nèi)插與所述第二圖像中的非整數(shù)像素位置關(guān)聯(lián)的圖像值;并且d)存儲所述非整數(shù)像素位置的所內(nèi)插的圖像值,用于在此后的通過參考所述第二圖像的第三圖像的解碼期間使用。
14.如權(quán)利要求13所述的方法,進一步包括在內(nèi)插與所述非整數(shù)像素位置關(guān)聯(lián)的圖像值后,在所述第二圖像中內(nèi)插一組其它非整數(shù)像素位置的圖像值。
15.如權(quán)利要求14所述的方法,其中該組非整數(shù)像素位置關(guān)于所述第一組非整數(shù)像素位置定位。
16.一種用于通過參考在一列視頻圖像中的第二圖像來塊間處理第一圖像中的第一部分的方法,該方法包括a)將所述第二圖像分割成一組拼接片;b)將所述拼接片存儲在第一非高速緩沖存儲器中;c)無論何時需要子組拼接片,都從所述第一非高速緩沖存儲器中檢索所述子組拼接片;并且d)在所述第一部分和作為檢索到的子組拼接片的部分的所述第二圖像的部分之間,將檢索到的子組拼接片存儲到第二高速緩沖存儲器中,其中所述檢索到的子組拼接片比所述整組拼接片小。
17.如權(quán)利要求16所述的方法,其中當所述方法識別所述第二圖像中的位置來搜索以識別與所述第一部分匹配的第二圖像中的一部分時,所述方法確定其需要一子組拼接片,該子組拼接片被檢索并存儲在所述第二高速緩沖存儲器中,其中,所述識別的位置對應(yīng)于所述子組拼接片。
18.如權(quán)利要求16所述的方法,其中所述高速緩沖存儲器為計算機的隨機存取存儲器。
19.如權(quán)利要求16所述的方法,其中所述高速緩沖存儲器為計算機的非易失性存儲設(shè)備。
20.如權(quán)利要求16所述的方法,其中該塊間處理方法為塊間編碼方法。
21.如權(quán)利要求16所述的方法,其中該塊間處理方法為塊間解碼方法。
22.如權(quán)利要求16所述的方法,其中所述一組拼接片包括至少兩個水平相鄰的拼接片和至少兩個垂直相鄰的拼接片。
23.如權(quán)利要求16所述的方法,其中所述拼接片被順序地存儲在所述高速緩沖存儲器中。
24.一種在第一視頻圖像中編碼第一組像素的塊間編碼方法,該方法包括a)從一組搜索方式中選擇第一搜索方式,每種搜索方式定義用于檢查可能與所述第一組像素匹配的第二圖像的部分的方式;并且b)基于一組標準,在該組搜索方式中自適應(yīng)地選擇所述第一搜索方式。
25.如權(quán)利要求24所述的方法,其中所述一組標準包括在媒體中編碼圖像序列的分辨率。
26.如權(quán)利要求24所述的方法,其中該組標準包括相鄰運動向量的運動向量。
27.如權(quán)利要求24所述的方法,其中該組標準包括一組視頻圖像的運動域。
28.一種用于通過參考圖像序列中的第二圖像編碼第一圖像中的第一組像素的方法,該方法包括a)在第二圖像中識別多個第二組像素;b)為每個所述第二組像素計算第一量度計分;c)基于所述第一量度計分識別第二組像素的子組;d)從識別的第二組像素的子組中;i.為每個識別的第二組像素計算第二量度計分;以及ii.選擇具有最好的第二量度計分的所述識別的第二組像素,其中所述選擇的識別的第二組像素與所述第一組像素最匹配。
29.如權(quán)利要求28所述的方法,其中每個第二組像素包括多個第二編組像素,其中每個第二編組像素包括多個第二分組像素。
30.如權(quán)利要求29所述的方法,其中計算所述第一量度計分包括a)為每個第二編組像素計算第一量度計分;并且b)為每個第二分組像素計算第一量度計分。
31.如權(quán)利要求30所述的方法,其中識別第二組像素的子組包括識別第二編組像素的子組和第二分組像素的子組。
32.如權(quán)利要求31所述的方法,其中計算所述第二量度計分包括為每個第二編組像素和每個第二分組像素計算第二量度計分。
33.如權(quán)利要求32所述的方法,其中所述第一量度計分為絕對差值和(“SAD”)的量度計分。
34.如權(quán)利要求28所述的方法,其中識別第二組像素的子組包括選擇具有最低第一量度計分的前N個第二組像素。
35.如權(quán)利要求34所述的方法,其中所述第二比率量度計分為量化必須被傳送的數(shù)據(jù)量和與傳送的數(shù)據(jù)關(guān)聯(lián)的失真量的失真率成本。
36.如權(quán)利要求28所述的方法進一步包括a)為具有最低第二量度計分的前N個第二組像素計算第三量度計分;并且b)選擇具有最好的第三計分的所識別的第二組像素,其中該選擇的所識別的第二組像素與所述第一組像素最匹配。
全文摘要
本發(fā)明公開了用于在第一圖像中通過參考視頻序列中的第二圖像編碼第一組像素的方法。在第二圖像內(nèi)的第一搜索窗口中,該方法搜索以識別與第一圖像中的第一組像素最匹配的第二圖像中的第一特定部分。在第二圖像中的第一搜索窗口中,該方法識別對應(yīng)于第一特定部分的第一位置。在第二圖像中的第二搜索窗口中,該方法接下來搜索以識別與在第一圖像中的第一組像素最匹配的第二圖像中的第二特定部分,其中第二搜索窗口關(guān)于第一位置定義。
文檔編號H04N7/26GK1750656SQ20051009222
公開日2006年3月22日 申請日期2005年6月27日 優(yōu)先權(quán)日2004年6月27日
發(fā)明者R·庫馬爾, T·本, H-J·吳, C·迪維維耶 申請人:蘋果電腦有限公司