專利名稱:執(zhí)行可縮放的分層運(yùn)動估算的裝置與方法
這是1997年12月31日提交的申請?zhí)?9/002,258的部分繼續(xù)申請。
本發(fā)明一般地涉及一種用于編碼圖象序列的系統(tǒng),而更具體地涉及執(zhí)行分層的基于塊的具有高度縮放性(scalability)的運(yùn)動估算的裝置及伴生的方法。
諸如電視圖象序列等圖象序列通常包含圖象幀或畫面序列。再現(xiàn)包含運(yùn)動物體的電視通常需要每秒30個圖象幀的幀速度,各幀有可能包含超過一兆字節(jié)的信息。結(jié)果,傳輸或存儲這些圖象序列需要大量傳輸帶寬或存儲容量,為了減少必需的傳輸帶寬或存儲容量,將幀序列壓縮從而不存儲或傳輸序列內(nèi)的冗余信息。電視、電視會議及CD-ROM的存檔為能從高效視頻序列編碼中受益的應(yīng)用實(shí)例。
通常,為了編碼圖象序列,關(guān)于從一幀到下一幀的場景中的物體的運(yùn)動的信息在編碼過程中扮演重要的角色。由于在大多數(shù)圖象序列內(nèi)的接連的幀之間存在著高冗余度,可采用稱作運(yùn)動估算/補(bǔ)償?shù)募夹g(shù)達(dá)到顯著的數(shù)據(jù)壓縮。簡言之,編碼器只對相對于已編碼的區(qū)位移了的區(qū)的差進(jìn)行編碼。即,運(yùn)動估算是當(dāng)前幀中的一個區(qū)(如塊或宏塊)相對于一或多個參照幀的運(yùn)動的方向與幅度(運(yùn)動矢量)的確定過程。而運(yùn)動補(bǔ)償是利用運(yùn)動矢量來生成當(dāng)前幀的預(yù)測(預(yù)測圖象)的過程。當(dāng)前幀與預(yù)測幀之間的差得出殘余信號(誤差信號),它包含比當(dāng)前幀本身明顯地少的信息。從而,通過只編碼及傳輸殘余信號及對應(yīng)的運(yùn)動矢量實(shí)現(xiàn)了編碼位的明顯節(jié)省。
然而,編碼器設(shè)計人員必須解決試圖提高運(yùn)動估算過程的精度來減小殘余信號(即減少編碼位)還是接收運(yùn)動估算過程中較低的精度級來減少計算開銷的兩分法問題。即,從幀序列確定運(yùn)動矢量需要在幀之間徹底的搜索來確定運(yùn)動信息。越徹底的搜索以更多的計算周期為代價生成越精確的運(yùn)動矢量集合。
為了說明,一些系統(tǒng)利用所謂基于塊的方法確定運(yùn)動信息。在簡單的基于塊的方法中,將當(dāng)前幀分成若干象素塊(此后稱作“當(dāng)前塊”)。對于各當(dāng)前塊,在前面的幀中的選定的搜索區(qū)內(nèi)進(jìn)行搜索與當(dāng)前塊“最佳”匹配的象素塊。這一搜索通常是通過重復(fù)地將選擇的當(dāng)前塊與前一幀中選定的搜索區(qū)中類似大小的象素塊進(jìn)行比較來完成的。然而,用這一窮盡搜索法來確定運(yùn)動矢量是計算密集的,尤其是當(dāng)搜索區(qū)特別大時。
作為替代,其它運(yùn)動估算方法包含分層運(yùn)動估算(HME)的概念,其中將圖象分解成多分辨率構(gòu)架,即金字塔形。然后執(zhí)行分層運(yùn)動矢量搜索,搜索從金字塔的最低分辨率向最高分辨率進(jìn)行。雖然HME已表明為快速與高效的運(yùn)動估算方法,金字塔的生成仍招致可觀的計算周期量。
此外,上述運(yùn)動估算法不是容易地可縮放的。即這些運(yùn)動估算法的系統(tǒng)結(jié)構(gòu)并不向用戶或編碼器提供帶有可改變比例或切換到不同的系統(tǒng)結(jié)構(gòu)來計及可獲得的計算資源與/或用戶的選擇的靈活性。
因此,在本技術(shù)中存在著對具有高度可量測性的分層的基于塊的運(yùn)動估算的裝置及伴生的方法的需求。
發(fā)明概述本發(fā)明的實(shí)施例為用于執(zhí)行具有高度可縮放性的分層的基于塊的運(yùn)動估算裝置及方法。本可縮放的分層運(yùn)動估算系統(tǒng)結(jié)構(gòu)按照可利用的平臺資源與/或用戶選擇提供從一位/象素切換到8位/象素表示的靈活性。
更具體地,本發(fā)明的將圖象序列內(nèi)的各圖象幀分解成M元金字塔,如四層二元金字塔。將表示象素值的不同動態(tài)范圍用于二元金字塔的不同層上,借此生成多個不同的“P位”層。
例如,在M元金字塔的最高層上用8位來表示各象素值(8位/象素(P=8)),而在M元金字塔的所有其它層上則用一位來表示各象素值(1位/象素(P=1))。可縮放的分層運(yùn)動估算是通過改變M元金字塔的層的動態(tài)范圍達(dá)到的,即實(shí)現(xiàn)8位象素層與一位層的不同組合來產(chǎn)生可變復(fù)雜性的多個M元金字塔。從而,可將分層運(yùn)動估算的可量測性實(shí)現(xiàn)成對計算復(fù)雜性、存儲器需求與/或通信帶寬敏感的,借此提供諸如平臺自適應(yīng)編碼與計算等特征。
附圖的簡要說明通過考慮下面結(jié)合附圖的詳細(xì)描述便能容易地理解本發(fā)明的內(nèi)容,附圖中
圖1示出本發(fā)明的編碼器的框圖;圖2示出在為基于塊的運(yùn)動估算確定運(yùn)動矢量中降低計算復(fù)雜性的方法的流程圖;圖3示出通用平均金字塔的框圖;圖4示出生成M元金字塔的量化過程的框圖;圖5示出已分割及分類成多塊的輸入幀;圖6示出本發(fā)明的編碼系統(tǒng);圖7示出帶多尺度瓦片的象素塊的框圖;圖8示出本發(fā)明的裝置的第二實(shí)施例的框圖;圖9示出子波樹的圖形表示;圖10示出生成圖象的M元金字塔的方法的流程圖;圖11示出在M元金字塔上執(zhí)行可縮放的運(yùn)動估計的方法的流程圖;以及圖12示出多個不同M元金字塔系統(tǒng)結(jié)構(gòu)的框圖。
詳細(xì)說明圖1描繪本發(fā)明的用于為基于塊的運(yùn)動估算確定運(yùn)動矢量中降低計算復(fù)雜性的裝置100的框圖。下面用編碼器描述本發(fā)明的較佳實(shí)施例,但應(yīng)理解本發(fā)明能用在一般圖象處理系統(tǒng)中。此外,本發(fā)明能用在符合各種編碼標(biāo)準(zhǔn)的編碼器中。這些標(biāo)準(zhǔn)包括,但不限于,運(yùn)動圖像專家組標(biāo)準(zhǔn)(如MPEG-1(11172-*)與MPEG-2(13818-*)、H.216及H.263。
裝置100為一編碼器或更復(fù)雜的基于塊的運(yùn)動補(bǔ)償編碼系統(tǒng)的一部分。裝置100包括運(yùn)動估算模塊140、運(yùn)動補(bǔ)償模塊150、可選用的分段模塊151、預(yù)處理模塊120、速率控制模塊130、變換模塊(如DCT模塊)160、量化模塊170、編碼器(如可變長度編碼模塊)180、緩沖器190、逆量化模塊175、逆變換模塊(如逆DCT模塊)165、減法器115及加法器155。雖然編碼器100包括多個模塊,熟悉本技術(shù)的人員會理解不需要將各種模塊所執(zhí)行的功能隔離成圖1中所示的獨(dú)立模塊。例如,通常將包含運(yùn)動補(bǔ)償模塊150、逆量化模塊175與逆DCT模塊165的模塊組稱作“嵌入解碼器”。
圖1示出路徑110上的被按照MPEG標(biāo)準(zhǔn)數(shù)字化及表示成亮度與兩個色度差信號(Y、Cr、Cb)的輸入圖象(圖象序列)。進(jìn)一步將這些信號分成多層,使各畫面(幀)由多個宏塊表示。各宏塊包括四個亮度塊、一個Cr塊及一個Cb塊,其中一塊定義為一個8×8的樣本陣列。將畫面分成塊單位改進(jìn)了分辨兩個接連的畫面之間的變化的能力并通過消除低幅變換系數(shù)改進(jìn)了圖象壓縮(下面討論)。
下面的公開內(nèi)容使用MPEG標(biāo)準(zhǔn)術(shù)語;然而,應(yīng)理解本發(fā)明中的名詞宏塊或塊旨在描述任何大小或形狀的用作編碼基礎(chǔ)的象素塊。廣義地說,“宏塊”可小到單個象素或大到整個視頻幀。
在較佳實(shí)施例中,數(shù)字化輸入圖象信號在預(yù)處理模塊120中經(jīng)受一或多個預(yù)處理步驟。更具體地,預(yù)處理模塊120包括M元金字塔發(fā)生器122及塊分類器124。M元金字塔發(fā)生器122采用平均濾波器123a與量化器123b將各幀濾波與量化成多種不同分辨率,即分辨率的M元金字塔,其中各幀的不同分辨率是以下述分層方式關(guān)聯(lián)的。塊分類器124能用分辨率金字塔將區(qū)(塊)快速分類成高活動性或低活動性區(qū)。下面提供對預(yù)處理模塊120所執(zhí)行的功能的詳細(xì)描述。
還將路徑110上的輸入圖象接收到運(yùn)動估算模塊140中用于估算運(yùn)動矢量。運(yùn)動矢量為運(yùn)動補(bǔ)償用來提供從當(dāng)前畫面中的塊的坐標(biāo)位置到參照幀中的坐標(biāo)的位移的二維矢量。運(yùn)動矢量的使用通過減少在信道上傳輸?shù)男畔⒘繕O大地增進(jìn)了圖象壓縮,因?yàn)橹痪幋a和傳輸當(dāng)前幀內(nèi)的變化。在較佳實(shí)施例中,運(yùn)動估算模塊140還接收來自預(yù)處理模塊120的信息來增強(qiáng)運(yùn)動估算過程的性能。
運(yùn)動補(bǔ)償模塊150接收來自運(yùn)動估算模塊140的運(yùn)動矢量用于改進(jìn)樣本值的預(yù)測效率。運(yùn)動補(bǔ)償涉及利用運(yùn)動矢量來提供到包含前面解碼的樣本值的過去與/或未來參照幀中的位移的預(yù)測,并用來形成預(yù)測誤差。即,運(yùn)動補(bǔ)償模塊150利用前面解碼的幀與運(yùn)動矢量在路徑152上構(gòu)成當(dāng)前幀的估算(運(yùn)動補(bǔ)償?shù)念A(yù)測或預(yù)測圖象)。通過減法器115從路徑110上當(dāng)前宏塊中的輸入圖象中減去這一運(yùn)動補(bǔ)償預(yù)測以在路徑153上形成誤差信號或預(yù)測殘余。
將預(yù)測殘余信號傳遞給變換模塊,如DCT模塊160。DCT模塊于是在各預(yù)測殘余信號塊上作用前向離散余弦變換過程來生成一組DCT系數(shù)的8×8的塊。離散余弦變換為可逆的離散正交變換,其中的DCT系數(shù)表示一組余弦基函數(shù)的幅值。
量化(Q)模塊170接收得出的8×8DCT系數(shù)塊,在其中量化這些DCT系數(shù)。量化過程通過用一組量化值或尺度去除這些DCT系數(shù)并適當(dāng)?shù)厣崛氤烧麛?shù)值而降低表示DCT系數(shù)的精度??墒褂酶鶕?jù)基函數(shù)的能見度標(biāo)準(zhǔn)為各DCT系數(shù)單個地設(shè)定量化值(稱作視覺上加權(quán)的量化)。通過用這一值量化DCT系數(shù),將許多DCT系數(shù)轉(zhuǎn)換成零,借此改進(jìn)圖象壓縮效率。
接著,諸如可變長度編碼模塊180等編碼器通過信號連接線171接收得出的量化DCT系數(shù)的8×8塊,在其中以“Z字形”次序掃描量化系數(shù)的二維塊將其轉(zhuǎn)換成量化DCT系數(shù)的一維串。然后可變長度編碼(VLC)模塊180編碼量化DCT系數(shù)串及諸如宏塊類型與運(yùn)動矢量等宏塊的所有從屬信息。從而VLC模塊180執(zhí)行將輸入圖象轉(zhuǎn)換成有效數(shù)據(jù)流的最后步驟。
將該數(shù)據(jù)流接收到緩沖器中,諸如“先進(jìn)先出”(FIFO)緩沖器190。采用不同畫面類型與可變長度編碼的結(jié)果在于總體位率是可變的。即,用來編碼各幀的位數(shù)可以是不同的。從而,在包含固定速率信道的應(yīng)用中,利用FIFO緩沖器將編碼器輸出與信道匹配來平滑位率。從而,來自FIFO緩沖器190的路徑195上的輸出信號為輸入圖象110的壓縮表示,將其發(fā)送到存儲介質(zhì)或電信信道。
速率控制模塊130用于監(jiān)視及調(diào)節(jié)進(jìn)入FIFO緩沖器190的數(shù)據(jù)流的位速率以防止在數(shù)據(jù)流傳輸之后在解碼器(在接收機(jī)或目標(biāo)存儲設(shè)備內(nèi),未示出)側(cè)上的上溢或下溢。固定速率信道假定在恒定的速率上將數(shù)據(jù)位帶給解碼器(未示出)內(nèi)的輸入緩沖器。在畫面速率所確定的有規(guī)律的間隔上,解碼器從其輸入緩沖器中瞬時移走下一畫面的所有位。如果輸入緩沖器中的位太少,即尚未收到下一畫面所有的位,則輸入緩沖器下溢而導(dǎo)致出錯。類似地如果輸入緩沖器中有太多的位,即在畫面開始之間超過了輸入緩沖器的容量,則輸入緩沖器上溢而導(dǎo)致上溢錯誤。從而,速率控制模塊130的任務(wù)為監(jiān)視緩沖器190的狀態(tài)來控制編碼器生成的位數(shù),借此防止上溢與下溢狀態(tài)。速率控制方法可通過調(diào)節(jié)量化級來控制編碼位數(shù)。
此外,逆量化模塊175與逆DCT模塊165通過信號連接線172接收來自量化模塊170的得出的量化DCT系數(shù)的8×8塊。簡言之,在這一級上,編碼器通過解碼數(shù)據(jù)再生圖象序列的I幀與P幀,以便為以后的編碼將它們用作參照幀。
圖2示出在為基于塊的運(yùn)動估算確定運(yùn)動矢量中降低計算復(fù)雜性的方法200的流程圖。即,方法200通過快速定義其中可能出現(xiàn)匹配的初始搜索區(qū)而增強(qiáng)基于塊的運(yùn)動估算方法。
更具體地,方法200在步驟205中開始并進(jìn)行到步驟210,在其中為圖象序列中的各圖象幀生成M元金字塔(或M元平均金字塔)。下面參照圖3、4與10提供生成M元金字塔的方法的詳細(xì)說明。
更具體地,圖10示出為圖象生成M元金字塔的方法1000的流程圖。該方法開始于步驟1005并進(jìn)行到步驟1010,在其中將原始圖象分解成圖3中所示的圖象的平均金字塔。
圖3示出通用平均金字塔300的框圖,其中該平均金字塔包括多層310、320與330。最低層310為來自圖象序列的具有多個用X表示的象素311的原始圖象幀。通常,這些象素是用具有被分配來表示象素值的位的數(shù)目限制的動態(tài)范圍的象素值表示的。例如,如果分配8位,則象素值可取256個可能值之一的值。
在平均金字塔中,下一個較高層是通過低通濾波并且在兩個方向上都用因子2下抽樣生成的,從而來自較低層中的四個象素值(子女)生成較高層的單一象素值(雙親)。這示出在圖3中,其中利用每一組4個象素312a-d生成層320中的單個象素值321。依次,利用4個象素值的組322a生成層330中的單個象素值331,以此類推。應(yīng)理解,本發(fā)明不限于具有三層的平均金字塔。層數(shù)通常受圖象的大小及選擇用來生成下一個較低分辨率圖象的下抽樣因子的限制。從而,可為特定應(yīng)用選擇平均金字塔的層數(shù)。
在平均金字塔中,雙親象素值是通過取其四個子女象素值的平均值導(dǎo)出的,因此稱作平均金字塔。然而,可用其它測度或度量生成其它類型的金字塔,例如測度可基于四個子女象素值的中值,作為替代,可用加權(quán)平均子女象素周圍的較大區(qū)域來獲得一般低通金字塔。為了本發(fā)明的目的,可將具有一組金字塔形圖象的這些不同類型的金字塔的每一種(諸如平均金字塔、中值金字塔、低通金字塔等)廣義地分類為“圖象金字塔”。從這一圖象金字塔,生成M元金字塔。
返回到圖10,然后方法1000在步驟1020中從所述平均金字塔生成M元金字塔。即,在一“M元金字塔”中,將象素值量化成使各量化的象素值只能取“M”個可能的象素值,如下面圖4中所示。例如,如果M等于2,則各量化象素值只能取值0或1,即,得出“二元金字塔”。
從而,將表示象素值的不同動態(tài)范圍用于二元金字塔的不同層上,從而生成多個不同的“P位”層。此外,具有8位/象素的M元金字塔的層稱作8位層(在圖12中示出為“E”層),而具有1位/象素(如布爾型)的M元金字塔的層稱作1位層(在圖12中示出為“O”層),從而,上面討論的平均金字塔300包括多個“E”層。下面進(jìn)一步討論這些“E”與“O”層的區(qū)別及組合使用。
圖4示出生成其中M等于3的三元金字塔的量化過程的框圖。更具體地,根據(jù)子女與雙親象素之間的差,將8位象素值255(410a)量化成兩位象素值10(420a)。即,計算雙親430a與其各子女410a-d之間的差,這里將其中4個差的各個量化成三個可能的值10、00與01。從而,將象素值128(410b與410c)量化成象素值00(420b與420c),并將象素值0(410d)量化成象素值01(420d)。這些表示級適用于運(yùn)動估算所使用的基于逐位異或(XOR)的價值函數(shù)(costfunction)。它們對特征檢測與塊分類也有用。M元金字塔降低象素值的精度,從而允許快速檢測圖象內(nèi)的“特征”。特征定義為諸如物體的邊沿等高活動或亮度區(qū)。應(yīng)指出層410與430為平均金字塔的層,而層420為M元金字塔(其中M=3)的層。兩種金字塔都可具有附加層,如圖4中所示,但M元金字塔將比平均金字塔少一層。即,需要兩個平均金字塔層410與430來生成單個M元金字塔層420。
再者,用來表示象素值的位的數(shù)目的明顯減少轉(zhuǎn)化成運(yùn)動估算過程中的計算開銷的減少。例如,由于象素值能取的可能值較少,從而能加速運(yùn)動估算過程中所執(zhí)行的塊匹配操作,由此簡化了總體匹配過程。
雖然M可以是任何值,但已發(fā)現(xiàn)諸如2元金字塔等“較低次”M元金字塔的分解比諸如三元金字塔等“較高次”M元金字塔對噪聲更敏感。即,由于二元金字塔中的量化象素值只能取兩個可能值之一,噪聲可引入誤差,一個象素值可錯誤地譯碼為具有值1而不是0,反之亦然。然而,“較高次”M元金字塔需要更多的計算開銷。從而,雖然已觀察到最好采用M大于2的M元金字塔分解,但特定的M元金字塔分解的選擇往往受特定應(yīng)用的要求的支配。一旦生成了M元金字塔,方法1000便在步驟1030中結(jié)束并返回到圖2的步驟220。
應(yīng)理解步驟210中的重要方面是為圖象序列中的各輸入圖象生成M元金字塔。這樣,雖然較佳實(shí)施例生成M元平均金字塔,但在本發(fā)明中也能采用其它類型的M元金字塔,諸如M元中值金字塔、M元低通金字塔等等。
此外,M元金字塔分解的創(chuàng)造性概念可用公式的形式表示。令(i,j)表示圖象幀上的象素位置,并令I(lǐng)(i,j)表示在位置(i,j)上的亮度。再者,令1表示金字塔內(nèi)的層,且0≤1≤L,其中L為金字塔的最高層。則平均金字塔X1(i,j),1≤1≤L,構(gòu)成如下 返回到圖2,在下面的步驟220中,可從這些平均金字塔中抽取諸如塊內(nèi)的特征等信息。在一個實(shí)施例中,塊是宏塊的8×8子塊,但應(yīng)理解本發(fā)明不限于這一塊尺寸。具體地可從塊內(nèi)的亮度變化中抽取例如邊沿等特征。這一變化是通過計算層1上的平均值,0≤1≤L-1與層1+1上的平均值之間的差表示的。然而,為了得到加強(qiáng)的特征及為了促進(jìn)快速運(yùn)動估算,將這些差量化來產(chǎn)生M元金字塔。M元金字塔的各層將展示能用來識別如邊沿與過零點(diǎn)等圖象特征或?qū)崿F(xiàn)運(yùn)動估算的圖象上的模式。
例如,圖象的二元金字塔B1(i,j)可建立如下 其中1表示二元金字塔中的層。雖然式(1a)示出定義二元金字塔的兩個值(“0”與“1”)的具體條件(量化器步長),根據(jù)特定應(yīng)用也可用其它條件或量化器步長定義二元金字塔的兩個值(“0”與“1”)。
此外,可建立圖象的三元金字塔Y1(i,j)。例如,用Y1(i,j)表示M元(M=3)金字塔中的模式值Y1=(i,j)=Quant[X1(i,j)-X1+1(INT(i2),INT(j2))],0≤1≤L-1---(2)]]>用λ表示Quant[-]的自變量。例如,考慮三元金字塔具有閾值T的情況,并定義Y1(i,j)如下 如果為特定應(yīng)用適當(dāng)?shù)剡x擇量化閾值T(如在較佳實(shí)施例中將T選定為5),這一定義具有噪聲耐受性的優(yōu)點(diǎn)。即,有可能定義一個“死區(qū)”,諸如|λ|<T,其中能有效地消除由噪聲引起的象素值中的細(xì)微變化。從而,具有零附近的死區(qū)的任何M元金字塔(M>2)能最小化噪聲敏感性問題。
在相對平坦的區(qū)中(低活動性區(qū)),Y1(i,j)將包含大量的零(0),而在包含邊沿的區(qū)中,Y1(i,j)將包含若干個一(1)。一旦將輸入圖象分解成了M元金字塔,為了用M元金字塔Y1(i,j)抽取特征的目的可將輸入圖象中的塊分類。即,可用M元金字塔快速檢測輸入圖象中的特征而不遭受高計算開銷??衫脵z測到的特征來增強(qiáng)下述運(yùn)動估算過程或其它圖象處理步驟,如利用分段模塊151分段圖象內(nèi)的區(qū)(諸如目標(biāo))。分段是重要的圖象處理步驟,在其中能識別出圖象中的重要區(qū)以便接受特殊處理。例如,電視會議應(yīng)用期間的人物的臉部可能需要諸如接受較多的編碼位分配等特殊圖象處理。此外,可利用分段來識別大目標(biāo),其中可在這些大目標(biāo)上執(zhí)行整體運(yùn)動估算。
應(yīng)理解前面的討論利用三元金字塔作為例子并示出一種可能的方法,在該方法中可為特征識別與分類賦予量化閾值或級。通常,M≥2的M元金字塔可與取決于特定應(yīng)用的要求與/或圖象序列的內(nèi)容的量化閾值的特定賦值一起使用。
返回到圖2,生成了M元金字塔之后,方法200進(jìn)行到步驟220,在其中根據(jù)考慮到M元金字塔的低活動性或高活動性分類幀中的塊。在較佳實(shí)施例中,“分類塊大小”為具有用128位表示的64個M元象素值8×8的塊。設(shè)定“活動性閾值”為25,如果25個或更多象素值為非零便將該8×8塊分類為高活動性塊。否則將該8×8塊分類為低活動性塊。可以執(zhí)行附加的更高的塊分類,例如將宏塊分類為高活動性或低活動性宏塊。在該較佳實(shí)施例中,使包含至少一個分類為高活動性的子塊的宏塊同樣被分類成高活動性的。應(yīng)理解,“分類塊大小”與“活動性閾值”是能按照特定應(yīng)用調(diào)整的,且不限于較佳實(shí)施例中所選擇的這些值。
返回到圖2,塊分類之后,方法200進(jìn)行到步驟230,在其中利用塊分類增強(qiáng)運(yùn)動估算過程。通常,帶有明顯圖象特征的區(qū)中的運(yùn)動估算比由于孔徑問題而引起的較小變化的相對“平坦區(qū)”中的運(yùn)動估算(如其中相鄰的塊中的圖象內(nèi)容非常相似的均勻區(qū))更可靠。因此,利用上述分類法來提高總的運(yùn)動估算的可靠性。然而,應(yīng)理解在運(yùn)動估算應(yīng)用中使用M元金字塔之前,沒有必要根據(jù)其內(nèi)容來預(yù)分類塊。即,應(yīng)理解,可直接利用M元金字塔的本發(fā)明(如圖2中用虛線所示)來增強(qiáng)各種類型或不同系統(tǒng)結(jié)構(gòu)的運(yùn)動估算方法的性能。
更具體地,運(yùn)動估算通常以光柵掃描次序逐塊地執(zhí)行。計算開銷或成本在運(yùn)動估算過程期間通常均勻地分布在所有塊上。本發(fā)明中,可利用依賴于Y1(i,j)與/或X1(i,j)的價值函數(shù)首先執(zhí)行“邊沿”塊(高活動性塊)中的運(yùn)動估算。這一方法能使圖象中的特征突出并在存在傳感器噪聲、量化噪聲及亮度變化時提供堅(jiān)實(shí)的可靠的運(yùn)動估算。價值函數(shù)的實(shí)例包含金字塔中M元層上的逐位異或運(yùn)算,它可在一些系統(tǒng)結(jié)構(gòu)中作為快速方法實(shí)現(xiàn)。價值函數(shù)用來確定“最佳匹配”??紤]在時間t上的M元有值的塊(當(dāng)前幀)Y1(i,j,t)及在時間t-1上的另一M元有值的塊(前一幀)Y1(m,n,t-1)。然后將價值函數(shù)表達(dá)為 其中_表示逐位異或運(yùn)算。這一價值函數(shù)與用在原始8位象素亮度值上的標(biāo)準(zhǔn)“絕對差”價值函數(shù)相比,產(chǎn)生實(shí)質(zhì)性計算節(jié)省。這一過程是在M元金字塔上分層執(zhí)行的。
換言之,運(yùn)動估算法是在高活動性塊上起動的。圖5示出已劃分及分類成多塊510的輸入幀500。在該較佳實(shí)施例中,將兩塊510a分類為高活動性塊。這樣,運(yùn)動估算首先在這兩塊上執(zhí)行。事實(shí)上這兩塊的計算價值可能增加,因?yàn)檫@些高活動性塊(高可信度“邊沿”塊)最有可能提供非常高精度的運(yùn)動矢量。從而,在這兩塊上執(zhí)行比圖象幀500中的其它塊更密集的運(yùn)動估算,例如,可將高活動性塊分裂以得出更精確的運(yùn)動矢量,可在這兩塊中執(zhí)行“半象素”運(yùn)動估算或者可采用更精密的搜索策略。
依次,在為高活動性塊完成了運(yùn)動估算之后,然后將運(yùn)動估算傳播到圖象中的低活動性塊(“低可信度”)。然而,這一傳播是根據(jù)在分類中獲得的區(qū)域或目標(biāo)分段智能地進(jìn)行的。這一傳播是通過用邊沿塊的運(yùn)動作為鄰接的塊的運(yùn)動的初值并用相對小的搜索范圍來求精這一初值而執(zhí)行的。即,運(yùn)動估算過程傳播(如以螺旋次序)到塊510b中,其中的初始搜索區(qū)是從高活動性塊的運(yùn)動矢量導(dǎo)出的。然后,這一傳播策略依次延伸到并不位于鄰接“邊沿”塊的諸如塊510c等“平坦的”塊中,這具有快速計算的優(yōu)點(diǎn),因?yàn)榍缶阉鞣秶鄬Φ匦?。再者,這種運(yùn)動估算較為平滑及容易編碼,這在運(yùn)動信息構(gòu)成位流的主要部分的非常低的位速率(VLBR)應(yīng)用中是重大的優(yōu)點(diǎn)。再者,可以期望這些較平滑的運(yùn)動估算在瞬時內(nèi)插應(yīng)用中執(zhí)行得較好。
最后,當(dāng)使用半象素求精來提高運(yùn)動估算的精度時,該分類方法還產(chǎn)生計算節(jié)省。只在“邊沿”塊上執(zhí)行半象素求精,并不在圖象的相對平坦區(qū)上執(zhí)行。
本發(fā)明的另一實(shí)施例包含利用多種M元金字塔系統(tǒng)結(jié)構(gòu)或結(jié)構(gòu)(示出在圖2中)來實(shí)行可以縮放的分層運(yùn)動估算。例如,在這另一實(shí)施例中,4層二元金字塔的構(gòu)成如下 其中X1(i,j)表示在第1層的位置(i,j)上的灰度級而Y0(i,j)表示原始圖象。
第二,4層二元金字塔形圖象建立如下 其中0≤1≤2B3(i,j)=X3(i,j)(7)應(yīng)指出用式(6)與(7)生成的M元金字塔生成經(jīng)過修正具有用式(7)表示的該M元金字塔的最高層的二元金字塔,即,用平均金字塔的最高層取代M元金字塔(如二元金字塔(M=2))的最高層。這一特定M元金字塔的系統(tǒng)結(jié)構(gòu)1210示出在圖12中。在較佳實(shí)施例中,生成多個M元金字塔系統(tǒng)結(jié)構(gòu)1210、1220、1230及1240來提供可以縮放的分層運(yùn)動估算方法。
更具體地,圖12示出復(fù)雜性不同的四個M元金字塔系統(tǒng)結(jié)構(gòu)。M元金字塔系統(tǒng)結(jié)構(gòu)1210包括三個一位層(O)1210a-1210c及一個8位層(E)1210d。M元金字塔系統(tǒng)結(jié)構(gòu)1220包括兩個一位層(O)1220a-1220b及兩個8位層(E)1220c-1220d。M元金字塔系統(tǒng)結(jié)構(gòu)1230包括一個一位層(O)1230a及三個8位層(E)1230b-1230d。M元金字塔系統(tǒng)結(jié)構(gòu)1240包括四個8位層(E)1240a-1240d。應(yīng)指出M元金字塔系統(tǒng)結(jié)構(gòu)1240簡單地為平均金字塔。
操作中,用8×8(710)與4×4(720)大小的“瓦塊”,即圖7中所示的多尺度瓦片全面搜索為所有四種M元金字塔系統(tǒng)結(jié)構(gòu)估算層3(1210d-1240d)的原運(yùn)動矢量。多尺度(或N尺度)鋪瓦為利用不同“瓦塊”尺度對幀中的當(dāng)前塊執(zhí)行運(yùn)動估算的過程。例如,如將N設(shè)定為3,則為各幀中的各塊生成三個運(yùn)動矢量,即用三種不同塊大小或尺度“鋪瓦”該塊。
依次,將層3的運(yùn)動矢量傳播到層2并用8×8與4×4的塊大小求精。將來自層2的運(yùn)動矢量傳播到層1并用8×8的塊大小求精。將來自層1的運(yùn)動矢量傳播到層O并用16×16的塊大小求精。然而本發(fā)明不限于特定數(shù)目的塊及塊大小。事實(shí)上,可用本發(fā)明實(shí)現(xiàn)任何數(shù)目的塊與/或塊大小。例如,能結(jié)合本發(fā)明實(shí)現(xiàn)N尺度鋪瓦,如在名為“采用帶N尺度鋪瓦的M元金字塔的裝置與方法”(代理人摘錄SAR 12455;序號09/106,707)的1998年6月29日與本申請同時提交的伴隨專利申請中所公開的,通過引用將其結(jié)合在此。
可縮放的分層運(yùn)動估算是通過在分層運(yùn)動估算過程中將O層改變成E層來達(dá)到的。應(yīng)指出,一旦生成了M元金字塔系統(tǒng)結(jié)構(gòu)1210,便可獲得其它M元金字塔系統(tǒng)結(jié)構(gòu)1220-140的必要的層。例如,E層1220c(M元金字塔的層2)只是前面為計算二元層1210c而生成的平均金字塔的層2。類似地,E層1230b(M元金字塔的層1)只是前面為計算二元層1210b而生成的平均金字塔的層1,等等。從而,將為導(dǎo)出M元金字塔1210而生成的整個平均金字塔存儲在計算機(jī)系統(tǒng)的存儲器中的單元中供以后使用。以這一方式,得出4種分層運(yùn)動矢量估算系統(tǒng)結(jié)構(gòu),它們是HME3B、HME2B、HME1B與HME0B,來提供可縮放的分層運(yùn)動估算過程。標(biāo)記HME3B、HME2B、HME1B與HME0B指帶有3個O層、2個O層、1個O層與0個O層的分層運(yùn)動估算,如圖12中所示。
圖11示出在M元金字塔上執(zhí)行可縮放的分層運(yùn)動估算的方法1100的流程圖。更具體地,方法1100在步驟1105中開始并進(jìn)行到步驟1110,在其中為圖象序列中的一幀選擇一種初始M元金字塔系統(tǒng)結(jié)構(gòu)(如式6與7的二元金字塔(M=2))。
步驟1115中,方法1100詢問是否應(yīng)改變當(dāng)前的M元金字塔系統(tǒng)結(jié)構(gòu)??筛鶕?jù)諸如計算復(fù)雜性、可利用的存儲器資源、存儲器帶寬、用戶選擇與/或可利用的通信帶寬等一或多種標(biāo)準(zhǔn)確定改變特定的M元金字塔系統(tǒng)結(jié)構(gòu)。如果詢問的回答是否定的,則方法1100進(jìn)行到步驟1125,在其中按照選擇的M元金字塔系統(tǒng)結(jié)構(gòu)生成M元金字塔。如果詢問的回答是肯定的,則方法1100進(jìn)行到步驟1120,在其中為當(dāng)前的幀選擇新的M元金字塔系統(tǒng)結(jié)構(gòu)(如從系統(tǒng)結(jié)構(gòu)1210改變到1220),然后進(jìn)行到步驟1125。
在步驟1130中,方法1100從M元金字塔的最高層開始執(zhí)行分層運(yùn)動估算。一旦為最高層生成了運(yùn)動矢量,便如上面所討論的那樣將運(yùn)動矢量傳遞給M元金字塔的較低層。
在步驟1135中,方法1100詢問是否應(yīng)為M元金字塔系統(tǒng)結(jié)構(gòu)的下一層改變當(dāng)前的M元金字塔。即,在分層運(yùn)動估算過程中方法1100能切換到不同的M元金字塔系統(tǒng)結(jié)構(gòu)。同理,可根據(jù)諸如計算復(fù)雜性、可利用的存儲器資源、用戶選擇與/或可利用的通信帶寬等不同標(biāo)準(zhǔn)決定改變特定的M元金字塔系統(tǒng)結(jié)構(gòu)層。如果詢問的答復(fù)是否定的,則方法1100進(jìn)行到步驟1145。如果詢問的答復(fù)是肯定的,則方法1100進(jìn)行到步驟1140,在其中為當(dāng)前的幀選擇新的M元金字塔系統(tǒng)結(jié)構(gòu)(或只是新的層,諸如用E層替換O層),然后進(jìn)行到步驟1145。
在步驟1145中,方法1100詢問當(dāng)前M元金字塔系統(tǒng)結(jié)構(gòu)中是否有下一層。如果詢問的答復(fù)是否定的,則方法進(jìn)行到步驟1150。如果詢問的答復(fù)是肯定的,則方法返回到步驟1130,在其中在M元金字塔系統(tǒng)結(jié)構(gòu)的下一層上執(zhí)行分層運(yùn)動估算。
在步驟1150中,方法1100詢問圖象序列中是否有下一幀。如果詢問的答復(fù)是否定的,則方法1100在步驟1155中結(jié)束。如果詢問的答復(fù)是肯定的,則方法1100返回到步驟1115,在其中為圖象序列中下一幀執(zhí)行分層運(yùn)動估算。
利用帶有四層及四種不同二元金字塔系統(tǒng)結(jié)構(gòu)的二元金字塔的本分層運(yùn)動估算提供可縮放的運(yùn)動估算方法。為了說明,假定視頻圖象的寬度與高度分別為W與H。視頻序列的幀率為Fr。假定圖象塊的大小為NXN。畫面幀包含HN]]>個畫面片,而各片中有WN]]>塊。搜索窗口具有±M個象素。
在塊匹配運(yùn)動估算方法中,鄰接的塊的搜索區(qū)可以重疊??蓪⑦@一重疊區(qū)數(shù)據(jù)存儲在芯片上緩沖器內(nèi)部以減小外部存儲器帶寬。假定緩沖器“D”的大小等于搜索區(qū),(N+2M)×(N+2M)字節(jié)。當(dāng)下一塊在同一畫面片上時,緩沖器D的新加載數(shù)據(jù)量為N×(N+2M)字節(jié)。在處理一個畫面片時,在一片開始時加載整個緩沖器。從而,如果忽略邊界塊的情況,每片的總的外部存儲器帶寬大約為((N+2M)2+((W/N)-1)×N×(2M+N)字節(jié)。對于720×480圖象的HME3B的存儲器帶寬需求的推導(dǎo)給出如下。
將層3上的搜索范圍設(shè)定為±16個象素。將層0、層1與層2上的搜索范圍設(shè)定為±3個象素。
在層3上,存儲器帶寬(字節(jié))近似地為MB3=604×((4+32)2+(904-1)×4×(32+4))+608×((8+32)2+(908-1)×8×(32+8))]]>在層2上,存儲器帶寬(字節(jié))近似地為8)MB2=1204×((4+6)2+(1804-1)×4×(6+4))+1208×((8+6)2+(1808-1)×8×(6+8))]]>在層1上,存儲帶寬(字節(jié))近似地為9)MB1=2×2408×((8+6)2+(3608-1)×8×(6+8))(10)]]>在層0上,存儲器帶寬(字節(jié))近似地為MB0=48016×((16+6)2+(72016-1)×16×(6+16))(11)]]>因此,HMEo。的存儲器帶寬(字節(jié)/秒)近似地為MBHME0B=F1×(MB0+MB1+MB2+MB3)(12)]]>可以以上面為推導(dǎo)HME0B相同的方式推導(dǎo)HME1B、HME2B及刪HME3B的存儲器帶寬需求。表1列出四種二元金字塔系統(tǒng)結(jié)構(gòu)的存儲器帶寬需求(以Mbytes/s(兆字節(jié)/秒)表示)。
從表1中可看出,隨著O層改變成E層,本發(fā)明的存儲器帶寬需求可從6.341 Mbytes/s縮放到29.208 Mbytes/s。
應(yīng)指出雖然本發(fā)明采用帶四層的二元金字塔,但本發(fā)明不限于此。事實(shí)上,可實(shí)現(xiàn)帶不同層的其它M元金字塔。再者,可用上述塊分類(高活動性與低活動性)方法來選擇要使用的M元金字塔系統(tǒng)結(jié)構(gòu)的層或類型。例如,可根據(jù)特定幀中的“活動性”(高或低)選擇M元金字塔系統(tǒng)結(jié)構(gòu)的類型。事實(shí)上,可結(jié)合本發(fā)明使用任何其它塊分類方法。
圖8描述包含本發(fā)明的基于子波的編碼器800。該編碼器包含塊運(yùn)動補(bǔ)償器(BMC)與運(yùn)動矢量編碼器804、減法器802、離散子波變換(DWT)編碼器806、位速率控制器810、DWT解碼器812及輸出緩沖器814。
通常,如上面所討論的,輸入信號為視頻圖象(定義視頻序列中的幀的二維象素(pel)陣列)。為了通過低位速率信道精確地傳輸圖象,必須充分地減少視頻幀序列中的空間與時間冗余性。這通常是通過只編碼與傳輸接連的幀之間的差來完成的。編碼器具有三種功能第一,它利用BMC及其編碼器804生成表示出現(xiàn)在幀之間的運(yùn)動的多個運(yùn)動矢量;第二,它利用重構(gòu)前一幀與運(yùn)動矢量組合的形式來預(yù)測當(dāng)前幀;以及第三從當(dāng)前幀中減去預(yù)測的幀來產(chǎn)生殘余幀,并將其編碼及與運(yùn)動矢量一起傳輸給接收機(jī)。
離散子波變換執(zhí)行子波分層子帶分解來產(chǎn)生輸入圖象的傳統(tǒng)子波樹表示。為了完成這一圖象分解,利用2倍分取樣成高水平高垂直(HH)、高水平低垂直(HL)、低水平高垂直(LH)、及低水平低垂直(LL)子頻帶分解該圖象。然后進(jìn)一步2倍分取樣LL子帶產(chǎn)生一組HH、HL、LH及LL子帶。逆歸地進(jìn)行這一分取樣以產(chǎn)生子帶陣列,諸如圖9中所示的使用三倍分取樣的。實(shí)踐中最好使用六倍分取樣。子帶之間的雙親與子女的相關(guān)性示出為從雙親節(jié)點(diǎn)的子帶指向子女節(jié)點(diǎn)的子帶的箭頭。最低頻率子帶為左上的LL1,而最高頻率子帶為右下HH2。在該例中,所有子女節(jié)點(diǎn)具有一個雙親。在J.M.Shapiro的“利用子波系數(shù)的零樹的嵌入圖象編碼”,IEEE信號處理會報(卷41、12號,3445-62頁,1993年12月)中提出子帶分解的詳細(xì)討論。
圖8的DWT編碼器以“寬度優(yōu)先”或“深度優(yōu)先”方式編碼子波樹的系數(shù)。寬度優(yōu)先方式用位平面方式橫向通過位平面中的子波樹,即,量化所有雙親節(jié)點(diǎn),然后所有子女,然后所有孫子女,等等。反之,深度優(yōu)先方式通過各樹,從低-低子帶(LL1)中的根通過子女(從上向下)或從子女通過低-低子帶(從下向上)。如上所述速率控制器810選擇適當(dāng)?shù)牧炕墎砜刂菩蛄械母鲙瑑?nèi)的各宏塊的位速率。這樣,本發(fā)明便能適用于采用不同變換的各種類型的編碼器。
圖6示出本發(fā)明的編碼系統(tǒng)600。該編碼系統(tǒng)包括通用計算機(jī)610及各種輸入/輸出設(shè)備620。通用計算機(jī)包括中央處理單元(CPU)612、存儲器614及用于接收與編碼圖象序列的編碼器616。
在較佳實(shí)施例中,編碼器616就是上面討論的編碼器100與800。編碼器616可以是通過通信道耦合在CPU 612上的物理設(shè)備。作為替代,編碼器616可用從諸如磁或光盤等存儲設(shè)備加載及常駐在計算機(jī)的存儲器612中的軟件應(yīng)用程序(或諸如應(yīng)用特定的集成電路(ASIC)等軟件與硬件的組合)表示。這樣,可將本發(fā)明的編碼器100存儲在計算機(jī)可讀的介質(zhì)上。
計算機(jī)610可耦合在多個輸入與輸出設(shè)備620上,諸如鍵盤、鼠標(biāo)器、照相機(jī)、攝錄機(jī)、視頻監(jiān)視器、任何數(shù)目的成象設(shè)備或存儲設(shè)備,包含但不限于磁帶驅(qū)動器、軟件驅(qū)動器、硬盤驅(qū)動器或緊致盤驅(qū)動器。輸入設(shè)備用于向計算機(jī)提供輸入供產(chǎn)生編碼的視頻位流或從存儲設(shè)備或成象設(shè)備接收視頻圖象序列。最后,示出將編碼信號從編碼系統(tǒng)提交給解碼系統(tǒng)(未示出)的通信信道630。
雖然已經(jīng)示出并詳細(xì)描述了包含本發(fā)明的內(nèi)容的各種實(shí)施例,熟悉本技術(shù)人員能容易地設(shè)計出仍包含這些內(nèi)容的許多其它不同的實(shí)施例。
權(quán)利要求
1.一種將圖象序列中的圖象分解成M元金字塔的方法,所述方法包括下述步驟(a)從所述圖象中生成具有多層的圖象金字塔;以及(b)從所述圖象金字塔中生成具有多個P位層的M元金字塔,其中所述M元金字塔的所述P位層的至少兩個的P是不同的。
2.權(quán)利要求1的方法,其中所述M元金字塔的所述P位層的至少兩個的所述P為1與8。
3.權(quán)利要求1的方法,還包括下述步驟(c)在所述M元金字塔上執(zhí)行分層運(yùn)動估算。
4.權(quán)利要求3的方法,其中所述執(zhí)行分層運(yùn)動估算步驟(c)包括下述步驟(c1)從所述M元金字塔的最高層開始生成多個運(yùn)動矢量,其中所述多個運(yùn)動矢量分層傳遞到所述M元金字塔的較低層;(c2)在所述M元金字塔的下一層上確定是否有必要將所述P改變到一個不同的值;以及(c3)按照所述步驟(c2)將所述P改變到一個不同的值并重復(fù)所述步驟(c1)與(c2)直到為所述M元金字塔的最低層生成多個運(yùn)動矢量為止。
5.權(quán)利要求4的方法,其中所述運(yùn)動矢量生成步驟(c1)根據(jù)多種瓦片塊大小生成多個運(yùn)動矢量。
6.權(quán)利要求1的方法,還包括下述步驟(c)根據(jù)標(biāo)準(zhǔn)有選擇地改變所述P。
7.一種為圖象序列執(zhí)行運(yùn)動估算的方法,其中各所述圖象分成至少一塊,所述方法包括下述步驟(a)生成具有不同金字塔系統(tǒng)結(jié)構(gòu)的多個M元金字塔,其中各所述M元金字塔系統(tǒng)結(jié)構(gòu)包括多個P位層,其中至少一種所述M元金字塔系統(tǒng)結(jié)構(gòu)的至少兩個所述P位層的P是不同的;(b)選擇所述M元金字塔系統(tǒng)結(jié)構(gòu)之一用于執(zhí)行分層運(yùn)動估算;以及(c)從所述選擇的M元金字塔的最高層開始生成多個運(yùn)動矢量,其中所述多個運(yùn)動矢量分層傳遞到所述選擇的M元金字塔的較低層。
8.權(quán)利要求7的方法,其中所述M元金字塔生成步驟(a)包括下述步驟(a1)為該圖象生成平均金字塔;以及(a2)從所述平均金字塔生成所述多個M元金字塔。
9.一種將圖象序列中的圖象分解成M元金字塔的裝置,所述裝置包括圖象金字塔發(fā)生器,用于從該圖象生成具有多層的圖象金字塔;以及M元金字塔發(fā)生器,用于從所述圖象金字塔生成具有多個P位層的M元金字塔,其中所述M元金字塔的至少兩個所述P位層的P是不同的。
10.一種用于編碼具有至少一個輸入幀的圖象序列的裝置,所述裝置包括運(yùn)動補(bǔ)償器,用于生成當(dāng)前輸入幀的預(yù)測圖象,所述運(yùn)動補(bǔ)償器包括用于生成具有多個P位層的M元金字塔的M元金字塔發(fā)生器,其中所述M元金字塔的至少兩個所述P位層的P是不同的,及用于在所述M元金字塔上執(zhí)行分層運(yùn)動估算的運(yùn)動估算模塊;變換模塊,用于在輸入幀與所述預(yù)測圖象之間的差信號上作用變換,其中所述變換產(chǎn)生多個系數(shù);量化器,用于用至少一個量化器尺度量化所述多個系數(shù)以生成多個量化的系數(shù);以及編碼器,用于將所述量化的系數(shù)編碼成位流。
全文摘要
公開了執(zhí)行帶高度可縮放性的分層的基于塊的運(yùn)動估算的裝置及伴生的方法。本發(fā)明將圖象序列內(nèi)的各圖象幀分解成M元金字塔。在M元金字塔的不同層上使用不同的動態(tài)范圍來表示象素值,借此生成多個不同的P位層,即多種不同的M元金字塔系統(tǒng)結(jié)構(gòu)。本可縮放分層運(yùn)動估算提供根據(jù)可利用的平臺源與/或用戶選擇從一種M元金字塔系統(tǒng)結(jié)構(gòu)切換到另一種M元金字塔系統(tǒng)結(jié)構(gòu)的靈活性。
文檔編號H04N7/18GK1283291SQ98812628
公開日2001年2月7日 申請日期1998年12月31日 優(yōu)先權(quán)日1997年12月31日
發(fā)明者宋旭東, 蔣迪豪, 張亞勤, 拉維·克里系納穆爾蒂 申請人:薩爾諾夫公司