專利名稱:對(duì)編碼視頻數(shù)據(jù)選擇編碼類型和預(yù)測(cè)模式的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對(duì)于編碼視頻數(shù)據(jù)選擇編碼類型和預(yù)測(cè)模式。
背景技術(shù):
視頻流是由一列視頻幀所組成的,其中每幀由多個(gè)宏塊組成。每個(gè)宏塊典型地是 16X16的像素陣列,盡管其它大小的宏塊也是可能的。視頻編解碼器(壓縮器-解壓縮 器)是壓縮算法的軟件、硬件或者軟件和硬件結(jié)合的實(shí)現(xiàn),其中所述的壓縮算法用來(lái)編碼 /壓縮以及解碼/解壓縮視頻數(shù)據(jù)流以減小流的大小,為了能更快地傳輸以及更小的存儲(chǔ) 空間。雖然有損耗,在壓縮視頻流的二進(jìn)制數(shù)據(jù)的同時(shí),視頻編解碼器試圖保持圖像的質(zhì) 量。普通的視頻編解碼器的實(shí)例包括WMV、RealVideo以及壓縮標(biāo)準(zhǔn),諸如MPEG_2、MPEG_4、 H. 261、H. 263 和 H. 264 的實(shí)現(xiàn)。在H. 264壓縮標(biāo)準(zhǔn)下,視頻幀的宏塊可以在內(nèi)部編碼為16X16的像素陣列,該陣 列的像素值是利用以前編碼的宏塊計(jì)算的值預(yù)測(cè)的。16X16的宏塊也可以內(nèi)部編碼為16 個(gè)4 X 4的像素陣列,其中每個(gè)4 X 4的陣列中的像素值是利用以前編碼的4 X 4的陣列計(jì)算 的值預(yù)測(cè)的。存在4種可能的16X16陣列(亮度(Iuma)模塊)內(nèi)部預(yù)測(cè)模式以及9種可 能的4X4陣列(亮度模塊)內(nèi)部預(yù)測(cè)模式。同樣,在編碼宏塊中,必需做出兩個(gè)決定(選擇)1)是否該宏塊將被編碼為 16X16陣列(稱作16X 16編碼)或者被編碼為16個(gè)4X4陣列(稱作4X4編碼),以及 2)用于編碼宏塊的預(yù)測(cè)模式。例如,如果決定將宏塊編碼為16X16陣列,也必須決定將使 用16X16陣列的四個(gè)預(yù)測(cè)模式中的哪一個(gè)。如果決定將宏塊編碼為16個(gè)4X4陣列,也必 須決定對(duì)于16個(gè)4X4陣列的每個(gè),將使用4X4陣列的9個(gè)預(yù)測(cè)模式中的哪一個(gè)。在這里 步驟1稱作編碼類型選擇,并且步驟2稱作預(yù)測(cè)模式選擇。利用成本函數(shù)來(lái)做出編碼類型選擇以及預(yù)測(cè)模式選擇。例如,成本函數(shù)典型地用 于決定是否將宏塊編碼為16X16陣列或編碼為16個(gè)4X4陣列,其中選擇具有最低成本的 編碼的類型(16X16或4X4編碼)。成本典型地等于失真或者失真的加權(quán)平均加上由預(yù)測(cè) 模式生成的比特的數(shù)量的估計(jì),其中失真和/或比特?cái)?shù)量的增加會(huì)增加成本。失真反映了 原始像素值和預(yù)測(cè)的(或編碼的)值之間的差異,并且失真可以以不同的方法來(lái)測(cè)量。例 如,失真可以測(cè)量為原始像素值和預(yù)測(cè)的(或編碼的)值之間的絕對(duì)差值的和。選擇宏塊的最優(yōu)編碼類型(16X 16或4X4編碼)以及最優(yōu)預(yù)測(cè)模式的窮舉搜索 方法包括確定宏塊中所有4個(gè)16X 16預(yù)測(cè)模式的以及16個(gè)4X4模塊的9種4X4預(yù)測(cè)模 式的所有組合的成本,其中選定成本最低的16X16預(yù)測(cè)模式或4X4預(yù)測(cè)模式的特定組合。 對(duì)于每個(gè)宏塊,窮舉搜索方法需要考慮4X4預(yù)測(cè)模式的9~16不同的組合,使得窮舉搜索方 法實(shí)際上不可實(shí)行。
同樣,典型地執(zhí)行下列的操作以確定宏塊的編碼類型和預(yù)測(cè)模式1)計(jì)算所有4種可能16 X 16預(yù)測(cè)模式的成本。2)對(duì)于每個(gè)16個(gè)4X4模塊,選擇具有最小成本的預(yù)測(cè)模式(在9種預(yù)測(cè)模式 中),然后計(jì)算結(jié)果的組合的總成本(例如,16種確定的成本的和)。3)將在步驟1確定的成本與在步驟2確定的成本進(jìn)行對(duì)比,并選擇最低的一個(gè)。 該選擇提供了編碼的類型選擇以及預(yù)測(cè)模式選擇。然而傳統(tǒng)的方法依然包括確定4X4預(yù)測(cè)模式的9X 16種不同的組合的成本加上 4個(gè)16X16預(yù)測(cè)模式的成本。
發(fā)明內(nèi)容
在一些實(shí)施方式中,提供了一種更有效的方法來(lái)確定視頻幀中宏塊的編碼類型的 選擇以及預(yù)測(cè)模式的選擇。在一些實(shí)施方式中,一般的方法1)利用編碼類型選擇算法(基 于容易計(jì)算的宏塊的屬性)選擇最初為宏塊考慮的編碼類型(16X16或4X4),2)如果在 步驟1選擇了 16X16編碼類型,則基于失真閡值,利用傳統(tǒng)的方法或者改進(jìn)的16X16預(yù) 測(cè)模式搜索算法,考慮可以用在宏塊上的四種16X16預(yù)測(cè)模式,3)如果在步驟1中選擇了 4X4編碼類型,基于預(yù)測(cè)模式之間的位置關(guān)系,利用傳統(tǒng)的方法或者改進(jìn)的4X4預(yù)測(cè)模式 搜索算法,選擇用于宏塊的16個(gè)4X4模塊的每個(gè)的4X4預(yù)測(cè)模式。
圖1是選擇像素宏塊的編碼類型和預(yù)測(cè)模式的一般方法的流程圖。圖2是用于選擇像素宏塊的編碼類型的編碼類型選擇方法的流程圖。圖3是用于選擇16X 16像素宏塊的預(yù)測(cè)模式的預(yù)測(cè)模式搜索方法的流程圖。圖4描述4X4陣列的9種預(yù)測(cè)模式之間的邏輯/位置關(guān)系的概念圖表。圖5是用于選擇宏塊4X4陣列的預(yù)測(cè)模式的4X4預(yù)測(cè)模式搜索方法的流程圖。圖6是用于選擇宏塊4X4陣列的預(yù)測(cè)模式的可替換的4X4預(yù)測(cè)模式搜索方法的 流程圖。圖7表示計(jì)算機(jī)系統(tǒng),利用該計(jì)算機(jī)系統(tǒng)實(shí)施本發(fā)明的一些實(shí)施方式。
具體實(shí)施例方式序列號(hào)為60/583447,于2004年6月27日公開的美國(guó)臨時(shí)專利申請(qǐng)“編碼和解碼 圖像”在此通過(guò)引用清楚地結(jié)合。在以下的描述中,為了解釋,闡述了多個(gè)細(xì)節(jié)。但是,本領(lǐng)域的普通技術(shù)人員將理 解不用這些特定的細(xì)節(jié)也可以實(shí)現(xiàn)本發(fā)明。在其它的實(shí)例中,為了不使不必要的細(xì)節(jié)描述 模糊本發(fā)明的說(shuō)明,已知的結(jié)構(gòu)和設(shè)備以框圖的形式表示。在一些實(shí)施方式中,本發(fā)明提供了一種更有效的方法來(lái)確定視頻幀中宏塊的編碼 類型的選擇以及預(yù)測(cè)模式的選擇。在一些實(shí)施方式中,一般的搜索算法執(zhí)行以下操作1)利用編碼類型選擇算法(基于容易計(jì)算的宏塊的屬性)選擇最初為宏塊考慮的 編碼類型(16X16或4X4)。編碼類型選擇算法在下面部分I中進(jìn)行討論。2)如果在步驟1選擇了 16X16編碼模式,基于失真閾值,利用傳統(tǒng)的方法或者改
5進(jìn)的16 X 16預(yù)測(cè)模式搜索算法,考慮(S卩,測(cè)試)可以用在宏塊上的四種16 X 16預(yù)測(cè)模式。 注意在16X16預(yù)測(cè)模式搜索算法的一種特定情形中,也可以選擇4X4編碼類型。該步驟 在以下部分II中進(jìn)行討論。3)如果在步驟1中選擇了 4X4編碼類型,基于預(yù)測(cè)模式之間的位置關(guān)系(在以 下部分III中對(duì)其進(jìn)行討論),利用傳統(tǒng)的方法或者改進(jìn)的4X4預(yù)測(cè)模式搜索算法,選擇 4X4預(yù)測(cè)模式用于宏塊的每個(gè)16個(gè)4X4模塊。注意在搜索算法的步驟1中,如果編碼類型選擇算法選擇16 X 16編碼類型用于初 始考慮,最終選擇的編碼類型可以是16X16編碼類型或4X4編碼類型。相反,如果編碼類 型選擇算法選擇4X4編碼類型用于初始考慮,則將4X4編碼類型有效地選擇為宏塊的編 碼類型。如果選擇16X16編碼類型用于初始考慮,傳統(tǒng)的方法或者改進(jìn)的16X16預(yù)測(cè)模 式搜索算法用于確定宏塊的預(yù)測(cè)模式。如果選擇4X4編碼類型用于初始考慮,則傳統(tǒng)的方 法或者改進(jìn)的4X4預(yù)測(cè)模式搜索算法用于確定宏塊的預(yù)測(cè)模式。同樣,根據(jù)由搜索算法選 擇的用于初始考慮的編碼類型,使用不同的搜索算法(傳統(tǒng)的或改進(jìn)的)來(lái)確定預(yù)測(cè)模式。圖1是選擇像素宏塊的編碼類型和預(yù)測(cè)模式的一般方法100的流程圖。在一些實(shí) 施方式中,通過(guò)設(shè)置來(lái)編碼視頻幀的軟件和/或硬件實(shí)現(xiàn)一般方法100。當(dāng)其接收(在102) 像素宏塊時(shí),該方法開始。在一些實(shí)施方式中,宏塊是16X16像素陣列,而在其它的實(shí)施方 式中,該宏塊是不同尺寸的像素陣列。在一些實(shí)施方式中,將該宏塊分成4個(gè)8 X 8陣列或 16個(gè)4 X 4陣列,而在其它的實(shí)施方式中,將宏塊分成不同尺寸的塊/陣列。利用編碼類型選擇方法200(以下參照附圖2進(jìn)行討論),該方法然后選擇(在 105)最初為宏塊考慮的編碼類型(16X16或4X4)。該方法然后確定(在110)是否已經(jīng) 選擇了 4X4編碼類型。如果是,則該方法隨后利用傳統(tǒng)的方法、改進(jìn)的4X4預(yù)測(cè)模式搜索 方法500 (以下參照附圖5進(jìn)行討論),或者可選4X4預(yù)測(cè)模式搜索方法600 (以下參照附 圖6進(jìn)行討論),選擇(在115)宏塊的16個(gè)4X4模塊的每個(gè)的預(yù)測(cè)模式。如果該方法確定(在110-否)沒(méi)有選擇4X4編碼類型,則該方法選擇(在 120) 16X16預(yù)測(cè)模式(利用傳統(tǒng)的方法或改進(jìn)的16X 16預(yù)測(cè)模式搜索方法300,以下將參 照附圖3進(jìn)行討論)或4X4編碼類型。該方法然后確定(在125)是否已經(jīng)選擇了 4X4 編碼類型(在120)。如果是,該方法繼續(xù)步驟115,其中在步驟115選擇宏塊的16個(gè)4X4 模塊的每個(gè)的預(yù)測(cè)模式。如果該方法確定(在125-否)沒(méi)有選擇4X4編碼類型,這表示 已經(jīng)選擇了特定的16X16預(yù)測(cè)模式。然后該方法結(jié)束。部分I 編碼類型選擇算法該部分描述了一般搜索算法的步驟1的編碼類型選擇算法。編碼類型選擇算法選 擇最初為宏塊考慮的編碼類型(16X16或4X4)并從而確定哪個(gè)預(yù)測(cè)模式(16X16模式或 4X4模式)是最初為宏塊考慮的。編碼類型選擇算法利用易于確定的宏塊的屬性。編碼類型選擇算法執(zhí)行下列操作1)將宏塊分成4個(gè)8 X 8模塊。2)計(jì)算每個(gè)8X8模塊的方差,并將其與預(yù)定的閡值進(jìn)行對(duì)比。例如,可以將預(yù)定 的閾值設(shè)置成等于幀中所有的8X8模塊平均方差,在所述幀中包括宏塊??梢源_定8X8模 塊的方差,例如通過(guò)a)確定模塊中的所有像素值的平均值,b)為模塊中的每個(gè)像素確定 (像素值-平均值)~2,以及c)對(duì)在步驟b確定的所有值求和(即,對(duì)模塊中的所有像素的確定的值求和)。3)確定宏塊中具有低于預(yù)定閾值的方差的8X8模塊的數(shù)量(其中方差是用于確 定是否將宏塊編碼為16X 16模塊或4X4模塊的屬性)。4)如果所有的4個(gè)8X8模塊具有低于預(yù)定閾值的方差,則為初始考慮選擇 16X16編碼類型。注意,如果16X16編碼類型被選擇為初始考慮,則最終選擇的編碼類型 可以是16X16編碼類型或4X4編碼類型。可以利用傳統(tǒng)的方法或改進(jìn)的16X16預(yù)測(cè)模 式搜索算法(如以下部分II中所述),選擇用在宏塊上的16X 16預(yù)測(cè)模式。5)如果4個(gè)8 X 8模塊的任一個(gè)具有超過(guò)預(yù)定閾值的方差,則選擇4 X 4編碼類型。 同樣,利用傳統(tǒng)的方法或者改進(jìn)的4X4預(yù)測(cè)模式搜索算法(如以下部分II所述),來(lái)確定 將用在宏塊的16個(gè)4X4模塊的每個(gè)上的4X4預(yù)測(cè)模式。注意當(dāng)用在編碼進(jìn)程的量化步驟中使用的量化參數(shù)值相對(duì)高時(shí)(例如,高于34), 編碼類型選擇算法的操作稍微偏離上述的說(shuō)明。在這些實(shí)施方式中,預(yù)定的閾值由取決于 量化參數(shù)值(QP)的因子來(lái)依比例確定,使得當(dāng)量化參數(shù)值增加時(shí),預(yù)定的閡值就增加。在 一些實(shí)施方式中,定比的因子由以定比的方程的形式確定(l+k(QP-34)),其中k是常量。 在其它的實(shí)例中,定比的因子由另+個(gè)定比方程確定。預(yù)定的閾值乘以被確定的定比因子 以生成成比例的閾值。在這些實(shí)施方式中,如果4個(gè)8X8模塊的任一個(gè)具有超過(guò)成比例的閡值的方差, 則將宏塊編碼為16個(gè)4X4模塊??梢岳脗鹘y(tǒng)的方法或本發(fā)明的方法(諸如改進(jìn)的4X4 預(yù)測(cè)模式搜索算法)來(lái)做出選擇。然而,如果確定宏塊的所有的4個(gè)8X8模塊具有低于成 比例的閾值的方差,可以將宏塊編碼為16X16模塊或編碼為16個(gè)4X4模塊??梢岳脗?統(tǒng)的方法或改進(jìn)的16X 16預(yù)測(cè)模式搜索算法(如以下部分II所述),選擇16X 16預(yù)測(cè)模 式用在宏塊上。如果選擇4X4編碼類型優(yōu)于已選定的16X16預(yù)測(cè)模式,則可以利用傳統(tǒng) 的方法或本發(fā)明的方法(諸如改進(jìn)的4X4預(yù)測(cè)模式搜索算法)來(lái)選擇4X4預(yù)測(cè)模式。附圖2是用于選擇像素宏塊的編碼類型的編碼類型選擇方法200的流程圖。在一 些實(shí)施方式中,方法200是由設(shè)計(jì)用來(lái)編碼視頻幀的軟件和/硬件來(lái)實(shí)現(xiàn)的。在一些實(shí)施 方式中,編碼類型選擇方法200包括附圖1的步驟105。方法200從確定宏塊的閾值方差 (在205)開始。在一些實(shí)施方式中,將閾值方差設(shè)置成等于幀中的所有8X8模塊的平均 方差,在所述的幀中包括有宏塊(如上所述)。在另外的實(shí)施方式中,當(dāng)用在編碼進(jìn)程的量 化步驟的量化參數(shù)值相對(duì)高時(shí),預(yù)定的閾值方差由取決于量化參數(shù)值的因子來(lái)依比例確定 (如上所述)。該方法然后將宏塊分成4個(gè)8X8模塊(在210)并且確定4個(gè)8X8模塊的每個(gè)的 方差(在215)。該方法然后確定是否所有的4個(gè)8X8模塊的方差低于閾值方差(在220)。 如果是,則該方法選擇宏塊的16X16編碼類型(在225),并且結(jié)束。如果不是,則該方法選 擇宏塊的4X4編碼類型(在230),并且結(jié)束。部分II 16X 16預(yù)測(cè)模式搜索算法在一般的搜索算法的步驟1之后,如果16X16編碼類型已被選擇為初始考慮,則 然后對(duì)16X16預(yù)測(cè)模式進(jìn)行測(cè)試。該選擇描述了一般搜索算法的步驟2。在H. 264編解碼 標(biāo)準(zhǔn)下,存在四個(gè)可能的16 X 16內(nèi)部預(yù)測(cè)模式來(lái)從DC、V (垂直)、H(水平)以及P (平面 的)中選擇。在一些實(shí)施方式中,使用傳統(tǒng)的方法來(lái)選擇16X16預(yù)測(cè)模式(例如,通過(guò)確
7定4個(gè)16X 16預(yù)測(cè)模式的每個(gè)的成本并選擇最低成本的模式)。在其它的實(shí)施方式中,基 于由預(yù)測(cè)模式導(dǎo)致的失真,·使用改進(jìn)的16X 16預(yù)測(cè)模式搜索算法來(lái)考慮(即測(cè)試)宏塊 的16X16預(yù)測(cè)模式。在一些實(shí)施方式中,16X 16預(yù)測(cè)模式搜索算法使用傳統(tǒng)的方法來(lái)確定由特定的預(yù) 測(cè)模式導(dǎo)致的失真,所述的特定的預(yù)測(cè)模式用在了當(dāng)前處理的宏塊中。在傳統(tǒng)的方法下, 失真的確定是由1)從鄰接的以前編碼的宏塊檢索像素值,2)從檢索到的像素值獲得新的 值,3)利用獲得的值計(jì)算當(dāng)前處理的宏塊的預(yù)測(cè)值,以及4)確定當(dāng)前處理的宏塊的原始像 素值和計(jì)算的預(yù)測(cè)值之間的失真。利用傳統(tǒng)的方法來(lái)確定失真是耗費(fèi)時(shí)間的。在其它的實(shí)施方式中,16X 16預(yù)測(cè)模式搜索算法利用更快的估計(jì)方法來(lái)確定由特 定的預(yù)測(cè)模式導(dǎo)致的失真,所述的特定的預(yù)測(cè)模式用在了當(dāng)前處理的宏塊中。該估計(jì)方法 提供對(duì)預(yù)測(cè)值的估計(jì)(評(píng)估)并且然后確定被估計(jì)的預(yù)測(cè)值的失真,其中所述的預(yù)測(cè)值是 由特定的預(yù)測(cè)模式生成的。在估計(jì)方法下,利用來(lái)自于當(dāng)前處理的宏塊自身的像素值來(lái)確定預(yù)測(cè)值,假定當(dāng) 前處理的宏塊在邊界處的像素值與鄰接的宏塊的鄰近的像素值相似。由于所使用的來(lái)自于 當(dāng)前處理宏塊的像素值不同于來(lái)自于其它宏塊的像素值,這減小了檢索的時(shí)間,所以利用 估計(jì)方法確定失真耗費(fèi)的時(shí)間較少。利用估計(jì)方法顯著減小了需要確定精度損失較低的失 真值的時(shí)間。在一些實(shí)施方式中,估計(jì)方法的偽碼如下choosel6X 16mode (){stepl //DC 預(yù)測(cè)pred =當(dāng)前宏塊的左列和上排的像素平均foreach 4X4block{SAD_DC = sad (4X4block, pred);if (SAD_DC > Τ){bail and goto step2 ;}
}choose 16X16DC mode and returnst印2 H垂直預(yù)測(cè)foreach 4X4block{SAD_V = 0 ;foreach column in the 4X4block{
prod一當(dāng)前宏塊的該列的上排的像素值
SAD V+一sad(4×4block column,prod);
}
SAD V>>一4
if(SAD V>/)
{
bai l and goto step3;
}
}
choose 16×16V and return
Step 3
//水平預(yù)測(cè)
foreach 4×4block
{
SAD H一0
foreach r。W in the 4×4block
{
prod一當(dāng)前宏塊的該排的左列的像素值
SAD H+一sad(4×4block r。W,prod);
}
SAD H>>一4
if(SAD H>/)
{
choose 16×16planar and 4×4modes and return
}
}
choose 16×16H and return
}
不論用什么方法計(jì)算特定預(yù)測(cè)模式的失真,16×16預(yù)測(cè)模式搜索算法執(zhí)行下列操作
1)測(cè)試16×16DC預(yù)測(cè)模式[oloo] a)確定由16×16DC預(yù)測(cè)模式導(dǎo)致的宏塊的每個(gè)4×4模塊中的失真。
b)如果每個(gè)4×4模塊中的失真低于預(yù)定的閡值,則選擇16×16DC預(yù)測(cè)模式作為該宏塊的預(yù)測(cè)模式,并且16×16預(yù)測(cè)模式搜索算法結(jié)束。[o102] C)如果任一個(gè)4×4模塊中的失真超過(guò)預(yù)定的閡值,則16×16預(yù)測(cè)模式搜索算法繼續(xù)到步驟2。[o103] 2)測(cè)試16×16V預(yù)測(cè)模式[o104] a)確定由16×16V預(yù)測(cè)模式導(dǎo)致的宏塊的每個(gè)4×4模塊中的失真。[o105] b)如果每個(gè)4×4模塊中的失真低于預(yù)定的閡值,則選擇16×16V預(yù)測(cè)模式作為該宏塊的預(yù)測(cè)模式,并且16X 16預(yù)測(cè)模式搜索算法結(jié)束。c)如果任一個(gè)4X4模塊中的失真超過(guò)預(yù)定的閾值,則16X16預(yù)測(cè)模式搜索算法 繼續(xù)到步驟3。3)測(cè)試16 X 16H預(yù)測(cè)模式a)確定由16X16H預(yù)測(cè)模式導(dǎo)致的宏塊中每個(gè)4X4模塊的失真。b)如果每個(gè)4X4模塊的失真低于預(yù)定的閾值,則選擇16X16H預(yù)測(cè)模式作為該宏 塊的預(yù)測(cè)模式,并且16X 16預(yù)測(cè)模式搜索算法結(jié)束。c)如果任一個(gè)4X4模塊中的失真超過(guò)預(yù)定的閾值,則16X16預(yù)測(cè)模式搜索算法 考慮16X 16P預(yù)測(cè)模式以及4X4編碼類型。在一些實(shí)施方式中,通過(guò)利用4X4預(yù)測(cè)模式 搜索算法(在以下部分III討論),使得兩個(gè)上述選項(xiàng)之間的選擇變得容易。在其它的實(shí)施 方式中,利用傳統(tǒng)的方法(例如通過(guò)確定16X16P預(yù)測(cè)模式的成本和利用4X4編碼類型得 到的最低成本并且選擇具有最低成本的選項(xiàng))來(lái)在兩個(gè)上述選項(xiàng)之間做出選擇。圖3是16 X 16預(yù)測(cè)模式搜索方法300的流程圖,用于選擇16 X 16像素宏塊的預(yù) 測(cè)模式。在一些實(shí)施方式中,該方法300是由設(shè)置來(lái)編碼視頻幀的軟件和/或硬件來(lái)實(shí)現(xiàn) 的。在一些實(shí)施方式中,編碼類型選擇方法300包括圖1的步驟120。在一些實(shí)施方式中, 16X16預(yù)測(cè)模式搜索方法利用傳統(tǒng)的方法或改進(jìn)的估計(jì)方法來(lái)確定宏塊中由特定的預(yù)測(cè) 模式(如上所述)導(dǎo)致的4X4模塊的失真。方法300從確定由16X 16DC預(yù)測(cè)模式導(dǎo)致的宏塊的16個(gè)4X4模塊中的每個(gè)的 失真開始(在305)。該方法然后確定由16X16DC預(yù)測(cè)模式導(dǎo)致的所有4X4模塊中的失真 是否低于預(yù)定的閾值失真(在310)。如果是,就選擇16X16DC預(yù)測(cè)模式作為宏塊的預(yù)測(cè)模 式(在315),并且該方法結(jié)束。如果該方法300確定由16 X 16DC預(yù)測(cè)模式導(dǎo)致的任一個(gè)4X4模塊中的失真不低 于預(yù)定的閾值失真(在310-否),則該方法確定由16X16V預(yù)測(cè)模式導(dǎo)致的宏塊的16個(gè) 4 X 4模塊的每個(gè)中的失真(在320)。該方法然后確定由16 X 16V預(yù)測(cè)模式導(dǎo)致的所有4 X 4 模塊中的失真是否低于預(yù)定的閾值失真(在325)。如果是,就選擇16X 16V預(yù)測(cè)模式作為 宏塊的預(yù)測(cè)模式(在330),并且該方法結(jié)束。如果方法300確定由16X 16V預(yù)測(cè)模式導(dǎo)致的任一 4X4模塊中的失真不低于預(yù) 定的閾值失真(在325-否),則該方法確定由16X16H預(yù)測(cè)模式導(dǎo)致的宏塊的16個(gè)4X4 模塊中每個(gè)的失真(在335)。該方法然后確定由16X16H預(yù)測(cè)模式導(dǎo)致的所有4X4模塊 中的失真是否低于預(yù)定的閾值失真(在340)。如果是,就選擇16X16H預(yù)測(cè)模式作為宏塊 的預(yù)測(cè)模式(在345),并且該方法結(jié)束。如果方法300確定由16X 16H預(yù)測(cè)模式導(dǎo)致的任一 4X4模塊中的失真不低于預(yù) 定的閾值失真(在340-否),則該方法在設(shè)置16X16P預(yù)測(cè)模式作為宏塊的預(yù)測(cè)模式或者 為宏塊設(shè)置4X4編碼類型之間做出選擇(在350)。在一些實(shí)施方式中,通過(guò)使用4X4預(yù) 測(cè)模式搜索方法500(以下參照附圖5討論),可使上述的兩個(gè)選項(xiàng)之間的選擇變得容易。 在其它的實(shí)施方式中,利用傳統(tǒng)的方法(如上所述)在上述的兩個(gè)選項(xiàng)之間做出選擇。然 后該方法結(jié)束。部分III :4X4預(yù)測(cè)模式搜索算法在一般的搜索算法的步驟1之后,如果4X4編碼類型已選擇為初始考慮,則然后
10為宏塊的16個(gè)4X4模塊的每個(gè)選擇4X4預(yù)測(cè)模式。該部分描述一般搜速算法的步驟3。 在一些實(shí)施方式中,使用傳統(tǒng)的方法來(lái)選擇每個(gè)4 X 4模塊的4 X 4預(yù)測(cè)模式(例如,通過(guò)確 定9個(gè)預(yù)測(cè)模式中每個(gè)模式的成本并且選擇最低成本的模式)。在其它的實(shí)施方式中,改進(jìn) 的4 X 4預(yù)測(cè)模式搜索算法用于選擇4 X 4模塊的4 X 4預(yù)測(cè)模式。
如上所述,視頻流由一列視頻幀所組成,其中每個(gè)幀由多個(gè)宏塊組成。宏塊典型地 是16X16的像素陣列(盡管其它尺寸的宏塊也是可能的)并被分成分區(qū)(諸如4X4的 像素陣列的分區(qū))。在H. 264編解碼標(biāo)準(zhǔn)下,當(dāng)內(nèi)部編碼幀時(shí),存在9種不同的方法來(lái)編碼 4X4陣列(即,存在9種內(nèi)部4X4預(yù)測(cè)模式)。這9種模式是1.內(nèi)部._4X4_.水平
2.內(nèi)部._4X4_.垂直
3.內(nèi)部._4X4_.斜_下_左
4.內(nèi)部._4X4_.斜_下_右
5.內(nèi)部._4X4_.垂直_右
6.內(nèi)部._4X4_.水平_下
7.內(nèi)部._4X4_.垂直_左
8.內(nèi)部._4X4_.水平_上每個(gè)4X4陣列只以一種預(yù)測(cè)模式來(lái)編碼。典型地,將會(huì)選擇導(dǎo)致最低成本的預(yù) 測(cè)模式。成本典型地等于失真(其中失真反映了原始像素值和編碼的預(yù)測(cè)值之間的差異) 或者失真的加權(quán)平均和由預(yù)測(cè)模式生成的比特?cái)?shù)(其中失真和/或比特?cái)?shù)的增加會(huì)增加成 本)。可以在所有9個(gè)預(yù)測(cè)模式中執(zhí)行窮舉搜索,以確定具有最低成本的最優(yōu)的預(yù)測(cè)模式 (選定的預(yù)測(cè)模式)。然而,典型地,在所有9個(gè)預(yù)測(cè)模式中的窮舉搜索并不是有效的(耗 費(fèi)太多的時(shí)間和處理資源)。在一些實(shí)施方式中,使用了一種更有效的方法來(lái)確定像素陣列的預(yù)測(cè)模式。在一 些實(shí)施方式中,使用一種搜索算法,該算法在確定像素陣列的預(yù)測(cè)模式中考慮減小數(shù)量的 預(yù)測(cè)模式。該搜索算法更有效并且產(chǎn)生相對(duì)低的精度損失。該搜索算法是基于4X4陣列的9種可能的預(yù)測(cè)模式之間的邏輯/位置關(guān)系。圖 4示出4X4陣列的9種預(yù)測(cè)模式之間的邏輯/位置關(guān)系的概念圖表。如圖4所示,8種預(yù) 測(cè)模式(0、1、3、4、5、6、7和8)圍繞圓環(huán)設(shè)置,其中一個(gè)預(yù)測(cè)模式(2)放置在圓環(huán)的中央,預(yù) 測(cè)模式由節(jié)點(diǎn)表示。圓環(huán)上的兩個(gè)預(yù)測(cè)模式相互越接近,兩個(gè)預(yù)測(cè)模式之間的邏輯/位置 關(guān)系就越強(qiáng)。.同樣,圓環(huán)上兩個(gè)預(yù)測(cè)模式之間彼此相距越遠(yuǎn),兩個(gè)預(yù)測(cè)模式之間的邏輯/ 位置關(guān)系就越弱。例如,由于預(yù)測(cè)模式0和5在圓環(huán)上相互鄰接,所以這表示這兩個(gè)預(yù)測(cè)模 式之間存在較強(qiáng)的邏輯/位置關(guān)系。作為又一個(gè)實(shí)例,由于預(yù)測(cè)模式0和1是在圓環(huán)上相 對(duì)的位置,這表示這兩個(gè)預(yù)測(cè)模式之間存在較弱的邏輯/位置關(guān)系。預(yù)測(cè)模式2位于圓環(huán) 的中央,表示它與其它任何一個(gè)預(yù)測(cè)模式都沒(méi)有邏輯/位置關(guān)系。圖4的概念圖表是基于內(nèi)部編碼4X4陣列的H. 264編解碼標(biāo)準(zhǔn)。對(duì)于當(dāng)前處理 的4X4陣列,H. 264標(biāo)準(zhǔn)下的預(yù)測(cè)模式表示另外一個(gè)4X4陣列(在此稱作預(yù)測(cè)陣列)的 位置(相對(duì)于當(dāng)前處理的4X4陣列),其是基于對(duì)當(dāng)前處理的陣列編碼的預(yù)測(cè)信息。例如, 預(yù)測(cè)模式0 (垂直)表示當(dāng)前處理的陣列的預(yù)測(cè)陣列是位于當(dāng)前處理的陣列之上,預(yù)測(cè)模式 1 (水平)表示當(dāng)前處理的陣列的預(yù)測(cè)陣列是位于當(dāng)前處理的陣列左側(cè)。
同樣,可以訪問(wèn)預(yù)測(cè)模式之間的邏輯/位置關(guān)系的強(qiáng)弱(基于由與當(dāng)前處理的 4X4陣列有關(guān)的預(yù)測(cè)模式表示的位置關(guān)系)。例如,由于位于當(dāng)前處理的陣列之上的預(yù)測(cè) 陣列(由預(yù)測(cè)模式0表示)與位于當(dāng)前處理的陣列左側(cè)的預(yù)測(cè)陣列(由預(yù)測(cè)模式1表示) 之間具有弱的邏輯/位置關(guān)系,所以預(yù)測(cè)模式0與預(yù)測(cè)模式1之間具有弱的邏輯/位置關(guān) 系。弱的邏輯位置關(guān)系反映在了附圖4中,其中預(yù)測(cè)模式0和1在圓環(huán)上相對(duì)的部分。相 反,由于位于當(dāng)前處理的陣列之上的預(yù)測(cè)陣列(由預(yù)測(cè)模式0表示)與位于當(dāng)前處理的陣 列上方和右側(cè)的預(yù)測(cè)陣列(由預(yù)測(cè)模式5表示)之間具有強(qiáng)的邏輯/位置關(guān)系,所以預(yù)測(cè) 模式0與預(yù)測(cè)模式5之間具有強(qiáng)的邏輯/位置關(guān)系。強(qiáng)的邏輯/位置關(guān)系反映在了附圖4 中,其中預(yù)測(cè)模式0和5在圓環(huán)上相鄰。圍繞圓環(huán)設(shè)置的8個(gè)預(yù)測(cè)模式(0、1、3、4、5、6、7和8)可以分為4組邏輯/位置相 關(guān)的預(yù)測(cè)模式1.7、0和5(垂直_左,垂直,和垂直_右)2.8、1和6(水平_上,水平,和水平_下)3. 7、3和8(垂直_左,斜_下_左,和水平_上)4. 5、4和6(垂直_右,斜_下_右,和水平_下)相同組內(nèi)的預(yù)測(cè)模式相互之間具有強(qiáng)的邏輯/位置關(guān)系。在一些實(shí)施方式中,搜 索算法最初確定每個(gè)組中的一個(gè)預(yù)測(cè)模式的成本,連同預(yù)測(cè)模式2的成本。搜索算法然后 確定具有最低成本的該組預(yù)測(cè)模式中的預(yù)測(cè)模式。如果具有最低成本的預(yù)測(cè)模式是在特定 組的預(yù)測(cè)模式中,則存在非常大的可能性是所有9個(gè)可能的預(yù)測(cè)模式的最低成本就在該特 定的組中。同樣,該搜索算法然后確定在該特定的組中具有最低成本的預(yù)測(cè)模式,具有最低 成本的預(yù)測(cè)模式被選作陣列的最優(yōu)的預(yù)測(cè)模式。例如,在一些實(shí)施方式中,搜索算法最初確定預(yù)測(cè)模式0、1、2、3和4的成本,其中 預(yù)測(cè)模式0、1、3和4分別來(lái)自不同的組。如果在預(yù)測(cè)模式的組(0,1,2,3,4)中預(yù)測(cè)模式0、 1、3或4具有最低的成本,則搜索算法隨后確定預(yù)測(cè)模式的組中最低的成本,其中包括以前 確定的預(yù)測(cè)模式。例如,如果搜索算法確定在預(yù)測(cè)模式的組(0,1,2,3,4)中,預(yù)測(cè)模式1具 有最低的成本,則搜索算法然后確定預(yù)測(cè)模式組(8,1,6)的最低成本,具有最低成本的預(yù) 測(cè)模式被選為最優(yōu)的預(yù)測(cè)模式。在一些實(shí)施方式中,搜索算法最初考慮并比較預(yù)定的預(yù)測(cè)模式組的成本,該組包 括一些但并不是全部的9種可能的預(yù)測(cè)模式。在一些實(shí)施方式中,預(yù)測(cè)模式的預(yù)定的組 包括一個(gè)預(yù)測(cè)模式,該一個(gè)預(yù)測(cè)模式是來(lái)自于4個(gè)預(yù)測(cè)模式組的每個(gè)(如上參照附圖4所 述)。在以下所述的實(shí)施方式中,預(yù)測(cè)模式的預(yù)定的組包括預(yù)測(cè)模式0、1、2、3和4。然而在 其它的實(shí)施方式中,預(yù)測(cè)模式的預(yù)定組包括其它的預(yù)測(cè)模式。搜索算法確定了組中每個(gè)預(yù) 測(cè)模式的成本,其中C0、C1、C2、C3和C4分別是預(yù)測(cè)模式0、1、2、3和4的預(yù)先確定的成本。 可以利用本領(lǐng)域已知的方法確定每個(gè)預(yù)測(cè)模式的成本。搜索算法然后確定具有最低成本的 預(yù)測(cè)模式的序數(shù)(0,1,2,3或4),其中變量η用于表示確定的序數(shù)。這些操作可以由如下的 等式來(lái)表示η = GetInlOfMinCost(0,1,2,3,4)其中GetlnlOfMinCost是函數(shù),其確定預(yù)測(cè)模式組中(例如,0,1,2,3,和4)每個(gè) 預(yù)測(cè)模式的成本,并且確定組中具有最低成本的預(yù)測(cè)模式的序數(shù)。
搜索算法然后執(zhí)行下列操作Ifn ==2χ = 2Else If η == 0χ = = GetInlOfMinCost (7,0,5)Else Ifn == 1χ = = GetInlOfMinCost (8,1,6)Else If η == 3χ = = GetInlOfMinCost (7, 3,8)Else If η == 4χ == GetInlOfMinCost (5,4,6)其中χ是最終選定為像素陣列的最優(yōu)預(yù)測(cè)模式(選定的預(yù)測(cè)模式)的預(yù)測(cè)模式的序號(hào)。同樣,搜索算法確定η是否等于2。如果是,選定的搜索模式就是預(yù)測(cè)模式2。如 果η不等于2,搜索算法然后確定η是否等于O。如果是,選定的預(yù)測(cè)模式就是具有預(yù)測(cè)模 式組(7,0,5)的最低成本的預(yù)測(cè)模式。如果η不等于0,搜索算法然后確定η是否等于1。 如果是,選定的預(yù)測(cè)模式就是具有預(yù)測(cè)模式組(8,1,6)的最低成本的預(yù)測(cè)模式。如果η不 等于1,搜索算法然后確定η是否等于3。如果是,選定的預(yù)測(cè)模式就是具有預(yù)測(cè)模式組(7, 3,8)的最低成本的預(yù)測(cè)模式。如果η不等于3,搜索算法然后確定η是否等于4。如果是, 選定的預(yù)測(cè)模式就是具有預(yù)測(cè)模式組(5,4,6)的最低成本的預(yù)測(cè)模式。圖5是4X4預(yù)測(cè)模式搜索方法500的流程圖,該方法選擇宏塊的4X4陣列的預(yù) 測(cè)模式。在一些實(shí)施方式中,方法500是由設(shè)置用來(lái)編碼視頻幀的軟件和/或硬件來(lái)實(shí)現(xiàn) 的。在一些實(shí)施方式中,4X4預(yù)測(cè)模式搜索方法500包括圖1的步驟115。方法500從將宏塊分成16個(gè)4X4陣列開始(在505)。該方法然后將第一個(gè)4X4 陣列設(shè)置成用于處理的當(dāng)前的4X4陣列(在510)。對(duì)于當(dāng)前的4X4陣列,方法500然后 確定每個(gè)預(yù)測(cè)模式0、1、2、3和4的成本(在515)。該方法確定具有最低成本的預(yù)測(cè)模式 是2。如果是,該方法將預(yù)測(cè)模式2設(shè)置為當(dāng)前的4X4陣列的預(yù)測(cè)模式(在525)。該方法 然后確定是否在宏塊中存在多個(gè)4X4陣列需要處理(在585)。如果是,該方法將下一個(gè) 4X4陣列設(shè)置為當(dāng)前的4X4陣列(在590),并且繼續(xù)步驟515。如果不是,該方法結(jié)束。如果該方法確定具有最低成本的預(yù)測(cè)模式不是預(yù)測(cè)模式2 (在520-否),則該方法 然后確定具有最低成本的預(yù)測(cè)模式是否是預(yù)測(cè)模式0 (在530)。如果是,該方法隨后確定每 個(gè)預(yù)測(cè)模式7、0和5的成本(在535)。該方法然后將(預(yù)測(cè)模式7、0和5中)具有最低成 本的預(yù)測(cè)模式設(shè)置為(在540)當(dāng)前4X4陣列的預(yù)測(cè)模式。該方法然后繼續(xù)步驟585。如果該方法確定具有最低成本的預(yù)測(cè)模式不是預(yù)測(cè)模式0 (在530-否),則該方法 然后確定具有最低成本的預(yù)測(cè)模式是否是預(yù)測(cè)模式1 (在545)。如果是,該方法然后確定每 個(gè)預(yù)測(cè)模式8、1和6的成本(在550)。該方法然后將(預(yù)測(cè)模式8、1和6中)具有最低成 本的預(yù)測(cè)模式設(shè)置為當(dāng)前4X4陣列的預(yù)測(cè)模式(在555)。該方法然后繼續(xù)步驟585。如果該方法確定具有最低成本的預(yù)測(cè)模式不是預(yù)測(cè)模式1 (在545-否),則該方法 然后確定具有最低成本的預(yù)測(cè)模式是否是預(yù)測(cè)模式3 (在560)。如果是,則該方法確定每個(gè)
13預(yù)測(cè)模式7、3和8的成本(在565)。該方法然后將(預(yù)測(cè)模式7、3和8中)具有最低成本 的預(yù)測(cè)模式設(shè)置為當(dāng)前4X4陣列的預(yù)測(cè)模式(在570)。該方法然后繼續(xù)步驟585。如果該方法確定具有最低成本的預(yù)測(cè)模式不是預(yù)測(cè)模式3 (在560-否),則表示具 有最低成本的預(yù)測(cè)模式是預(yù)測(cè)模式4。該方法然后確定每個(gè)預(yù)測(cè)模式5、4和6的成本(在 575)。該方法然后將(預(yù)測(cè)模式5、4和6中)具有最低成本的預(yù)測(cè)模式設(shè)置為當(dāng)前4X4 陣列的預(yù)測(cè)模式(在580)。該方法然后繼續(xù)步驟585。在一些實(shí)施方式中,方法500選擇宏塊的4X4陣列的預(yù)測(cè)模式,其中每個(gè)4X4陣 列的預(yù)測(cè)模式選擇取決于宏塊中一個(gè)或多個(gè)其它4X4陣列的前一個(gè)預(yù)測(cè)模式的選擇。在 這些實(shí)施方式中,宏塊的每個(gè)4X4陣列的預(yù)測(cè)模式的選擇取決于其上方和左側(cè)相鄰4X4 陣列的編碼值(以及從而選定的預(yù)測(cè)模式)。因此,在這些實(shí)施方式中,方法500選擇從左 上部的4X4陣列開始的預(yù)測(cè)模式,接下來(lái)是右側(cè)的,然后是向下的。給出以前選定的上方 和左側(cè)的相鄰的4X4陣列的預(yù)測(cè)模式,方法500隨后選擇當(dāng)前正在處理的4X4陣列的具 有最低成本的預(yù)測(cè)模式(在9種預(yù)測(cè)模式中)。為了這樣做,方法500例如可以計(jì)算最后得 到的組合的總體成本(即16種確定的成本的成本和)。A 可選的預(yù)測(cè)模式搜索算法在可選的實(shí)施方式中,可選的預(yù)測(cè)模式搜索算法執(zhí)行另外一組操作。最初,可選的 搜索算法確定預(yù)測(cè)模式組(0,1,3和4)中具有最低的成本的預(yù)測(cè)模式的序數(shù),其中變量a 用于表示確定的序數(shù)。可選的搜索算法也確定預(yù)測(cè)模式組(0,1,3和4)中具有次最低的成 本的預(yù)測(cè)模式的序數(shù),其中b用于表示確定的序數(shù)。而且,可選的搜索算法確定預(yù)測(cè)模式組 (0,1,2,3和4)中具有最低的成本的預(yù)測(cè)模式的序數(shù),其中變量η用于表示確定的序數(shù)。這些操作可以由以下的等式來(lái)表達(dá)。a = GetInlOfMinCost_a(0,1,3,4)b = GetInlOfSecondMinCost_b(0,1,3,4)η = GetInlOfMinCost(0,1,2,3,4)其中GetlnlOfSecondMinCost是函數(shù),其確定預(yù)測(cè)模式組中(例如,0,1,3和4)中 每個(gè)預(yù)測(cè)模式的成本,并且確定組中的具有次最低成本的預(yù)測(cè)模式的序數(shù)。搜索算法然后執(zhí)行下列操作
If η===2
χ = 2
ElseIf(a,b)==(0,4) or (4,0)
X==GetInlOfMinCost(0,5,4)
ElseIf(a,b)==(4,l)or(l,4)
X==GetInlOfMinCost(4,6,1)
ElseIf(a,b)==(l,3)or(3,l)
X==GetInlOfMinCost(1,8,3)
ElseIf(a,b)==(3,0) or (0,3)
X==GetInlOfMinCost(3,7,0)
Else
X==η
其中χ是最終選定為像素陣列的最優(yōu)預(yù)測(cè)模式(選定的預(yù)測(cè)模式)的預(yù)測(cè)模式的序號(hào)。同樣,可選的搜索算法確定η是否等于2。如果是,選定的搜索模式就是預(yù)測(cè)模式 2。如果η不等于2,可選的搜索算法然后確定是否a等于0并且b等于4或者反之亦然(即 是否a等于4并且b等于0)。如果是,選定的預(yù)測(cè)模式就是具有預(yù)測(cè)模式組(0,5,4)的最 低成本的預(yù)測(cè)模式。如果a等于0并且b等于4或者反之亦然都不是真的,可選的搜索算法然后確定 是否a等于4并且b等于1或者反之亦然。如果是,選定的預(yù)測(cè)模式就是具有預(yù)測(cè)模式組 (4,6,1)的最低成本的預(yù)測(cè)模式。如果a等于4并且b等于1或者反之亦然都不是真的,可選的搜索算法然后確定 是否a等于1并且b等于3或者反之亦然。如果是,選定的預(yù)測(cè)模式就是具有預(yù)測(cè)模式組 (1,8,3)的最低成本的預(yù)測(cè)模式。如果a等于1并且b等于3或者反之亦然不是真的,可選的搜索算法然后確定是 否a等于3并且b等于0或者反之亦然。如果是,選定的預(yù)測(cè)模式就是具有預(yù)測(cè)模式組(3, 7,0)的最低成本的預(yù)測(cè)模式。圖6是可選的4X4預(yù)測(cè)模式搜索方法600的流程圖,其中所述的方法選定宏塊的 4X4陣列的預(yù)測(cè)模式。在一些實(shí)施方式中,4X4預(yù)測(cè)模式搜索方法600包括圖1的步驟 115。方法600從將宏塊分成16個(gè)4X4陣列開始(在605)。該方法然后將第一個(gè)4X4 陣列設(shè)置成用于處理的當(dāng)前的4X4陣列(在610)。對(duì)于當(dāng)前的4X4陣列,方法600然后 確定每個(gè)預(yù)測(cè)模式0、1、2、3和4的成本(在615)。該方法將變量a設(shè)置成等于具有預(yù)測(cè)模 式0、1、3和4中最低成本的預(yù)測(cè)模式的預(yù)測(cè)指數(shù)(在616)。該方法將變量b設(shè)置成等于 具有預(yù)測(cè)模式0、1、3和4中次最低成本的預(yù)測(cè)模式的預(yù)測(cè)模式指數(shù)(在617)。該方法將 變量η設(shè)置成等于具有預(yù)測(cè)模式0、1、2、3和4中最低成本的預(yù)測(cè)模式的預(yù)測(cè)模式指數(shù)(在 618)。該方法確定η是否等于2 (在620)。如果是,則該方法將預(yù)測(cè)模式2設(shè)置成當(dāng)前 4X4陣列的預(yù)測(cè)模式(在625)。該方法然后確定是否在宏塊中存在多個(gè)將被處理的4X4 陣列(在685)。如果是,則該方法將下一個(gè)4X4陣列設(shè)置成當(dāng)前的4X4陣列(在690), 并繼續(xù)步驟615。否則,該方法結(jié)束。如果該方法確定η不等于2(在620-否),則該方法然后確定條件是否(a等于0 并且b等于4或者反之亦然)為真(在630)。如果是,則該方法然后確定預(yù)測(cè)模式0、5和 4的每個(gè)的成本(在635)。該方法然后將(預(yù)測(cè)模式0、5和4中)具有最低成本的預(yù)測(cè)模 式設(shè)置成當(dāng)前4X4陣列的預(yù)測(cè)模式(在640)。該方法然后繼續(xù)到步驟685。如果該方法確定條件(a等于0并且b等于4或者反之亦然)非真(在630-否), 則該方法確定條件(a等于4并且b等于1或者反之亦然)是否為真(在645)。如果是,該 方法然后確定每個(gè)預(yù)測(cè)模式4、6和1的成本(在650)。該方法然后將(預(yù)測(cè)模式4、6和1 中)具有最低成本的預(yù)測(cè)模式設(shè)置成當(dāng)前4X4陣列的預(yù)測(cè)模式(在655)。該方法然后繼 續(xù)到步驟685。如果該方法確定條件(a等于4并且b等于1或者反之亦然)非真(在645_否),則該方法確定條件(a等于1并且b等于3或者反之亦然)是否為真(在660)。如果是,該 方法然后確定每個(gè)預(yù)測(cè)模式1、8和3的成本(在665)。該方法然后將(預(yù)測(cè)模式1、8和3 中)具有最低成本的預(yù)測(cè)模式設(shè)置成當(dāng)前4X4陣列的預(yù)測(cè)模式(在670)。該方法然后繼 續(xù)到步驟685。如果該方法確定條件(a等于1并且b等于3或者反之亦然)非真(在660_否), 則該方法確定條件(a等于3并且b等于0或者反之亦然)是否為真(在672)。如果是, 則該方法然后確定每個(gè)預(yù)測(cè)模式3、7和0的成本(在675)。該方法然后將(預(yù)測(cè)模式3、7 和0中)具有最低成本的預(yù)測(cè)模式設(shè)置成當(dāng)前4X4陣列的預(yù)測(cè)模式(在680)。該方法然 后繼續(xù)到步驟685。如果該方法確定條件(a等于3并且b等于0或者反之亦然)非真(在 672-否),該方法然后將該預(yù)測(cè)模式設(shè)置成等于由變量η (在步驟618確定)所指示的預(yù)測(cè) 模式(在673),即預(yù)測(cè)模式0、1、2、3和4中具有最低成本的預(yù)測(cè)模式。該方法然后繼續(xù)到 步驟685。圖7表示計(jì)算機(jī)系統(tǒng)700,利用該計(jì)算機(jī)系統(tǒng)實(shí)施本發(fā)明的一些實(shí)施方式。計(jì)算機(jī) 系統(tǒng)700包括總線705、處理器710、系統(tǒng)存儲(chǔ)器715、只讀存儲(chǔ)器720、永久存儲(chǔ)設(shè)備725、輸 入設(shè)備730以及輸出設(shè)備735??偩€705總體來(lái)說(shuō)表示所有的系統(tǒng)、外圍設(shè)備以及芯片組總線,其可通信地連接 計(jì)算機(jī)系統(tǒng)700的多個(gè)內(nèi)部設(shè)備。例如,總線705可通信地將處理器710與只讀存儲(chǔ)器720、 系統(tǒng)存儲(chǔ)器715以及永久存儲(chǔ)設(shè)備725相連接。只讀存儲(chǔ)器(R0M)720存儲(chǔ)由處理器710和計(jì)算機(jī)系統(tǒng)的其它模塊所需要的靜態(tài) 數(shù)據(jù)和指令。另一方面,永久存儲(chǔ)設(shè)備725是讀寫存儲(chǔ)設(shè)備。該設(shè)備是非易失性存儲(chǔ)器單 元,即使計(jì)算機(jī)系統(tǒng)700關(guān)閉時(shí)其也存儲(chǔ)有指令和數(shù)據(jù)。一些實(shí)施方式利用海量存儲(chǔ)設(shè)備 (諸如磁盤或光盤及其相應(yīng)的磁盤驅(qū)動(dòng)器)作為永久存儲(chǔ)設(shè)備725。其它的實(shí)施方式利用 可移動(dòng)的存儲(chǔ)設(shè)備(諸如軟盤或zip 盤,及其相應(yīng)的磁盤驅(qū)動(dòng)器)作為永久存儲(chǔ)設(shè)備。和永久存儲(chǔ)設(shè)備725類似,系統(tǒng)存儲(chǔ)器715是讀寫存儲(chǔ)設(shè)備。然而與存儲(chǔ)設(shè)備725 不同的是,系統(tǒng)存儲(chǔ)器是易失性讀寫存儲(chǔ)器,諸如隨機(jī)存取存儲(chǔ)器(RAM)。該系統(tǒng)存儲(chǔ)器存 儲(chǔ)處理器在運(yùn)行期間所需的一些指令和數(shù)據(jù)。實(shí)現(xiàn)一些實(shí)施方式所必需的指令和/或數(shù)據(jù)存儲(chǔ)在系統(tǒng)存儲(chǔ)器715、永久存儲(chǔ)設(shè) 備725、只讀存儲(chǔ)器720或者三者的任意組合中。例如,不同的存儲(chǔ)器單元可以包含用于根 據(jù)一些實(shí)施方式編碼或解碼視頻數(shù)據(jù)流的指令,和/或包括視頻數(shù)據(jù)。為了執(zhí)行一些實(shí)施 方式的處理,處理器710從這些不同的存儲(chǔ)器單元檢索執(zhí)行的指令和處理的數(shù)據(jù)。為了執(zhí) 行一些實(shí)施方式的處理,處理器710從這些不同的存儲(chǔ)器單元檢索執(zhí)行的指令和處理的數(shù) 據(jù)。總線705也連接到輸入和輸出設(shè)備730和735。輸入設(shè)備730可以使得用戶傳遞 信息并選擇給計(jì)算機(jī)系統(tǒng)700的命令。輸入設(shè)備730包括字母數(shù)字鍵盤和光標(biāo)控制器。輸 出設(shè)備735顯示由計(jì)算機(jī)系統(tǒng)700生成的圖像。輸出設(shè)備包括打印機(jī)和顯示設(shè)備,諸如陰 極射線管(CRT)或液晶顯示器(LCD)。最后,如圖7所示,例如通過(guò)網(wǎng)絡(luò)適配器(未示出),總線705也將計(jì)算機(jī)系統(tǒng)700 連接到網(wǎng)絡(luò)765。以這種方式,計(jì)算機(jī)系統(tǒng)700可以是計(jì)算機(jī)網(wǎng)絡(luò)(諸如局域網(wǎng)(“LAN”)、 廣域網(wǎng)(“WAN”)或者企業(yè)內(nèi)部互聯(lián)網(wǎng))或者一種網(wǎng)絡(luò)(諸如因特網(wǎng))的一部分。計(jì)算機(jī)系統(tǒng)700的任何或所有部件可以結(jié)合一些實(shí)施方式一起使用。然而,本領(lǐng)域的普通技術(shù)人 員將理解任何其它的系統(tǒng)配置也可以用在其它的實(shí)施方式中。 根據(jù)多個(gè)特定的細(xì)節(jié)對(duì)本發(fā)明進(jìn)行了說(shuō)明,本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到在不 背離本發(fā)明的精神的情況下,可以以其它特定的形式來(lái)實(shí)現(xiàn)本發(fā)明。例如,以上通過(guò)參照宏 塊對(duì)本發(fā)明的多個(gè)實(shí)施方式進(jìn)行了描述。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到這些實(shí)施方式可 以用在任何其它的像素陣列中。
權(quán)利要求
一種用于編碼視頻圖片中的像素塊的方法,其中,所述像素塊包括多個(gè)子塊,所述方法包括針對(duì)所述像素塊中的每個(gè)子塊,使用預(yù)測(cè)模式來(lái)計(jì)算失真值,該失真值基于子塊的原始像素值與從所述像素塊的邊界像素組導(dǎo)出的該子塊的預(yù)測(cè)值組之間的差;以及在所述像素塊的所有子塊的所有所述失真值都滿足預(yù)定閾值失真值時(shí),使用所述預(yù)測(cè)模式來(lái)編碼所述像素塊。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述預(yù)測(cè)模式是第一預(yù)測(cè)模式,所述失真值是第 一失真值,并且所述預(yù)測(cè)值組是第一預(yù)測(cè)值組,所述方法還包括在確定所述第一失真值不全滿足所述預(yù)定閾值失真值時(shí),使用第二預(yù)測(cè)模式來(lái)計(jì)算所 述像素塊中每個(gè)子塊的第二失真值;以及當(dāng)所述像素塊的所有子塊的第二失真值滿足所述預(yù)定閾值失真值時(shí),使用所述第二預(yù) 測(cè)模式來(lái)編碼所述像素塊。
3.根據(jù)權(quán)利要求2所述的方法,其中,在確定所述第二失真值不全滿足所述預(yù)定閾值 失真值時(shí),使用第三預(yù)測(cè)模式來(lái)編碼所述像素塊。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述第三預(yù)測(cè)模式指定的所述像素塊的分區(qū)尺 寸小于所述第二預(yù)測(cè)模式指定的分區(qū)尺寸。
5.根據(jù)權(quán)利要求1所述的方法,其中,所述邊界像素組包括所述像素塊的與所述子塊 垂直或水平對(duì)準(zhǔn)的邊界上的像素。
6.根據(jù)權(quán)利要求1所述的方法,其中,針對(duì)每個(gè)子塊使用所述預(yù)測(cè)模式來(lái)計(jì)算失真值 包括基于所述預(yù)測(cè)模式來(lái)識(shí)別所述像素塊的邊界像素組;通過(guò)使用所識(shí)別出的所述像素塊的邊界像素組,導(dǎo)出子塊的預(yù)測(cè)值組;以及基于所述子塊的原始像素值與導(dǎo)出的所述子塊的預(yù)測(cè)值組之間的差,來(lái)計(jì)算所述失真值。
7.根據(jù)權(quán)利要求6所述的方法,其中,由所述預(yù)測(cè)模式識(shí)別的邊界像素組包括所述像 素塊的最左列中的像素。
8.根據(jù)權(quán)利要求6所述的方法,其中,由所述預(yù)測(cè)模式識(shí)別的邊界像素組包括所述像 素塊的最上一行中的像素。
9.根據(jù)權(quán)利要求6所述的方法,其中,預(yù)測(cè)值是從由所述預(yù)測(cè)模式識(shí)別的邊界像素組 的平均值導(dǎo)出的。
10.根據(jù)權(quán)利要求1所述的方法,其中,所述像素塊包括16X16個(gè)像素,其中所述像素 塊中的每個(gè)子塊包括4 X 4個(gè)像素。
11.一種用于編碼視頻圖片中的像素塊的設(shè)備,其中,所述像素塊包括多個(gè)子塊,所述 設(shè)備包括用于針對(duì)所述像素塊中的每個(gè)子塊,使用預(yù)測(cè)模式來(lái)計(jì)算失真值的裝置,該失真值基 于子塊的原始像素值與從所述像素塊的邊界像素組導(dǎo)出的該子塊的預(yù)測(cè)值組之間的差;以 及用于在所述像素塊的所有子塊的所有所述失真值都滿足預(yù)定閾值失真值時(shí),使用所述 預(yù)測(cè)模式來(lái)編碼所述像素塊的裝置。
12.根據(jù)權(quán)利要求11所述的設(shè)備,其中,所述預(yù)測(cè)模式是第一預(yù)測(cè)模式,所述失真值是 第一失真值,并且所述預(yù)測(cè)值組是第一預(yù)測(cè)值組,所述設(shè)備還包括用于在確定所述第一失真值不全滿足所述預(yù)定閾值失真值時(shí),使用第二預(yù)測(cè)模式來(lái)計(jì) 算所述像素塊中每個(gè)子塊的第二失真值的裝置;以及用于當(dāng)所述像素塊的所有子塊的第二失真值滿足所述預(yù)定閾值失真值時(shí),使用所述第 二預(yù)測(cè)模式來(lái)編碼所述像素塊的裝置。
13.根據(jù)權(quán)利要求12所述的設(shè)備,還包括用于在確定所述第二失真值不全滿足所述 預(yù)定閾值失真值時(shí),使用第三預(yù)測(cè)模式來(lái)編碼所述像素塊的裝置。
14.根據(jù)權(quán)利要求13所述的設(shè)備,其中,所述第三預(yù)測(cè)模式指定的所述像素塊的分區(qū) 尺寸小于所述第二預(yù)測(cè)模式指定的分區(qū)尺寸。
15.根據(jù)權(quán)利要求11所述的設(shè)備,其中,所述邊界像素組包括所述像素塊的與所述子 塊垂直或水平對(duì)準(zhǔn)的邊界上的像素。
16.根據(jù)權(quán)利要求11所述的設(shè)備,其中,針對(duì)每個(gè)子塊使用所述預(yù)測(cè)模式來(lái)計(jì)算失真 值包括基于所述預(yù)測(cè)模式來(lái)識(shí)別所述像素塊的邊界像素組;通過(guò)使用所識(shí)別出的所述像素塊的邊界像素組,導(dǎo)出子塊的預(yù)測(cè)值組;以及基于所述子塊的原始像素值與導(dǎo)出的所述子塊的預(yù)測(cè)值組之間的差,來(lái)計(jì)算所述失真值。
17.根據(jù)權(quán)利要求16所述的設(shè)備,其中,由所述預(yù)測(cè)模式識(shí)別的邊界像素組包括所述 像素塊的最左列中的像素。
18.根據(jù)權(quán)利要求16所述的設(shè)備,其中,由所述預(yù)測(cè)模式識(shí)別的邊界像素組包括所述 像素塊的最上一行中的像素。
19.根據(jù)權(quán)利要求11所述的設(shè)備,其中,預(yù)測(cè)值是從由所述預(yù)測(cè)模式識(shí)別的邊界像素 組的平均值導(dǎo)出的。
20.根據(jù)權(quán)利要求11所述的設(shè)備,其中,所述像素塊包括16X16個(gè)像素,其中所述像素 塊中的每個(gè)子塊包括4X4個(gè)像素。
全文摘要
本發(fā)明涉及對(duì)編碼視頻數(shù)據(jù)選擇編碼類型和預(yù)測(cè)模式。在本發(fā)明中,提供了一種用于確定視頻幀的宏塊的編碼類型和預(yù)測(cè)模式的方法。在一些實(shí)施方式中,一般的方法1)基于容易計(jì)算的宏塊的屬性利用編碼類型選擇算法選擇最初為宏塊考慮的編碼類型,即16×16或4×4,2)如果在步驟1選擇了16×16編碼類型,則基于失真閾值,利用傳統(tǒng)的方法或者改進(jìn)的16×16預(yù)測(cè)模式搜索算法,考慮可以用在宏塊上的四種16×16預(yù)測(cè)模式,3)如果在步驟1中選擇了4×4編碼類型,則基于預(yù)測(cè)模式之間的位置關(guān)系,利用傳統(tǒng)的方法或者改進(jìn)的4×4預(yù)測(cè)模式搜索算法,選擇4×4預(yù)測(cè)模式用于宏塊的16個(gè)4×4模塊的每個(gè)。
文檔編號(hào)H04N7/32GK101945280SQ201010286538
公開日2011年1月12日 申請(qǐng)日期2005年6月27日 優(yōu)先權(quán)日2004年6月27日
發(fā)明者童歆, 聶小春 申請(qǐng)人:蘋果公司