專利名稱:用于視頻編解碼器的選擇性的和/或可縮放的復(fù)雜度控制的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及數(shù)字圖像處理領(lǐng)域,具體而言,涉及視頻編碼和解碼領(lǐng)域。
背景技術(shù):
隨著提高通信信道的數(shù)據(jù)容量的發(fā)展,視頻圖像通過無線或有線通信信道的發(fā)送已經(jīng)成為可能。此外,已經(jīng)建立了各種標(biāo)準(zhǔn),使得利用具有數(shù)字存儲(chǔ)介質(zhì)的電子設(shè)備,諸如移動(dòng)電話、個(gè)人計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA),以及其他電子設(shè)備進(jìn)行視頻圖像的發(fā)送和接收更加便利。能夠使視頻圖像通過通信信道進(jìn)行發(fā)送的一些視頻標(biāo)準(zhǔn)例如運(yùn)動(dòng)圖像專家組-1(MPEG-1)、MPEG-2和MPEG-4、國際電信聯(lián)盟(ITU)H.264,這些都是由國際標(biāo)準(zhǔn)化組織(ISO)公布的。
為了提供這種視頻服務(wù),原始圖像必須以一種不超過通信信道的數(shù)據(jù)容量的方式進(jìn)行壓縮。但是,執(zhí)行壓縮的方式不應(yīng)該犧牲接收器處的圖像的感知質(zhì)量。
為了平衡這兩種矛盾的需求,許多視頻編碼器使用變換編碼技術(shù)與運(yùn)動(dòng)補(bǔ)償技術(shù)相結(jié)合來壓縮原始圖像。變換編碼技術(shù)用于去除空間冗余,而運(yùn)動(dòng)補(bǔ)償技術(shù)用于去除時(shí)間冗余。
本領(lǐng)域技術(shù)人員廣泛了解使用變換編碼和運(yùn)動(dòng)補(bǔ)償技術(shù)的原始圖像壓縮是計(jì)算密集的。執(zhí)行壓縮所需的指令的數(shù)目以MIPS(每秒百萬指令)測量是非常巨大的,并且可能消耗本來可以分配給其他應(yīng)用的硬件資源。由于通常希望在小的、便攜式的電子設(shè)備中執(zhí)行壓縮,所以限制了執(zhí)行這些壓縮技術(shù)的硬件資源。因此,需要降低視頻編碼器的MIPS需求而不過度地降低視頻圖像的感知質(zhì)量。
發(fā)明內(nèi)容
本發(fā)明提出了多種方法和裝置來解決上述需要。一方面,提出了一種用于對(duì)視頻幀的一部分進(jìn)行分類的方法,包括使用所述部分中的紋理信息來確定所述部分是否至多包含預(yù)定空間信息量;以及如果該紋理信息指示所述部分至多包含該預(yù)定空間信息量,則將所述部分分類為非預(yù)測的。
另一方面,提出了一種用于對(duì)視頻幀的一部分進(jìn)行分類的方法,包括使用所述部分中的紋理信息來確定所述部分是否至多包含預(yù)定空間信息量;如果該紋理信息指示所述部分至多包含該預(yù)定空間信息量,那么將所述部分分類為非預(yù)測的;如果該紋理信息指示所述部分不至多包含預(yù)定空間信息量,那么執(zhí)行運(yùn)動(dòng)估計(jì)搜索;使用運(yùn)動(dòng)估計(jì)搜索期間所確定的運(yùn)動(dòng)信息來確定所述部分是否至少包含預(yù)定預(yù)測信息量;如果該運(yùn)動(dòng)信息指示所述部分至少包含該預(yù)定預(yù)測信息量,那么將所述部分分類為預(yù)測的;以及如果該運(yùn)動(dòng)信息指示所述部分不至少包含該預(yù)定預(yù)測信息量,那么將所述部分分類為非預(yù)測的。
另一方面,提出了一種用于使用非預(yù)測編碼或預(yù)測編碼對(duì)當(dāng)前宏塊進(jìn)行選擇性編碼的方法,包括使用當(dāng)前宏塊的紋理信息來確定是否對(duì)當(dāng)前宏塊進(jìn)行非預(yù)測編碼;以及使用當(dāng)前宏塊的運(yùn)動(dòng)信息來確定是否對(duì)當(dāng)前宏塊進(jìn)行預(yù)測編碼。
另一方面,提出了一種用于選擇性地降低視頻編解碼器的處理周期的方法,包括接收配置信號(hào);并且根據(jù)該配置信號(hào)配置復(fù)雜度控制算法中的至少一個(gè)變量,其中該復(fù)雜度控制算法用于基于紋理信息選擇性地增加預(yù)測視頻幀的非預(yù)測編碼部分的數(shù)目。
在另一方面,提出了一種用于選擇性地降低視頻編解碼器的處理周期的裝置,包括第一復(fù)雜度控制元件,用于使用當(dāng)前宏塊的紋理信息來確定是否對(duì)當(dāng)前宏塊進(jìn)行非預(yù)測編碼;以及第二復(fù)雜度控制元件,用于使用當(dāng)前宏塊的運(yùn)動(dòng)信息來確定是否對(duì)當(dāng)前宏塊進(jìn)行預(yù)測編碼。
在另一方面,提出了一種用于對(duì)視頻幀的一部分進(jìn)行分類的裝置,包括至少一個(gè)存儲(chǔ)器元件;以及至少一個(gè)處理元件,用于執(zhí)行存儲(chǔ)在該至少一個(gè)存儲(chǔ)器元件中的指令集合,該指令集合用于使用所述部分中的紋理信息來確定所述部分是否至多包含預(yù)定空間信息量;如果該紋理信息指示所述部分至多包含該預(yù)定空間信息量,那么將所述部分分類為非預(yù)測的;如果該紋理信息指示所述部分不至多包含預(yù)定空間信息量,那么執(zhí)行運(yùn)動(dòng)估計(jì)搜索;使用運(yùn)動(dòng)估計(jì)搜索期間所確定的運(yùn)動(dòng)信息來確定所述部分是否至少包含預(yù)定預(yù)測信息量;如果該運(yùn)動(dòng)信息指示所述部分至少包含該預(yù)定預(yù)測信息量,那么將所述部分分類為預(yù)測的;以及如果該運(yùn)動(dòng)信息指示所述部分不至少包含該預(yù)定預(yù)測信息量,那么將所述部分分類為非預(yù)測的。
另一方面,提出了一種用于使用非預(yù)測編碼或預(yù)測編碼選擇性地對(duì)當(dāng)前宏塊進(jìn)行編碼的裝置,包括用于使用當(dāng)前宏塊的紋理信息來確定是否對(duì)當(dāng)前宏塊進(jìn)行非預(yù)測編碼的模塊;以及用于使用當(dāng)前宏塊的運(yùn)動(dòng)信息來確定是否對(duì)當(dāng)前宏塊進(jìn)行預(yù)測編碼的模塊。
另一方面,提出了一種用于選擇性地降低視頻編解碼器的處理周期的裝置,包括用于接收配置信號(hào)的模塊;以及用于根據(jù)該配置信號(hào)配置復(fù)雜度控制算法中的至少一個(gè)變量的模塊,其中該復(fù)雜度控制算法用于基于紋理信息選擇性地增加預(yù)測視頻幀的非預(yù)測編碼部分的數(shù)目。
另一方面,提出了一種用于對(duì)視頻幀的一部分進(jìn)行分類的裝置,包括模塊使用所述部分中的紋理信息來確定所述部分是否至多包含預(yù)定空間信息量;以及如果該紋理信息指示所述部分至多包含該預(yù)定空間信息量,將所述部分分類為非預(yù)測的。
圖1A和1B是視頻編碼器所使用的常規(guī)視頻壓縮方案的流程圖;圖2是常規(guī)視頻編碼器的方框圖;圖3是說明用于視頻壓縮的選擇性復(fù)雜度控制算法的流程圖;圖4是說明用于視頻壓縮的另一選擇性復(fù)雜度控制算法的流程圖;圖5是說明用于視頻壓縮的另一選擇性復(fù)雜度控制算法的流程圖;圖6是說明具有復(fù)雜度控制元件的視頻編碼器的方框圖。
具體實(shí)施例方式
新一代視頻壓縮標(biāo)準(zhǔn)利用視頻圖像的現(xiàn)象來降低編碼復(fù)雜度。視頻只是在時(shí)間上快速并連續(xù)播放的一系列稱為幀的靜止圖像。可以觀察到,一些視頻幀與鄰近幀空間相異,而一些視頻幀與鄰近幀空間和時(shí)間相異。因此,大多數(shù)視頻壓縮標(biāo)準(zhǔn)對(duì)“幀內(nèi)(intraframe)”和“幀間(interframe)”執(zhí)行不同的編碼技術(shù),其中幀內(nèi)是具有空間信息的幀,幀間是具有空間和時(shí)間信息的幀。預(yù)測編碼通常用于包含空間和時(shí)間信息的幀。為了便于說明,這里將幀內(nèi)稱為I幀,將幀間稱為P幀。為了編碼I幀和P幀,典型的視頻編解碼器將對(duì)圖像幀的宏塊進(jìn)行操作,而不是對(duì)圖像幀整體進(jìn)行操作。利用四分之一通用中間格式(QCIF)的標(biāo)準(zhǔn)大小,一個(gè)塊包括8×8的像素組,而一個(gè)宏塊包括16×16的像素組。一個(gè)176×144像素的QCIF幀具有99個(gè)宏塊。
圖1A是說明I幀宏塊的編碼的流程圖。在步驟100,I幀宏塊內(nèi)的像素經(jīng)歷變換編碼。在步驟110,對(duì)變換的系數(shù)進(jìn)行量化。在步驟120,將量化的系數(shù)進(jìn)行無損編碼以用于發(fā)送。由于MPEG-4中標(biāo)準(zhǔn)化的變換編碼技術(shù)是離散余弦變換(DCT),這里使用DCT對(duì)實(shí)施例進(jìn)行描述。但是,本領(lǐng)域技術(shù)人員可以認(rèn)識(shí)到這些實(shí)施例并不局限于DCT,而是能夠用于使用其他變換編碼技術(shù)的視頻編碼器中。通常將DCT選擇為視頻編碼標(biāo)準(zhǔn)的變換編碼,這是由于可以將大量能量包裝在相對(duì)小數(shù)目的系數(shù)中。
I幀宏塊的解碼包括圖1A中的過程的逆,其中接收到的信息被無損解碼、反量化、然后使用步驟100所使用的變換的逆來進(jìn)行變換。
I幀宏塊的編碼過程相對(duì)直接并且不是計(jì)算密集的。對(duì)I幀編碼需要大量比特,而這又需要大量存儲(chǔ)空間用于發(fā)送帶寬。因此,這種編碼處理更消耗存儲(chǔ)器,而不是處理器周期。根據(jù)圖1A所示的方法對(duì)全部視頻流進(jìn)行編碼將是低效的,這是由于發(fā)送信道不能夠攜帶每秒傳送多個(gè)幀所需要的比特總數(shù)。例如,在電路切換陸線電話系統(tǒng)中,通信信道物理地局限于64k比特/秒。但是,例如當(dāng)根據(jù)通用中間格式(CIF)以15幀每秒編碼視頻流時(shí),這種比特率對(duì)于合成具有可接受的感知質(zhì)量的視頻流的目標(biāo)來說是不夠的。
與I幀相反,P幀還包含時(shí)間信息,其能夠與空間信息一起使用來預(yù)測地降低需要存儲(chǔ)在存儲(chǔ)器中的比特?cái)?shù)。在低速運(yùn)動(dòng)行為的視頻記錄中,一個(gè)幀和下一幀之間的像素的差異較小。由于很少或者沒有運(yùn)動(dòng),所以有可能使用關(guān)于前面和/或后面的幀的信息來預(yù)測當(dāng)前幀將顯示什么。編碼并發(fā)送當(dāng)前幀可能包含的內(nèi)容的預(yù)測,而不是編碼和發(fā)送當(dāng)前幀的所有比特,這降低了需要存儲(chǔ)或發(fā)送的比特?cái)?shù)。但是,P幀的編碼是計(jì)算昂貴的,這是由于計(jì)算殘留幀所需的估計(jì)計(jì)算的數(shù)目引起的。
圖1B是說明P幀宏塊的編碼的流程圖。在步驟140,使用運(yùn)動(dòng)估計(jì)技術(shù)確定P幀內(nèi)的像素塊之間的平移運(yùn)動(dòng)。運(yùn)動(dòng)通常建模為運(yùn)動(dòng)矢量??梢詫?duì)塊組,即宏塊進(jìn)行比較,以確定每個(gè)P幀的多個(gè)運(yùn)動(dòng)矢量。注意,由于為每個(gè)塊執(zhí)行最優(yōu)運(yùn)動(dòng)矢量的搜索,所以搜索運(yùn)動(dòng)矢量是計(jì)算昂貴的。在布驟150,將運(yùn)動(dòng)矢量用于預(yù)測運(yùn)動(dòng)補(bǔ)償后的宏塊。在步驟160,從當(dāng)前宏塊減去運(yùn)動(dòng)補(bǔ)償后的宏塊以形成殘留宏塊。在步驟170,對(duì)殘留宏塊進(jìn)行變換,對(duì)變換后的殘留宏塊的系數(shù)進(jìn)行量化,然后無損地編碼。由于殘留宏塊比原始P幀的宏塊攜帶更少的信息,所以需要發(fā)送到接收方的比特?cái)?shù)量減少。
典型地,視頻編解碼器將選擇每個(gè)第N幀作為I幀進(jìn)行編碼,其余作為P幀進(jìn)行編碼。I幀之間的持續(xù)時(shí)間稱為“幀內(nèi)周期(intra-period)”。I幀的存在作為刷新P幀的基準(zhǔn)。換句話說,I幀的存在保證編解碼器所做出的預(yù)測不偏離實(shí)際圖像太遠(yuǎn)。在指定的P幀內(nèi),視頻編解碼器還周期性地選擇特定宏塊作為基準(zhǔn)宏塊,這些基準(zhǔn)宏塊不被預(yù)測編碼,以便基準(zhǔn)宏塊還可用于校正偏離的預(yù)測。為了便于說明,基準(zhǔn)宏塊在這里稱為“幀內(nèi)宏塊(intra-MB)”,被預(yù)測編碼的宏塊在這里稱為“幀間宏塊(inter-MB)”。
圖2是由電子設(shè)備中的常規(guī)視頻編解碼器所執(zhí)行的編碼的方框圖。該編解碼器中的信號(hào)通道取決于輸入圖像信號(hào)是I幀還是P幀,或者,P幀內(nèi)的宏塊是基準(zhǔn)宏塊(幀內(nèi)宏塊)還是預(yù)測編碼的宏塊(幀間宏塊)。為了便于說明,以下利用術(shù)語幀內(nèi)宏塊和幀間宏塊來描述P幀的編碼。如果輸入圖像信號(hào)是幀內(nèi)宏塊,那么開關(guān)200建立通過DCT塊202、量化器塊204以及無損編碼塊206的通道。信號(hào)離開視頻編解碼器以在電子設(shè)備內(nèi)進(jìn)行進(jìn)一步的處理。進(jìn)一步的處理例如在比特流編碼塊208處進(jìn)行編碼,該比特流編碼塊208將信號(hào)編碼為適合發(fā)送介質(zhì)的適當(dāng)?shù)陌l(fā)送格式。
盡管幀內(nèi)宏塊編碼在塊204處結(jié)束,但是幀內(nèi)宏塊需要用作幀間宏塊編碼的基準(zhǔn)宏塊。因此,離開量化器塊204的量化值也進(jìn)入視頻編解碼器的解碼部分210。解碼部分210包括反量化器塊212和反DCT塊214。量化值通過反量化器塊212和反DCT塊214以重構(gòu)幀內(nèi)宏塊,其用于刷新由運(yùn)動(dòng)補(bǔ)償塊230和運(yùn)動(dòng)估計(jì)塊232所訪問的緩沖器222。通過DCT塊202、量化器塊204以及無損編碼塊206的通道也適用于對(duì)幀間宏塊編碼所產(chǎn)生的殘留宏塊進(jìn)行編碼。
如果輸入圖像信號(hào)是幀間宏塊,那么開關(guān)200建立一條新的信號(hào)通道,其包括運(yùn)動(dòng)補(bǔ)償塊230和運(yùn)動(dòng)估計(jì)塊232。運(yùn)動(dòng)估計(jì)塊232從緩沖器222接收當(dāng)前幀間宏塊和一組存儲(chǔ)的基準(zhǔn)宏塊,在多個(gè)運(yùn)動(dòng)矢量中執(zhí)行搜索以尋找最好地描述當(dāng)前幀間宏塊和基準(zhǔn)宏塊之間的運(yùn)動(dòng)的運(yùn)動(dòng)矢量。注意,基準(zhǔn)宏塊是存儲(chǔ)的從視頻編解碼器的解碼部分210輸出的前面或后面宏塊的重構(gòu)像素。然后將運(yùn)動(dòng)矢量輸入到運(yùn)動(dòng)補(bǔ)償塊230。
運(yùn)動(dòng)補(bǔ)償塊230從運(yùn)動(dòng)補(bǔ)償塊230接收運(yùn)動(dòng)矢量,從緩沖器222接收基準(zhǔn)宏塊,以根據(jù)基準(zhǔn)宏塊生成新的預(yù)測宏塊,即當(dāng)前幀間宏塊的預(yù)測版本。當(dāng)幀間宏塊編碼出現(xiàn)時(shí),更新基準(zhǔn)宏塊。這樣,開關(guān)240“開”,以便加法元件220將預(yù)測宏塊加到從解碼部分210輸出的解碼后的殘留宏塊上。將結(jié)果作為新的基準(zhǔn)宏塊存儲(chǔ)在緩沖器222中。
減法元件224從當(dāng)前幀間宏塊減去來自運(yùn)動(dòng)補(bǔ)償塊230的預(yù)測宏塊,以形成殘留宏塊。然后按照上述幀內(nèi)宏塊編碼的處理對(duì)殘留宏塊進(jìn)行處理。量化、變換后的殘留宏塊還通過解碼部分210,以便殘留宏塊可被視頻編解碼器使用來更新存儲(chǔ)在緩沖器222中的基準(zhǔn)宏塊,而該更新的基準(zhǔn)宏塊又能夠被運(yùn)動(dòng)補(bǔ)償塊230和運(yùn)動(dòng)估計(jì)塊232訪問,以對(duì)未來或過去幀的宏塊進(jìn)行編碼。注意,預(yù)測編碼技術(shù)可以是雙向的,其中過去的信息可以用于預(yù)測當(dāng)前幀或者未來的信息可以用于預(yù)測當(dāng)前幀。
幀內(nèi)宏塊的編碼一般還可以稱為空間編碼或非預(yù)測編碼。幀間宏塊的編碼一般還可以稱為預(yù)測編碼。圖2的常規(guī)視頻編解碼器設(shè)計(jì)的問題在于非預(yù)測編碼消耗太多的存儲(chǔ)資源以及預(yù)測編碼消耗太多的處理資源。如果本領(lǐng)域技術(shù)人員決定需要降低MIPS需求以執(zhí)行其他任務(wù),那么提高I幀或幀內(nèi)宏塊的數(shù)目是一種可能的解決方案,其通過減小幀內(nèi)周期值N來實(shí)現(xiàn)。但是,這種解決方案具有缺陷,因?yàn)閷?duì)存儲(chǔ)資源的需求將會(huì)相應(yīng)地增加。此外,視頻圖像通過通信信道的總體發(fā)送速率將會(huì)增加,這是由于與預(yù)測信息相比,需要更多比特傳送空間信息。對(duì)于無線應(yīng)用,諸如通過蜂窩電話的視頻流,如果無線或陸線通信信道不能適應(yīng)增加的發(fā)送比特率的話,發(fā)送比特的增加可能導(dǎo)致合成圖像信號(hào)的惡化。
相反地,如果本領(lǐng)域技術(shù)人員認(rèn)為存儲(chǔ)資源有限,那么一種解決方案是執(zhí)行更多的預(yù)測編碼而不是非預(yù)測編碼,這通過增加幀內(nèi)周期值N來實(shí)現(xiàn)。但是,預(yù)測編碼需要更多處理元件的周期,所述處理元件如果負(fù)荷超過最大閾值的話,將會(huì)放棄幀處理任務(wù)以進(jìn)行具有更高優(yōu)先級(jí)的任務(wù)。放棄的幀使合成圖像的質(zhì)量惡化。此外,只要高速活動(dòng)出現(xiàn)在圖像中,合成信號(hào)的質(zhì)量也將惡化,這是因?yàn)槭褂锰囝A(yù)測編碼的幀可能引起視頻編解碼器的運(yùn)動(dòng)估計(jì)能力出現(xiàn)失效。
這里所描述的實(shí)施例用于選擇性地控制P幀編碼過程的計(jì)算復(fù)雜度。選擇性地控制編碼過程將允許對(duì)視頻編碼的MIPS需求的降低,而不使視頻圖像的感知質(zhì)量過度降級(jí)。此外,本實(shí)施例還降低了處理元件和其他硬件之間的數(shù)據(jù)通信量,從而節(jié)省了能量。
本實(shí)施例用于將P幀內(nèi)的宏塊分類為幀內(nèi)宏塊或者幀間宏塊,其中對(duì)幀內(nèi)宏塊進(jìn)行非預(yù)測編碼,對(duì)幀間宏塊進(jìn)行預(yù)測編碼。分類過程包括使用選擇準(zhǔn)則,該準(zhǔn)則將降低對(duì)于處理元件的MIPS需求。
圖3、4和5是說明用于P幀編碼的選擇性復(fù)雜度控制的實(shí)施例的流程圖??梢耘渲糜布T如數(shù)字信號(hào)處理器或其他處理元件和存儲(chǔ)器元件,來運(yùn)行用于執(zhí)行圖3、4或5中的方法步驟的指令。
在圖3中說明了一種選擇性復(fù)雜度控制過程,其用于使用紋理信息和運(yùn)動(dòng)信息來確定宏塊被編碼為幀內(nèi)宏塊還是幀間宏塊。在步驟300,為P幀內(nèi)的每個(gè)宏塊執(zhí)行紋理比特的估計(jì)。紋理比特是具有圖像信息的幀中的那些比特,需要它們來編碼圖像的像素值。在步驟310,基于紋理比特估計(jì)來確定宏塊是幀內(nèi)宏塊還是幀間宏塊。根據(jù)本實(shí)施例的一個(gè)方面,那些具有最少量紋理信息,即最少編碼比特需求,的宏塊被指定為幀內(nèi)宏塊。
如果宏塊是幀內(nèi)宏塊,那么程序流進(jìn)行到步驟390,在步驟390將幀內(nèi)宏塊編碼為非預(yù)測信息幀。注意,出現(xiàn)了運(yùn)動(dòng)估計(jì)和補(bǔ)償計(jì)算的選擇性旁路。
如果在步驟310確定宏塊是幀間宏塊,那么程序流進(jìn)行到步驟320。在步驟320,執(zhí)行整數(shù)像素運(yùn)動(dòng)估計(jì)搜索。在步驟330,確定衡量預(yù)測過程的效率的運(yùn)動(dòng)信息。例如,可以使用過去宏塊和未來宏塊的像素之間的差別來檢測當(dāng)前預(yù)測的效率。因此,像素差可以用作質(zhì)量度量來測量時(shí)間預(yù)測的效率。也可以使用其他質(zhì)量度量而不影響本在步驟340,對(duì)于宏塊是幀內(nèi)宏塊還是幀間宏塊做出另一確定,其中所述確定使用步驟320得到的運(yùn)動(dòng)信息。如果根據(jù)基于運(yùn)動(dòng)的準(zhǔn)則將宏塊確定為幀內(nèi)宏塊,那么程序流進(jìn)行到步驟390,在步驟390將幀內(nèi)宏塊編碼為I幀。換句話說,使用非預(yù)測編碼來編碼幀內(nèi)宏塊。
如果根據(jù)步驟340的基于運(yùn)動(dòng)的判定仍將宏塊分類為幀間宏塊,那么程序流進(jìn)行到步驟350。在步驟350,執(zhí)行運(yùn)動(dòng)補(bǔ)償。在步驟360,對(duì)殘留圖像信號(hào)進(jìn)行變換、量化和無損編碼。
在上述實(shí)施例的一個(gè)方面中,可以通過使用方差來估計(jì)紋理比特,確定宏塊是幀內(nèi)宏塊還是幀間宏塊。在這個(gè)方面,計(jì)算宏塊的方差。然后將計(jì)算的方差與前面幀的平均方差進(jìn)行比較。注意,大的方差表示圖像中有更多的紋理。如果當(dāng)前宏塊的方差小于前面幀的縮放的平均方差,那么將宏塊指定為幀內(nèi)宏塊。因此,如果(A<αB),其中A是當(dāng)前宏塊的方差,α是用作縮放因子的經(jīng)驗(yàn)閾值,B是前面幀的平均方差,或者,多個(gè)前面幀的加權(quán)平均,那么圖3中所述的實(shí)施例將變成選擇性的和可縮放的復(fù)雜度控制算法,因?yàn)棣量梢詣?dòng)態(tài)調(diào)整或保持靜態(tài)。在一個(gè)實(shí)施例中,可以設(shè)計(jì)處理元件來實(shí)施選擇性的和可縮放的復(fù)雜度控制算法,其中算法的閾值對(duì)應(yīng)于給定目標(biāo)??膳渲玫拈撝档慕Y(jié)果是,完成目標(biāo)所需的幀內(nèi)宏塊和/或幀間宏塊的數(shù)目可以縮放。
在一個(gè)方面,可以實(shí)施復(fù)雜度控制算法以適應(yīng)具有不同圖像大小和/或幀速率的視頻流。在另一方面,可以實(shí)施復(fù)雜度控制算法以適應(yīng)易于出現(xiàn)信道差錯(cuò)的可變傳輸信道。在另一方面,可以實(shí)施復(fù)雜度控制算法以適應(yīng)用戶定義的質(zhì)量測量。在另一方面,可以實(shí)施復(fù)雜度控制算法以適應(yīng)硬件資源的缺乏。如這里所述,實(shí)施例可以用于適應(yīng)許多不同的需求,這些不同的需求可能來自安裝有視頻編解碼器的電子設(shè)備的不同部分。配置信號(hào)可以來自電子設(shè)備的任何部分,或者,配置信號(hào)可以來自電子設(shè)備所訪問的網(wǎng)絡(luò)。
圖4是說明用于P幀編碼的選擇性復(fù)雜度控制的另一實(shí)施例的流程圖,其中確定是否使用額外的處理資源對(duì)宏塊進(jìn)行編碼。在步驟400,對(duì)于P幀內(nèi)的每個(gè)宏塊執(zhí)行紋理比特的估計(jì)。在步驟410,基于紋理比特估計(jì)確定宏塊是幀內(nèi)宏塊還是幀間宏塊。在本實(shí)施例的一個(gè)方面中,將那些具有最少量的紋理信息,即最少編碼比特需求,的宏塊指定為幀內(nèi)宏塊。
如果宏塊是幀內(nèi)宏塊,那么程序流進(jìn)行到步驟490,在步驟490,使用非預(yù)測編碼對(duì)幀內(nèi)宏塊進(jìn)行編碼。注意,出現(xiàn)了運(yùn)動(dòng)估計(jì)和補(bǔ)償計(jì)算的選擇性旁路。
如果宏塊是幀間宏塊,那么程序流進(jìn)行到步驟420。在步驟420,執(zhí)行整數(shù)像素運(yùn)動(dòng)估計(jì)搜索。在步驟430,確定運(yùn)動(dòng)信息。在步驟440,使用步驟430得到的運(yùn)動(dòng)信息,對(duì)于宏塊是幀內(nèi)宏塊還是幀間宏塊做出另一確定。如果宏塊是幀內(nèi)宏塊,那么程序流進(jìn)行到步驟490,在步驟490使用非預(yù)測編碼對(duì)幀內(nèi)宏塊進(jìn)行編碼。
如果根據(jù)基于運(yùn)動(dòng)的判定仍然將宏塊分類為幀間宏塊,那么程序流進(jìn)行到步驟450。在步驟450,進(jìn)行質(zhì)量測量。在本實(shí)施例的一個(gè)方面中,質(zhì)量測量是絕對(duì)距離值之和(SAD),其中絕對(duì)距離值是當(dāng)前宏塊和前面宏塊之間的絕對(duì)差。在步驟460,確定是否選擇性旁路分?jǐn)?shù)像素運(yùn)動(dòng)估計(jì)步驟。分?jǐn)?shù)像素運(yùn)動(dòng)估計(jì)是整數(shù)像素運(yùn)動(dòng)估計(jì)的一種細(xì)分。可以通過兩個(gè)整數(shù)值像素之間的內(nèi)插來確定分?jǐn)?shù)像素值。因此,可以計(jì)算出半像素、四分之一像素、八分之一像素或者任何分?jǐn)?shù)像素值。
如果步驟460決定不需要分?jǐn)?shù)像素運(yùn)動(dòng)搜索,那么程序流進(jìn)行到步驟480。如果決定需要分?jǐn)?shù)像素運(yùn)動(dòng)搜索,那么程序流進(jìn)行到步驟470。
在步驟470,執(zhí)行分?jǐn)?shù)像素運(yùn)動(dòng)估計(jì)搜索。在步驟480,執(zhí)行運(yùn)動(dòng)補(bǔ)償。在步驟490,對(duì)殘留圖像信號(hào)進(jìn)行變換、量化和無損編碼。
在上述實(shí)施例中,基于質(zhì)量測量來確定是否應(yīng)該選擇性地旁路分?jǐn)?shù)像素運(yùn)動(dòng)估計(jì)搜索。在該實(shí)施例的一個(gè)方面中,質(zhì)量測量是絕對(duì)距離值之和(SAD)??梢詫⒃揝AD值與前面幀的平均最小SAD值進(jìn)行比較。如果當(dāng)前SAD值小于縮放后的平均最小SAD值,那么可以將分?jǐn)?shù)像素運(yùn)動(dòng)估計(jì)搜索旁路而不損失質(zhì)量。因此,如果(C<λD),其中C是當(dāng)前SAD值,λ是用作縮放因子的經(jīng)驗(yàn)閾值,D是前面幀的平均最小SAD值,或者是多個(gè)前面和/或后面幀的加權(quán)平均,那么圖4中描述的實(shí)施例將變成選擇性的和可縮放的復(fù)雜度控制算法,這是因?yàn)棣丝梢詣?dòng)態(tài)調(diào)整或保持靜態(tài)。
圖5是說明用于P幀編碼的選擇性的和可縮放的復(fù)雜度控制的另一實(shí)施例的另一流程圖,其中對(duì)是否將各種不同的運(yùn)動(dòng)估計(jì)方案一起實(shí)現(xiàn)進(jìn)行確定。在步驟500,確定質(zhì)量度量,其中所述質(zhì)量度量測量時(shí)間預(yù)測的效率。在一個(gè)方面中,質(zhì)量度量基于SAD值。可以將SAD值與前面和/或后面幀的平均最小SAD值進(jìn)行比較。如果當(dāng)前SAD值小于縮放后的平均最小SAD值,那么可以將分?jǐn)?shù)像素運(yùn)動(dòng)估計(jì)搜索旁路而不損失質(zhì)量。因此,如果(C<λD),其中C是當(dāng)前SAD值,λ是用作縮放因子的經(jīng)驗(yàn)閾值,D是前面和/或后面幀的平均最小SAD值,那么圖5中描述的實(shí)施例將變成選擇性的和可縮放的復(fù)雜度控制算法,這是因?yàn)棣丝梢詣?dòng)態(tài)調(diào)整或保持靜態(tài)。
在步驟510,基于步驟500確定的質(zhì)量度量來確定是否選擇性地旁路分?jǐn)?shù)像素運(yùn)動(dòng)估計(jì)步驟。如果步驟510決定不需要分?jǐn)?shù)像素運(yùn)動(dòng)搜索,那么程序流進(jìn)行到步驟580。如果決定需要分?jǐn)?shù)像素運(yùn)動(dòng)搜索,那么程序流進(jìn)行到步驟570。
在步驟570,執(zhí)行分?jǐn)?shù)像素運(yùn)動(dòng)估計(jì)搜索。在步驟580,執(zhí)行運(yùn)動(dòng)補(bǔ)償。在步驟590,對(duì)殘留圖像信號(hào)進(jìn)行變換、量化和無損編碼。
注意,前述用于選擇性的和可縮放的復(fù)雜度控制算法的實(shí)施例允許用戶或系統(tǒng)設(shè)置將每個(gè)P幀指定為幀內(nèi)宏塊還是幀間宏塊的保證百分比。換句話說,本實(shí)施例可以用于選擇性地執(zhí)行P幀內(nèi)的非預(yù)測或預(yù)測編碼,這相當(dāng)于節(jié)省視頻編解碼器內(nèi)的處理元件的大量MIPS。本實(shí)施例能夠節(jié)省MIPS而不犧牲感知質(zhì)量,這是由于使用圖像信息來執(zhí)行非預(yù)測或預(yù)測編碼的選擇,而不是任意指定。此外,由于視頻流固有地是可變比特率源,所以,當(dāng)準(zhǔn)備通過可變速率發(fā)送介質(zhì)發(fā)送的視頻流時(shí),將每個(gè)預(yù)測幀內(nèi)的一定百分比的宏塊選定為非預(yù)測的能力實(shí)質(zhì)上提供了控制等級(jí)。
圖6是配置來使用至少一個(gè)復(fù)雜度控制元件來選擇性地降低視頻編碼器的MIPS需求的視頻編解碼器的功能方框圖。
圖6中的復(fù)雜度控制元件稱為MIPS控制1、MIPS控制2和MIPS控制3。復(fù)雜度控制元件通信地耦合到視頻編解碼器的功能部分,并且可能包括專用的或通用的處理元件。MIPS控制2可以被配置來實(shí)施圖3中描述的實(shí)施例。MIPS控制3可以被配置來實(shí)施圖4中描述的實(shí)施例。MIPS控制1可以被配置來實(shí)施圖5中描述的實(shí)施例。MIPS控制1、2或3根據(jù)這里描述的復(fù)雜度控制算法的原理,將P幀的宏塊指定為幀內(nèi)宏塊或者幀間宏塊。注意,如果MIPS控制2和3都存在的話,MIPS控制1的存在可能是冗余的,反之亦然??梢詫?shí)施MIPS控制1來控制MIPS控制2和/或3的使用。MIPS控制1可以實(shí)施在視頻編解碼器自身內(nèi)或者與視頻編解碼器相分離。此外,MIPS控制1可以被配置來對(duì)來自電子設(shè)備的其他部分的配置信號(hào)進(jìn)行響應(yīng)。
本領(lǐng)域技術(shù)人員可以理解結(jié)合這里公開的實(shí)施例進(jìn)行描述的各種說明性邏輯塊、模塊、電路以及算法步驟可以被實(shí)施為電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合。為了清楚地描述硬件和軟件的這種可交換性,上面已經(jīng)就其功能性對(duì)各種說明性組件、塊、模塊、電路以及步驟進(jìn)行了一般地描述。這種功能性實(shí)施為硬件還是軟件取決于實(shí)行到整個(gè)系統(tǒng)上的特殊應(yīng)用和設(shè)計(jì)限制。熟練的技術(shù)人員可以以各種方式為每個(gè)特殊應(yīng)用實(shí)施所述的功能性,但是不能將這種實(shí)施決定解釋為偏離本發(fā)明的范圍。
結(jié)合這里公開的實(shí)施例進(jìn)行描述的各種說明性邏輯塊、模塊以及電路可以利用設(shè)計(jì)來執(zhí)行這里描述的功能的通用處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)或其他可編程邏輯設(shè)備、分立門或晶體管邏輯、分立硬件組件、或他們的任何組合來實(shí)施或執(zhí)行。通用處理器可以是微處理器,但是或者,處理器可以是任何常規(guī)處理器、控制器、微控制器或者狀態(tài)機(jī)。處理器也可以實(shí)施為計(jì)算設(shè)備的組合,例如,DSP和微處理器的組合、多個(gè)微處理器的組合、一個(gè)或多個(gè)微處理器和DSP內(nèi)核的組合、或者任意其他這種配置。
結(jié)合這里公開的實(shí)施例進(jìn)行描述的方法或算法的步驟可以直接實(shí)現(xiàn)在硬件中、由處理器執(zhí)行的軟件模塊中或者二者的結(jié)合中。軟件模塊可以位于RAM存儲(chǔ)器、閃存、ROM存儲(chǔ)器、EPROM存儲(chǔ)器、EEPROM存儲(chǔ)器、寄存器、硬盤、可換式磁盤、CD-ROM或者本技術(shù)領(lǐng)域中已知的任何其他形式的存儲(chǔ)介質(zhì)中。一種示例性存儲(chǔ)介質(zhì)耦合到處理器,以使處理器能夠從存儲(chǔ)介質(zhì)讀出信息以及將信息寫入存儲(chǔ)介質(zhì)?;蛘?,存儲(chǔ)介質(zhì)可以與處理器集成在一起。處理器和存儲(chǔ)介質(zhì)可以形成在ASIC中。該ASIC可以位于用戶終端中?;蛘?,處理器和存儲(chǔ)介質(zhì)可以作為分立元件位于用戶終端中。
提供了公開的實(shí)施例的前述描述以使得任何本領(lǐng)域技術(shù)人員能夠做出或者使用本發(fā)明。對(duì)本領(lǐng)域技術(shù)人員來說對(duì)這些實(shí)施例的各種變形都是很明顯的,在不偏離本發(fā)明的精神或范圍的情況下,這里所定義的一般原理也可以應(yīng)用到其他實(shí)施例中。因此本發(fā)明并不局限于這里所示的實(shí)施例,而且旨在符合與這里所公開的原理和新穎特征相一致的最廣的范圍。
權(quán)利要求
1.用于對(duì)視頻幀的一部分進(jìn)行分類的方法,包括使用所述部分中的紋理信息來確定所述部分是否至多包含預(yù)定空間信息量;以及如果所述紋理信息指示所述部分至多包含所述預(yù)定空間信息量,那么將所述部分分類為非預(yù)測的。
2.如權(quán)利要求1所述的方法,其中所述紋理信息包括紋理比特。
3.如權(quán)利要求1所述的方法,其中使用所述視頻幀的所述部分的方差值來確定所述紋理信息。
4.如權(quán)利要求3所述的方法,其中所述預(yù)定空間信息量是至少另一視頻幀的平均方差值。
5.如權(quán)利要求3所述的方法,其中所述預(yù)定空間信息量是至少另一視頻幀的縮放后的平均方差值。
6.用于對(duì)視頻幀的一部分進(jìn)行分類的方法,包括使用所述部分中的紋理信息來確定所述部分是否至多包含預(yù)定空間信息量;如果所述紋理信息指示所述部分至多包含所述預(yù)定空間信息量,那么將所述部分分類為非預(yù)測的;如果所述紋理信息指示所述部分不至多包含預(yù)定空間信息量,那么執(zhí)行運(yùn)動(dòng)估計(jì)搜索;使用所述運(yùn)動(dòng)估計(jì)搜索期間所確定的運(yùn)動(dòng)信息來確定所述部分是否至少包含預(yù)定預(yù)測信息量;如果所述運(yùn)動(dòng)信息指示所述部分至少包含所述預(yù)定預(yù)測信息量,那么將所述部分分類為預(yù)測的;以及如果所述運(yùn)動(dòng)信息指示所述部分不至少包含所述預(yù)定預(yù)測信息量,那么將所述部分分類為非預(yù)測的。
7.如權(quán)利要求6所述的方法,其中所述紋理信息包括紋理比特。
8.如權(quán)利要求6所述的方法,其中使用所述視頻幀的所述部分的方差值來確定所述紋理信息。
9.如權(quán)利要求8所述的方法,其中所述預(yù)定空間信息量是至少另一視頻幀的平均方差值。
10.如權(quán)利要求8所述的方法,其中所述預(yù)定空間信息量是至少另一視頻幀的縮放后的平均方差值。
11.如權(quán)利要求6所述的方法,其中運(yùn)動(dòng)信息包括所述視頻幀的所述部分和至少另一視頻幀的至少另一部分之間的像素差。
12.用于使用非預(yù)測編碼或預(yù)測編碼選擇性地對(duì)當(dāng)前宏塊進(jìn)行編碼的方法,包括使用所述當(dāng)前宏塊的紋理信息來確定是否對(duì)所述當(dāng)前宏塊進(jìn)行非預(yù)測編碼;以及使用所述當(dāng)前宏塊的運(yùn)動(dòng)信息來確定是否對(duì)所述當(dāng)前宏塊進(jìn)行預(yù)測編碼。
13.如權(quán)利要求12所述的方法,其中使用所述當(dāng)前宏塊的紋理信息來確定是否對(duì)所述當(dāng)前宏塊進(jìn)行非預(yù)測編碼包括確定所述當(dāng)前宏塊的方差值;將所述當(dāng)前宏塊的所述方差值與至少一個(gè)其他視頻幀的宏塊的縮放后的方差值進(jìn)行比較;以及如果所述當(dāng)前宏塊的所述方差值小于至少一個(gè)其他視頻幀的所述宏塊的所述縮放后的方差值,那么確定對(duì)所述當(dāng)前宏塊進(jìn)行非預(yù)測編碼。
14.如權(quán)利要求13所述的方法,其中至少一個(gè)其他視頻幀的所述宏塊的所述縮放后的方差值是縮放后的平均方差。
15.如權(quán)利要求12所述的方法,其中使用所述當(dāng)前宏塊的運(yùn)動(dòng)信息來確定是否對(duì)所述當(dāng)前宏塊進(jìn)行預(yù)測編碼包括確定所述當(dāng)前宏塊和另一視頻幀的宏塊之間的像素差;以及如果所述當(dāng)前宏塊和另一視頻幀的所述宏塊之間的所述像素差小于一可配置的閾值,那么確定為利用增強(qiáng)的精度來對(duì)所述當(dāng)前宏塊進(jìn)行預(yù)測編碼。
16.如權(quán)利要求12所述的方法,其中使用所述當(dāng)前宏塊的運(yùn)動(dòng)信息來確定是否對(duì)所述當(dāng)前宏塊進(jìn)行預(yù)測編碼包括確定所述當(dāng)前宏塊和至少一個(gè)其他視頻幀的宏塊之間的絕對(duì)距離值之和;以及如果所述絕對(duì)距離值之和小于至少一個(gè)其他視頻幀的宏塊的縮放后的平均最小絕對(duì)距離值之和,那么確定為利用增強(qiáng)的精度來對(duì)所述當(dāng)前宏塊進(jìn)行預(yù)測編碼。
17.如權(quán)利要求16所述的方法,其中所述縮放后的平均最小絕對(duì)距離值之和是可配置的。
18.用于選擇性地降低視頻編解碼器的處理周期的方法,包括接收配置信號(hào);以及根據(jù)所述配置信號(hào)配置復(fù)雜度控制算法中的至少一個(gè)變量,其中所述復(fù)雜度控制算法用于基于紋理信息選擇性地增加預(yù)測視頻幀的非預(yù)測編碼部分的數(shù)目。
19.如權(quán)利要求18所述的方法,其中所述配置信號(hào)傳送圖像大小信息。
20.如權(quán)利要求18所述的方法,其中所述配置信號(hào)傳送傳輸幀速率信息。
21.如權(quán)利要求18所述的方法,其中所述配置信號(hào)傳送用戶命令。
22.如權(quán)利要求18所述的方法,其中所述配置信號(hào)傳送關(guān)于可用硬件資源的信息。
23.用于選擇性地降低視頻編解碼器的處理周期的裝置,包括第一復(fù)雜度控制元件,用于使用當(dāng)前宏塊的紋理信息來確定是否對(duì)所述當(dāng)前宏塊進(jìn)行非預(yù)測編碼;以及第二復(fù)雜度控制元件,用于使用所述當(dāng)前宏塊的運(yùn)動(dòng)信息來確定是否對(duì)所述當(dāng)前宏塊進(jìn)行預(yù)測編碼。
24.用于選擇性地降低視頻編解碼器的處理周期的裝置,包括復(fù)雜度控制元件,用于接收配置信號(hào),并且根據(jù)所述配置信號(hào)來配置復(fù)雜度控制算法中的至少一個(gè)變量,其中所述復(fù)雜度控制算法用于基于紋理信息選擇性地增加預(yù)測視頻幀的非預(yù)測編碼部分的數(shù)目。
25.用于對(duì)視頻幀的一部分進(jìn)行分類的裝置,包括至少一個(gè)存儲(chǔ)器元件;以及至少一個(gè)處理元件,用于運(yùn)行存儲(chǔ)在所述至少一個(gè)存儲(chǔ)器元件中的指令集合,所述指令集合用于使用所述部分中的紋理信息來確定所述部分是否至多包含預(yù)定空間信息量;如果所述紋理信息指示所述部分至多包含所述預(yù)定空間信息量,那么將所述部分分類為非預(yù)測的;如果所述紋理信息指示所述部分不至多包含預(yù)定空間信息量,那么執(zhí)行運(yùn)動(dòng)估計(jì)搜索;使用所述運(yùn)動(dòng)估計(jì)搜索期間所確定的運(yùn)動(dòng)信息來確定所述部分是否至少包含預(yù)定預(yù)測信息量;如果所述運(yùn)動(dòng)信息指示所述部分至少包含所述預(yù)定預(yù)測信息量,那么將所述部分分類為預(yù)測的;以及如果所述運(yùn)動(dòng)信息指示所述部分不至少包含所述預(yù)定預(yù)測信息量,那么將所述部分分類為非預(yù)測的。
26.用于使用非預(yù)測編碼或者預(yù)測編碼選擇性地對(duì)當(dāng)前宏塊進(jìn)行編碼的裝置,包括用于使用所述當(dāng)前宏塊的紋理信息來確定是否對(duì)所述當(dāng)前宏塊進(jìn)行非預(yù)測編碼的模塊;以及用于使用所述當(dāng)前宏塊的運(yùn)動(dòng)信息來確定是否對(duì)所述當(dāng)前宏塊進(jìn)行預(yù)測編碼的模塊。
27.用于選擇性地降低視頻編解碼器的處理周期的裝置,包括用于接收配置信號(hào)的模塊;以及用于根據(jù)所述配置信號(hào)來配置復(fù)雜度控制算法中的至少一個(gè)變量的模塊,其中所述復(fù)雜度控制算法用于基于紋理信息選擇性地增加預(yù)測視頻幀的非預(yù)測編碼部分的數(shù)目。
28.用于對(duì)視頻幀的一部分進(jìn)行分類的裝置,包括模塊,該模塊用于使用所述部分中的紋理信息來確定所述部分是否至多包含預(yù)定空間信息量,并且如果所述紋理信息指示所述部分至多包含所述預(yù)定空間信息量,將所述部分分類為非預(yù)測的。
全文摘要
本發(fā)明提出了多種方法和裝置,用于執(zhí)行視頻編解碼器的選擇性的和/或可縮放的復(fù)雜度控制,以便可以提高或降低視頻編解碼器所消耗的處理資源量?;趶?fù)雜度控制算法中設(shè)定的可配置閾值,可以選擇性地實(shí)施視頻編解碼器的非預(yù)測和預(yù)測編碼部分??膳渲瞄撝涤糜诖_定視頻幀中是否存在希望的空間信息量,諸如紋理信息或運(yùn)動(dòng)信息。
文檔編號(hào)H04N7/26GK1879418SQ200480033477
公開日2006年12月13日 申請日期2004年11月15日 優(yōu)先權(quán)日2003年11月13日
發(fā)明者哈立德·厄勒-馬萊, 黃昊 申請人:高通股份有限公司