專利名稱:對基于子波編碼方法產(chǎn)生的子波樹進行編碼的裝置與方法
本申請要求1997年2月12日提交的美國臨時申請第60/037,055號的權(quán)益,該申請在此列出供參考。
本發(fā)明涉及圖像處理系統(tǒng),具體涉及用于平衡與非平衡子波樹編碼的圖像處理系統(tǒng)。
背景技術(shù):
在1992年3月于加州舊金山市召開的國際聲學(xué)、語音與信號處理會議的會議錄第IV卷第657至660頁(Proceedings of the International Conference onAcoustics,Speech and Signal Processing,San Francisco,Cal.Mar.1992,volume IV,pages 657-660)中描述了一種數(shù)據(jù)壓縮技術(shù),其中公開了一種采用了分層子帶分解或子波變換的信號壓縮系統(tǒng),以及隨后的采用修剪樹(zerotree)的分層逐次逼近熵編碼量化器。利用多分辨率分層子帶表示的信號數(shù)據(jù)表示法,被伯特等人公布于美國電子與電氣工程師協(xié)會通信分會會刊1983年4月號第31通信分卷第4期第533頁(Burt et al.,IEEE Trans.on Commun.,Vol Com-31,No.4,April 1983,Page 533)。一種子波金字塔,又稱為臨界采樣的正交鏡像濾波器(Quadrature-Mirror Filter,QMF)子帶表示法,是圖像的一種特殊類型的多分辨率分層子帶表示法。潘特蘭德等人在1991年4月8至11日于猶他州雪鳥市召開的數(shù)據(jù)壓縮會議的會議錄(Pentland et al.,Proc.Data CompressionConference Apr.8-11,1991,Snowbird,Utah)中公開了一種子波金字塔。QMF子帶金字塔在由克魯瓦學(xué)術(shù)出版公司于1991年出版的J.W.伍德編著的《子帶圖像編碼》(“Subband Image Coding”,J.W.,Wood,Kluwer Academic Publishers,1991)和I.道貝奇的于賓州費城召開的工業(yè)與應(yīng)用數(shù)學(xué)學(xué)會1992年年會發(fā)表的《子波十講》(I.Daubechies,Ten Lectures on Wavelets,Society for Industrialand Applied Mathematics(SIAM),Philadelphia,Pa.,1992)中有描述。
在此列出供參考的于1995年5月2日授權(quán)的美國專利5,412,741公開了一種高度壓縮編碼信息的裝置和方法。該裝置以一種比現(xiàn)有技術(shù)有效得多的方法,使用子波系數(shù)的修剪樹編碼。該裝置的關(guān)鍵是動態(tài)產(chǎn)生將被掃描的系數(shù)索引列表,這個動態(tài)產(chǎn)生的列表僅包含那些必須為其編碼一個符號的系數(shù)索引。這比現(xiàn)有技術(shù)有了很大的改善。在現(xiàn)有技術(shù)中,使用系數(shù)索引的靜態(tài)列表,并且必須分別檢驗每個系數(shù)是否a)必須編碼一個符號,或b)是完全可預(yù)測的。
美國專利5,412,741所公開的裝置還使用一種信息編碼的方法,該方法包含下列步驟形成圖像的子波變換;形成子波系數(shù)的修剪樹映射;從變換的最粗級在初始主列表上編碼有效系數(shù)和它們的子系數(shù),當(dāng)其父系數(shù)有效時,其索引附于主列表上;減小門限;細(xì)化有效系數(shù)的估計值以提高編碼系數(shù)的精度;以及,重新以新的、減小的門限值來再次掃描主列表。
為完成該迭代過程,美國專利5,412,741的方法通過一個子帶接一個子帶地掃描子波樹來實現(xiàn),例如,所有父結(jié)點被編碼,然后所有子結(jié)點,再后是所有孫結(jié)點以此類推,一個位平面(bit-plane)一個位平面地被編碼。在該過程遍歷圖像的子波樹表示時,該裝置編碼修剪樹映射中四個符號中的一個,美國專利5,412,741中所討論的方法被稱作“嵌入式修剪樹子波(EmbeddedZerotree Wavelet,EZW)”方法。任何處理子波樹時的速度提高都是有利的。
因此,需要一種技術(shù)來改善子波樹結(jié)點的分類和編碼方法,來進行更有效的編碼和更迅速的處理。
發(fā)明概述本發(fā)明是基于子波編碼技術(shù)的子波樹編碼的裝置及相應(yīng)方法,它能夠處理非平衡子波樹,并且提高整體編碼效率。
更確切地說,在本發(fā)明的一個實施例中,一非平衡子波樹被重新映射到平衡子波樹上。對于非平衡子波樹中不存在的結(jié)點,在新的平衡子波樹中相應(yīng)結(jié)點處標(biāo)記為空結(jié)點。
在另一個實施例中,建立頻帶相關(guān)列表以便編碼相關(guān)頻帶內(nèi)的系數(shù)。即,利用一指定的頻帶相關(guān)列表來編碼子波樹的一個或多個頻帶的系數(shù)。此外,對于預(yù)定頻帶集合可設(shè)置頻帶相關(guān)列表。
在另一個實施例中,產(chǎn)生一個差值來編碼子波樹系數(shù)。
本發(fā)明可與修剪樹熵編碼方法、嵌入式修剪樹子波編碼方法、以及對象和矢量子波的概念相結(jié)合來使用。
附圖的簡要說明通過參閱下面結(jié)合附圖進行的詳細(xì)說明,將更容易理解本發(fā)明的宗旨,附圖中
圖1是本發(fā)明的圖像編碼器的方框圖;圖2是說明圖1所示編碼器的編碼方法的流程圖;圖3是一幅被分解為子波樹中的三層級的圖像中子帶父子關(guān)系的簡要說明;圖4描述了子采樣圖像中三代的父子關(guān)系;圖5描述了一棵子波樹中不同結(jié)點間關(guān)系的簡要表示法;圖6描述了子波樹的子波塊表示;圖7描述了本發(fā)明所采用的一種量化方法的流程圖;圖8描述了本發(fā)明所采用的一種符號分配方法的流程圖;圖9描述了矢量子波變換的一個實施例的方框圖;圖10描述了矢量子波變換的另一個實施例的方框圖;圖11描述了標(biāo)量子波變換隨后進行矢量或?qū)ο蠓纸M的一個實施例的方框圖;圖12描述了標(biāo)量子波變換隨后進行矢量或?qū)ο蠓纸M的另一個實施例的方框圖;圖13描述了矢量子波的一個例子;圖14描述了一種矢量父子關(guān)系;圖15描述了一種對象父子關(guān)系;圖16描述了重構(gòu)每個子波樹的系數(shù)矢量形成一個“子波塊”;圖17是分解為平衡子波樹中三層級的圖像中子帶的父子依存關(guān)系的簡要說明;圖18是平衡樹的簡要說明;圖19是非平衡樹的簡要說明;圖20是插入空結(jié)點的平衡樹的簡要說明;圖21是一幅分解為三層尺度的圖像中的子帶掃描的簡要說明;圖22是4個非零子波系數(shù)的簡要說明;圖23是表示在比特流中圖21中編碼的子帶位置的簡要說明;圖24是本發(fā)明圖像編碼器另一個實施例的方框圖;圖25是說明圖24所示編碼器的編碼方法的流程圖;圖26是本發(fā)明圖像編碼器的方框圖;以及圖27說明了本發(fā)明的一個編碼/解碼系統(tǒng)。
為助于理解,若有可能,對各附圖中相同的元件使用統(tǒng)一的標(biāo)號。
詳細(xì)說明圖1描述了本發(fā)明編碼器100的方框圖,圖2描述了圖1中編碼器100操作的流程圖表示。為更好地理解本發(fā)明,讀者在閱讀下面的本發(fā)明說明書時,需同時參考圖1和圖2。
編碼器100包含一個子波樹產(chǎn)生器104,一個可選的子波樹重構(gòu)器108,一個量化器110,一個符號分配器112,和一個熵編碼器114。各部分串聯(lián)連接,將端口102輸入的圖像處理為編碼圖像輸出給端口116。輸入圖像通常為象素化(數(shù)字化)的圖形圖像,如圖像掃描儀或計算機圖形系統(tǒng)產(chǎn)生的那樣。然而,輸入圖像也可以是一系列視頻圖像幀中的一幀,或是由視頻編碼系統(tǒng)產(chǎn)生的一個運動補償剩余幀。一般講,本發(fā)明能夠處理任何形式的數(shù)字圖像及其部分。因此,操作的方法通常從步驟202開始,輸入一幅“圖像”,即任何形式的兩維數(shù)據(jù)。
子波樹產(chǎn)生器104執(zhí)行(在步驟204)一個子波分層子帶分解過程,產(chǎn)生輸入圖像的傳統(tǒng)子波樹表示。為實現(xiàn)這樣的圖像分解,用2倍子采樣分別在兩維上將圖像分解為高水平-高垂直(HH),高水平-低垂直(HL),低水平-高垂直(LH),以及低水平-低垂直(LL)頻率子帶。LL子帶再在兩維上2倍子采樣來產(chǎn)生一組HH、HL、LH和LL子帶。反復(fù)進行這種2倍子采樣便產(chǎn)生一子帶陣列,如圖3所示,其中進行了三次子采樣。實際上進行4次或更多次子采樣更好,但本發(fā)明可適應(yīng)任意次子采樣。子帶間的父子關(guān)系用箭頭指向表示出來,箭頭從父結(jié)點的子帶指向子結(jié)點的子帶。最低頻的子帶是左上角的LL3,最高頻的子帶是右下角的H-H1。在這個例子中,所有的子結(jié)點都有一個父結(jié)點。關(guān)于子帶分解的詳細(xì)討論請參見J.M.夏彼羅在美國電子與電氣工程師協(xié)會信號處理分會會刊1993年12月號第41卷第12期第3445至3462頁上發(fā)表的“采用子波系數(shù)的修剪樹進行嵌入式圖像編碼”一文(J.M.Shapiro,“Embedded Image Coding Using Zerotrees of WaveletCoefficients”,IEEE Trans,on Signal Processing,Vol 41,NO 12,pp.3445-62,December 1993)。
圖4描述了一個子采樣圖像的三代父子關(guān)系。對圖像進行4倍子采樣,使單個父結(jié)點400具有4個對應(yīng)于圖像同一區(qū)域的子結(jié)點402,即分別在兩維方向上進行2倍子采樣。進一步進行4倍子采樣,每一子結(jié)點402又有4個相應(yīng)下一代的孫結(jié)點404。這種聯(lián)系父結(jié)點與子結(jié)點以及孫結(jié)點的關(guān)系或數(shù)據(jù)結(jié)構(gòu),就是子波樹。注意,在低低子帶中的每一象元或象素都有一個“樹”與之相聯(lián)。然而,在現(xiàn)有技術(shù)中,通常將由低低子帶引出的眾多樹組合在一起作為圖像的“子波樹”來討論。本說明書也將遵從這一術(shù)語。
回到圖1和2,量化器110用一種“深度優(yōu)先”模式通過路徑106量化(在步驟210)子波樹的系數(shù)。深度優(yōu)先模式與現(xiàn)有技術(shù)編碼系統(tǒng)有很大的不同,在于現(xiàn)有技術(shù)編碼系統(tǒng)以一種修正的寬度優(yōu)先模式遍歷子波樹的所有子帶,就是說,量化所有父結(jié)點,然后所有子結(jié)點,然后是所有孫結(jié)點,依此類推。相反,本發(fā)明的方法以“深度優(yōu)先”的次序遍歷每個樹,即,從低低子帶(LL3)的根部到子結(jié)點。
圖5描述了用來遍歷每個樹的深度優(yōu)先模式。例如,從LL3中的結(jié)點500開始,沿著粗線所示路徑,本發(fā)明的深度優(yōu)先過程進行到子帶LH3中的結(jié)點502,然后到子帶LH2中的結(jié)點504。從結(jié)點504,該深度優(yōu)先遍歷過程繼續(xù)到子帶LH1中的結(jié)點506,508,510和512,即結(jié)點504的全部子結(jié)點,然后繼續(xù)到504的兄弟結(jié)點(514,524,534),在到下一個兄弟結(jié)點及其子結(jié)點之前,先經(jīng)過每個兄弟結(jié)點自己的4個子結(jié)點。一旦樹的這一完整分支都經(jīng)過后,該遍歷過程再到結(jié)點500的其它子結(jié)點,如結(jié)點544。從那個結(jié)點,深度優(yōu)先遍歷過程歷經(jīng)結(jié)點546,548,550,552和554,再到結(jié)點556,如此進行。
在每一個遍歷的分支,各個系數(shù)被量化為離散值。任何量化方法都可用于本發(fā)明。量化過程將一連續(xù)值變換為具有正、負(fù)或零值的離散值。簡言之,在一深度優(yōu)先掃描模式中,子結(jié)點506,508,510和512在它們的父結(jié)點504之后而在任何相鄰父結(jié)點514,524和534之前被掃描。在這種方式下,所有分別代表某一給定空間位置的系數(shù)均被掃描到,以一種升頻次序,從父結(jié)點500到子結(jié)點502到孫結(jié)點504等等,然后才掃描下一相鄰空間位置的系數(shù)。
盡管前述深度優(yōu)先掃描模式被認(rèn)為是一種“自上而下”模式,深度優(yōu)先掃描模式也包括自下而上的掃描。這樣,量化也可以從樹的“葉子”(最底端的結(jié)點)開始實現(xiàn),并沿樹向上進行。用圖5的例子,在“自下而上”模式中,結(jié)點506,508,510和512將先被量化,然后是結(jié)點504,沿樹向上延續(xù),最后到500。一旦這個樹被掃完,量化過程將量化另一棵樹,再另一棵,直到所有樹中的所有結(jié)點都被量化。正如下面將討論的,用自下而上方式比自上而下方式會使本發(fā)明更有效地運行。
為便于進行這種深度優(yōu)先掃描模式,本發(fā)明重構(gòu)了每個子波樹的量化系數(shù),形成了一個“子波塊”。如圖1和2所示,重構(gòu)在量化器之前的子波樹重構(gòu)器108中實現(xiàn)(在步驟206)。
圖6概略地描述了本發(fā)明產(chǎn)生的一個子波塊604。本發(fā)明將一個在子波樹602中低低頻帶606(LL3)中的象素600延伸出的樹602變換為一個子波塊604。圖像幀608的每一子波塊604包含在所有層級上的那些系數(shù)和代表該幀中該塊的空間位置的幀方位值。重構(gòu)通過物理方法將系數(shù)的存儲位置重新映射到形成子波塊的新存儲位置而得以實現(xiàn)。這樣,一個給定子波塊的所有系數(shù)都貯存在順序排列的地址位置。或者,系數(shù)不是用物理方法重新排列,而是重新映射到虛擬存儲器。這樣,就產(chǎn)生一個進入物理存儲器的索引(index),該索引(虛擬存儲器)具有排列在子波塊中的存儲位置。對于每一個進入該索引的訪問,進入該索引的地址被映射為存儲該系數(shù)的物理存儲器的位置。這樣,通過一個虛擬存儲器的方式,就不用物理上重排存儲器中的系數(shù),這正是子波塊的優(yōu)勢。
通過使用深度優(yōu)先掃描方式,每個子波塊被完全掃描以量化其系數(shù),再進行下一塊的掃描,依此類推。例如,塊610被完全掃描,然后塊612,然后塊614,繼續(xù)以一種屏面掃描的方式通過由各子波塊組成的幀。塊的次序不必是屏面掃描方式,而可以為應(yīng)用中需要的任何次序。這包括面向?qū)ο蟮姆绞剑ㄟ^該方式相應(yīng)于某些對象的塊在其它對象之前被掃描和編碼。既然一個完整的塊位于連續(xù)的存儲地址,對于某一給定塊通過選擇第一或最后的存儲器入口,以及以升序或降序訪問所有其它地址,塊便很容易自上而下或自下而上被掃描。
重要的是,對于這樣的重構(gòu),每一子波塊可基于其在幀中的空間位置被分配一個不同的量化器等級。這便允許量化器110針對系數(shù)的空間位置和/或根據(jù)系數(shù)所代表的頻帶進行特定的分配。這樣,遍歷一幅圖像時量化器等級可以不同,使得圖像的中心或圖像中的某對象能夠比邊緣得以更精確的量化。同樣,量化器等級可以是頻率相關(guān)的,使得高頻(或者,就此而言,低頻,中頻,不同的頻帶等等)可以用與其它頻率不同的等級來量化。而且,不僅單一的量化器,量化矩陣也可用來為子波塊編碼。
在一特別的應(yīng)用中,例如電視電話,前景對象,如呼叫者的頭和肩,被挑出用比背景物更高的精度進行量化。結(jié)果,重要的信息被精確地編碼和傳輸,而背景信息就不那么精確地編碼了。子波塊的使用使得前景與背景信息的分開編碼變得容易。一旦一個區(qū)域被選出來精確編碼,本發(fā)明就能標(biāo)記出需要精確編碼的塊。這樣,量化器使用比未標(biāo)記塊更精細(xì)的量化步長來量化這些塊。
盡管實現(xiàn)本發(fā)明需要子波塊形成一個直覺的數(shù)據(jù)結(jié)構(gòu),子波塊的使用卻是隨意的,并且對于實現(xiàn)本發(fā)明的編碼器100和下面描述的其它編碼器也不是必需的。如下面將要討論的,傳統(tǒng)的樹形結(jié)構(gòu)也可與本發(fā)明的改善的樹形掃描過程以及改善的編碼技術(shù)相結(jié)合使用。這樣,圖1和2描述了重構(gòu)器的可選性,因為路徑106和208分別繞過了重構(gòu)器與其相應(yīng)功能。
量化之后,在樹的每一結(jié)點,量化過的系數(shù)或為零值或為非零值,“修剪樹(zerotrees)”存在于任何結(jié)點系數(shù)為零處并且其后代也形成修剪樹,就是說,所有后代結(jié)點具有零值。子波樹中量化的系數(shù)被再次以深度優(yōu)先方式掃描每棵樹而有效地編碼。這樣,符號分配器112執(zhí)行任務(wù)(步驟212),遍歷樹形結(jié)構(gòu),并根據(jù)結(jié)點上的量化值與每一結(jié)點的后代的量化值來為每一結(jié)點分配特定的符號。
特別是,在每一結(jié)點,本發(fā)明的方法分配三種符號之一“修剪樹根(ZEROTREE ROOT ZTR)”,“數(shù)值修剪樹根(VALUED ZEROTREE ROOT,VZTR)”和“數(shù)值(VALUE,VAL)”。一個修剪數(shù)根代表一個是一棵修剪樹的根的系數(shù)。在分配符號的掃描之后,修剪樹不用再掃描了,因為知道樹中的所有系數(shù)值均為零?!皵?shù)值修剪樹根”是其系數(shù)為非零值而所有4個子結(jié)點均為修剪樹根的結(jié)點。此種樹的編碼掃描不用再往下進行。“數(shù)值”符號表明一個系數(shù)為一數(shù)值,或為零或不為零,但在沿樹形結(jié)構(gòu)向下的某一后代結(jié)點處有一非零值。作為一備選項,第四種符號,孤立零(Isolated Zero,IZ),可加進有效性映射中,在這種情況下,IZ符號表示一個零值系數(shù),但在其沿樹形結(jié)構(gòu)向下的某個后代處有一非零值。如果加入IZ,那么VAL就只代表具有一個或多個非零后代的非零系數(shù)。
為最有效地掃描樹形結(jié)構(gòu)來對結(jié)點進行量化并分配符號,量化器與符號分配器聯(lián)合使用。圖7描述了用來量化修剪樹系數(shù)的量化方法700的詳細(xì)的流程圖,圖8描述了用來給量化后的系數(shù)值分配符號值來表示它們的符號分配方法800的詳細(xì)流程圖。
方法700從塊702開始,運行到步驟704,在這里,從子波樹的一個結(jié)點獲得系數(shù)值。正如后面將討論的,量化方法以自下而上,深度優(yōu)先的方式掃描子波樹。這樣,第一個地址通常位于最高頻子帶,并且,隨著這一方法的每次迭代,沿樹形結(jié)構(gòu)向上到達更低頻率的子帶。當(dāng)量化值產(chǎn)生后,本方法跟蹤子結(jié)點的量化值,即,各子結(jié)點為非零值或零值。在步驟706,本方法將獲得的系數(shù)值量化為一個正值、負(fù)值或零值。在步驟208,對于與剛被量化的系數(shù)相聯(lián)系的結(jié)點,用一個初始符號值更新一標(biāo)記映射。標(biāo)記映射符號依賴于子結(jié)點的值和當(dāng)前結(jié)點的值。注意,因為掃描是自下而上的,標(biāo)記映射不能確定地表明一個結(jié)點是否是一個“修剪樹根”。因此,當(dāng)所有結(jié)點都被分配了一個初始符號值后,再次自上而下掃描樹以最終分配符號值。標(biāo)記映射是一種子波樹結(jié)點的索引,它用量化方法700填充。在標(biāo)記映射的每個地址處,該方法存儲一個初始符號可能的“數(shù)值”,可能的“數(shù)值修剪樹根”或可能的“修剪樹根”(以及可選的“孤立零點”)。如果量化系數(shù)具有一個非零值,那個系數(shù)的標(biāo)記映射位置被標(biāo)記上一個可能的“數(shù)值”符號,如果量化的系數(shù)值為零且其所有子結(jié)點均為零,則標(biāo)記映射位置就標(biāo)記上一個可能的“修剪樹根”。或者,如果量化系數(shù)值為零,但它的某后代不為零,則把它標(biāo)為“孤立零點”符號。最后,若量化系數(shù)有一數(shù)值而它的所有后代均為零值,標(biāo)記映射位置就被標(biāo)為一個可能的“數(shù)值修剪樹根”。
在步驟710,該方法詢問是否子波樹中的所有結(jié)點均被量化了。如果是否定回答,該方法執(zhí)行步驟712,選出子波樹中的一個新(下一個)結(jié)點或樹來進行量化。該方法然后回到步驟704。如果在步驟710中的詢問得到肯定回答,該方法執(zhí)行步驟714。該方法在步驟714詢問是否所有樹都被量化過了。如果回答是否定的,在步驟716,該方法選擇一個新(下一個)樹來進行量化。如果在步驟714中的詢問得到肯定回答,該方法執(zhí)行步驟718。這樣,在方法700中,所有樹中的所有結(jié)點均被量化并分配了一個初始符號,在步驟718,方法700調(diào)用圖8的符號分配方法800。各符號均分配完后,方法700在塊720結(jié)束。
方法800以自上而下方式掃描樹形結(jié)構(gòu),就是說,從根部到葉部。然而,該方法不必到達每一結(jié)點,因為在每次“修剪樹根”或“數(shù)值修剪樹根”出現(xiàn)時,樹形結(jié)構(gòu)已被修剪過了。具體地講,方法800從步驟802進入然后執(zhí)行步驟804。在步驟804,該方法從量化的系數(shù)樹中獲得一個量化系數(shù)。在步驟806,該方法從標(biāo)記映射中獲得與所獲系數(shù)相應(yīng)的初始符號。該方法在步驟808詢問是否初始符號是一個可能的“修剪樹根”。如果得到肯定回答,在步驟810,該方法分配“修剪樹根”符號給該結(jié)點。然后,在步驟812,該方法修剪這個樹形結(jié)構(gòu),即該方法忽略所有在該“修剪樹根”結(jié)點之下的所有結(jié)點,因為,由定義,所有這些結(jié)點均為零值。
在步驟820,該方法詢問是否所有結(jié)點已被選到。若步驟820得到的是否定回答,該方法沿著“否”路徑到達步驟814。在步驟814,當(dāng)所有被修剪的樹枝均被跳過之后,該方法選擇這棵樹的下一結(jié)點,這樣,一個自上而下、深度優(yōu)先的掃描就完成了。
如果步驟808的詢問被否定回答,該方法沿“否”路徑去執(zhí)行步驟816。在步驟816,該方法詢問是否標(biāo)記映射包含一個可能的“數(shù)值修剪樹根”的可能符號。若在步驟816的該詢問被肯定回答,該方法便在步驟822給該結(jié)點分配一個“數(shù)值修剪樹根”符號,將該值放入非零值列表中,并在步驟824修剪該樹形結(jié)構(gòu)。在步驟820,該方法詢問是否所有結(jié)點都被選過。若步驟820的詢問被否定回答,該方法執(zhí)行步驟814。然后,在步驟814,該方法選擇下一個結(jié)點來分配符號,跳過被修剪的樹枝。
如果步驟816的詢問被否定回答,在步驟818,該方法分配一個“數(shù)值”符號給該結(jié)點,在包含零值的數(shù)值列表中放入一個值。在步驟820,該方法詢問是否所有結(jié)點都被選過了。若步驟820的詢問得到否定回答,該方法執(zhí)行步驟814。然后,在步驟814,該方法選擇下一個結(jié)點進行符號分配。
該分配方法繼續(xù)進行直到所有結(jié)點都被分配了符號。這樣,如果步驟820的詢問被肯定回答,該方法執(zhí)行步驟826,在此方法800結(jié)束或返回方法700。圖7與圖8所討論的方法被統(tǒng)稱作“修剪樹熵編碼”(ZeroTree Entropycoding,ZTE)。
回到圖1和2,利用熵編碼器114例如一個傳統(tǒng)的算術(shù)編碼器編碼(步驟214)符號與數(shù)值。一個實現(xiàn)編碼的可能方法如下。各符號用一個三個字母來編碼。與“數(shù)值修剪樹根”符號一一對應(yīng)的非零值列表用不含零值的一個字母來編碼。剩下的與“數(shù)值”符號一一對應(yīng)的系數(shù)用一個包含零值的字母來編碼。當(dāng)掃描到樹葉的末端且沒有子代的結(jié)點時,不使用任何根符號。因此,可以通過不對該結(jié)點編碼任何符號以及用包含零值的字母編碼其系數(shù)的方法來節(jié)省一些比特。
由維頓等人在1987年6月號的美國計算協(xié)會會刊第30卷第6期第520至540頁上發(fā)表的“用于數(shù)據(jù)壓縮的算術(shù)編碼”(Witten et al,“ArithmeticCoding for Data Compression”,Comm.of the ACM,Vol 30,No.6,pp520-540,June 1987)一文中公開了一種對符號采用三個或四個編碼字母而對數(shù)值采用多個字母的示范性編碼器。事實上,本領(lǐng)域普通技術(shù)人員都明白,本發(fā)明可改為只簡單地將系數(shù)的值(或這些值的表示)根據(jù)分配的符號進行編碼。也即,只有系數(shù)的值被編碼,而不用對反映系數(shù)重要性的符號進行編碼。
在端口116,編碼器110產(chǎn)生了(在步驟216)被編碼的輸出圖像。通過應(yīng)用本發(fā)明,采用在子波樹各結(jié)點處的三種符號之一以及數(shù)位比特來編碼系數(shù)值,便可迅速而有效地編碼圖像。
眾多本發(fā)明的其它實施例都應(yīng)用了這一編碼方案來對圖像或視頻信號進行矢量或?qū)ο笮藜魳渚幋a。就是說,本發(fā)明的使用子波變換的編碼方案,應(yīng)用于矢量(或?qū)ο?修剪樹編碼的概念,即進行量化并對量化的子波系數(shù)進行修剪樹熵編碼。本發(fā)明的每一個矢量或?qū)ο笮藜魳渥硬ň幋a的實施例均構(gòu)成一個采用修剪樹對圖像或視頻剩余信號的子波系數(shù)進行編碼的矢量或?qū)ο蠓椒?。與每棵子波樹的每個結(jié)點相聯(lián)的是一個系數(shù)列表(一個矢量)而不是單一的系數(shù)。掃描樹的結(jié)點,量化系數(shù),對符號進行熵編碼,均采用了所謂的“矢量修剪樹熵”編碼。
不同的矢量或?qū)ο笮藜魳渚幋a的實施例可歸為兩類,先標(biāo)量子波變換再進行矢量(或?qū)ο?分組,或先矢量(或?qū)ο?分組再進行矢量子波變換。即,一幅圖像,一個視頻幀或一運動補償視頻剩余幀,或先進行標(biāo)量子波變換或先進行矢量子波變換。圖11-12所示的為第一類,即先計算標(biāo)量子波,在變換以后再將子波系數(shù)分組為矢量或?qū)ο蟆?br>
相反,圖9-10所示為的第二類,即輸入被分組為多個矢量然后通過一個矢量子波變換,產(chǎn)生作為多個矢量的輸出。在兩種情況中,結(jié)果可被看作為一幀子波系數(shù)的矢量或?qū)ο蟆?br>
簡而言之,在本發(fā)明的兩個實施例中(圖9和10),矢量被定義為一個固定塊的圖像或視頻象素或剩余信號的二維矩陣,并且子波變換為矢量子波變換。然后,或矢量量化或標(biāo)量量化與矢量修剪樹熵編碼相結(jié)合來產(chǎn)生一個編碼的輸出圖像。
在本發(fā)明的另外四個實施例中(圖11和12),計算一個標(biāo)量子波變換,然后,或者是將矢量定義為一固定塊的最粗級別上的子波系數(shù)的二維矩陣,或者是由一分段算法來確定任意大小和形狀的對象(也就是產(chǎn)生兩個實施例)。反過來,矢量或?qū)ο?,或進行矢量量化,或進行標(biāo)量量化,并結(jié)合矢量修剪樹熵編碼,來產(chǎn)生一個編碼后的輸出圖像(即產(chǎn)生另外兩個實施例,總共有四個實施例)。一種矢量子波的形式被W.李和Y.Q.張發(fā)表于1995年2月號的美國電子與電氣工程師協(xié)會年會會刊第83卷第317至335頁的“用于圖像和視頻壓縮的基于矢量的信號處理與量化”(W.Li和Y.Q.Zhang,“Vector-BasedSignal Processing and Quantization for Image and Video Compression”,Proceedings of the IEEE,Vol 83,pp.317-335,F(xiàn)eb,1995)一文中。
圖13描述了一個矢量子波的例子。一幅圖像或視頻剩余信號的矢量子波是一種變換,憑借它,圖像或視頻剩余的相鄰采樣被分組在一起形成多個矢量,然后子波變換作用在這些矢量上。矢量子波變換由下述步驟計算對幀進行子采樣,獲得一些以空間偏移幀表示的信號的子采樣幀;采用離散子波變換對每一個子采樣幀進行變換,產(chǎn)生相應(yīng)幀數(shù)的以子波變換系數(shù)表示的信號;以及,根據(jù)各幀以系數(shù)表示的信號的相應(yīng)系數(shù)表示信號,形成矢量表示信號。
就是說,幀(輸入信號)1302被分解成它的2維多相分量。每個多相分量是原始幀的一個空間偏移幀,如4個δ函數(shù)13041-13044所示。每一空間偏移幀再被4倍子采樣,即由采樣器1306分別在兩維進行2倍子采樣,產(chǎn)生多相分量。
接下來,子波變換1308被應(yīng)用到每個多相分量上,然后,通過將變換系數(shù)用相同的索引組合在一起而形成各矢量,每個系數(shù)對應(yīng)一個子波變換后的分量。以這種方式,m×n個象素的各矢量被變換為m×n個系數(shù)的各矢量1310。
矢量子波變換也可被認(rèn)為是許多重疊的幀,每個矢量或?qū)ο蟀恳粠械囊粋€系數(shù),在每一幀中,各系數(shù)具有相同的索引,幀數(shù)等于矢量的維數(shù)或?qū)ο蟮拇笮 ?br>
參見圖9-12詳細(xì)討論了幾個不同的實施例。具體是,圖11-12描述了四個采用先標(biāo)量子波變換再矢量(對象)分組的實施例。因為圖11和12的編碼器有許多相似之處,下面就通過使用不同的標(biāo)號來同時討論不同的實施例。
編碼器1100(1200)包括子波樹產(chǎn)生器1103(1203)、矢量或?qū)ο蠼M織器1104(1204)、可選的矢量/對象子波樹重構(gòu)器1108(1208)、矢量量化器1110(標(biāo)量量化器1210和后置量化處理1211)、符號分配器1112(1212)以及熵編碼器1114(矢量熵編碼器1214)。這些部分串聯(lián)相連,將端口1102(1202)的圖像處理為端口1116(1216)輸出的編碼圖像。
子波樹產(chǎn)生器1103(1203)執(zhí)行一子波分層子帶分解,產(chǎn)生輸入圖像1102(1202)的傳統(tǒng)的子波樹表示,如上面討論的。然后,矢量或?qū)ο蠼M織器1104(1204)在子波變換的低低頻帶通過相鄰系數(shù)的固定分組來定義出各矢量。通過對低低頻帶的子波系數(shù)應(yīng)用分段算法來定義出對象。分段被假定為完整的和無重疊的。因此,低低頻帶的每個系數(shù)是一個且僅是一個矢量或?qū)ο笾械脑?。本發(fā)明還可采用不同的分段算法,例如由P.C.麥可里恩在其于1991年6月完成的提交給麻省理工學(xué)院媒體技術(shù)與科學(xué)部的碩士論文“結(jié)構(gòu)化的視頻編碼”(Patrick Campbell Mclear,“Structured Video Coding”,MasterThesis submitted to the Media Arts and Science Section,Massachusetts Institute ofTechnology,June 1991)或待審的在1994年11月14日提交的美國專利申請08/339,491中所描述的算法。
更具體地,參考圖14-15,矢量1402或?qū)ο?502通過上采樣(upsample)來定義在下一個更精細(xì)級別的輪廓1404(1504),而傳播到更高頻帶。為使矢量和/或?qū)ο蟮拇笮∨c在粗尺度下的大小保持一致。在該輪廓中的每個矢量或?qū)ο蟮南禂?shù)重新分組為四個矢量1406或?qū)ο?506,如圖14-15所示。在粗級別中的矢量或?qū)ο蠼凶龈甘噶炕蚋笇ο?,而在下一個更細(xì)級別中的4個矢量或?qū)ο蠼凶鲎邮噶炕蜃訉ο蟆?個子矢量/或子對象用4個多相分量1408(1508)從輪廓中抽取出來。這相等于輪廓的一個被移位的子采樣。矢量父子關(guān)系與對象父子關(guān)系的例子分別顯示于圖14和15。這種關(guān)系決定矢量或?qū)ο笞硬洹?br>
矢量或?qū)ο笞硬渑c標(biāo)量ZTE編碼的子波樹相似,不同在于矢量或?qū)ο笞硬涞拿總€結(jié)點是一個子波系數(shù)矢量而不是單個值。如上述標(biāo)量ZTE編碼那樣,每棵樹以深度優(yōu)先模式被遍歷,從低低頻帶的根部到子代和孫代。隨著結(jié)點被經(jīng)過,根據(jù)當(dāng)前量化規(guī)范量化各系數(shù)?;氐綀D11和12,這種量化或由標(biāo)量量化器1210將矢量作為標(biāo)量進行量化,也可由矢量量化器1110進行單一矢量量化。可采用的各種矢量量化技術(shù)請參考艾倫戈士歐等人所著的由克魯瓦學(xué)術(shù)出版公司于1992年出版的《矢量量化和信號壓縮》(Allen Gershoet al.,“Vector Quantization and Signal Compression”,Kluwer AcademicPublisher,1992)一書。
如上面所述的標(biāo)量ZTE編碼,重組每棵子波樹的系數(shù)矢量來形成一個如圖16所示的“子波塊”是有益處的。為便于采用深度優(yōu)先方式,本發(fā)明可以選擇性地重組每棵樹中的量化系數(shù),來形成一個“子波塊”1604。如圖11和12所示,在量化之前,重組在矢量/對象子波樹重組器1108(1208)中完成,。由于重組是可選的,圖11和12都描述了重組器的這種可選性,因為路徑1106和路徑1206分別繞過了重組器與其相關(guān)功能。
圖16簡要地描述了本發(fā)明產(chǎn)生的子波塊1604。一幀中的每個子波塊1604包含了代表該塊空間位置上該幀的在所有級別和方位上的那些系數(shù)矢量,所述各塊按從父到子再到孫的升頻次序來組織。
就是說,本發(fā)明將一個從子波樹中低低頻帶1606(LL3)的一矢量1600擴展開的樹1602,映射為一個子波塊1604。這樣一個結(jié)構(gòu),允許在標(biāo)量量化情況下的量化因子,或在矢量量化情況下的代碼薄(如為每個給定矢量定義一個索引的查詢表),根據(jù)每一塊的空間位置與其在幀中所代表的內(nèi)容與該塊相適應(yīng)。
通過用深度優(yōu)先掃描方式,在掃描下一塊等等之前,每個子波塊都被完整地掃描以量化其系數(shù)矢量。例如,塊1610完全被掃描,然后是塊1612,然后是塊1614,如此下去,以一種屏面掃描方式通過各子波塊的幀。塊的次序不必是以一種屏面掃描方式,而可以是應(yīng)用所需的任意方式。
而且,本發(fā)明提出了兩個不同的方法來實現(xiàn)子波系數(shù)矢量的量化?;氐綀D11和12,量化可作為標(biāo)量量化作用于每個矢量的每個元素,或者作為矢量量化作用于每個矢量。在每棵樹的每個結(jié)點處,符號分配器1112(1212)分配一個符號來表征那個結(jié)點的量化矢量。符號和量化系數(shù)值都用熵編碼器1114(1214)例如一個算術(shù)編碼器來編碼。
在任一種量化過程之后,在任何其結(jié)點上的系數(shù)矢量為零矢量而其所有后代均為修剪樹的情況下存在修剪樹。通過分配符號來表示結(jié)點以及在修剪樹處對樹進行修剪,樹形結(jié)構(gòu)被有效地表示和編碼。一個算術(shù)編碼器用來分配最小位數(shù),只給那些解碼器所需的用來可靠重構(gòu)子波系數(shù)矢量樹的符號和值。
本發(fā)明的一個實施例(如圖12所示)使用子波系數(shù)矢量元素的標(biāo)量量化。量化之后,每個矢量將或全包含零值或包含一個或多個非零值。一個矢量修剪樹存在于其樹的每個結(jié)點上有零矢量處。一個矢量修剪樹根是一個矢量修剪樹的根。在矢量修剪樹根處的系數(shù)矢量為零矢量且矢量修剪樹根的所有后代本身也都為矢量修剪樹根。與標(biāo)量情況相似,作為一個可選項,可用“矢量孤立零點”符號,定義一個具有非零后代的零矢量。
修剪樹根的重要性在于樹可在修剪樹根處被修剪,因此不需有為已被修剪掉的系數(shù)編碼的位數(shù)。因此,為提高編碼效率,希望量化之后有盡可能多的修剪樹。一種方法是用一“后置量化處理器”1211(1011)去實現(xiàn)對每個矢量的后置-量化處理(如圖10和12所示),盡量使它變?yōu)榱闶噶?,這一處理對最終重構(gòu)的幀只引起可忽略的附加失真??捎嬎忝總€矢量的一個度量值,當(dāng)?shù)陀谀抽T限,該矢量將被置零。不同的度量方法可用于這種后置量化方法中,這完全取決于應(yīng)用。例如,可用L1規(guī)范,即元素的絕對值之和作為度量方法。
在矢量元素標(biāo)量量化以及后置量化處理使適當(dāng)?shù)氖噶繛榱闶噶恐螅瑢涓鹘Y(jié)點的掃描與分類以與標(biāo)量ZTE編碼中相同的方式進行。每個結(jié)點被分配三種符號之一“修剪樹根”,“數(shù)值修剪樹根”和“數(shù)值”(可選的是“孤立零點”-IZ)。這些符號有著同標(biāo)量ZTE編碼中相同的意義,不同僅在于結(jié)點為矢量且對零或非零的分類指的是整個矢量。一個熵編碼器用來對符號和數(shù)值表編碼。數(shù)值列表的構(gòu)造與在標(biāo)量ZTE編碼中的相同。
本發(fā)明的一個實施例(如圖11所示)使用子波系數(shù)矢量的矢量量化。矢量量化(Vector Quantization,VQ)是一成熟領(lǐng)域且有很多形式的令人滿意的VQ可供使用。如上所討論的,希望增加修剪樹根的數(shù)目而同時不對重構(gòu)幀造成很大附加失真。為達到這一結(jié)果,可對VQ適當(dāng)調(diào)整來結(jié)合一死區(qū)(圍繞其中所有矢量全量化為零矢量的原點的N維空間中的一部分)的形式,使得其度量值在門限之下的矢量被映射為作為零矢量重構(gòu)的索引。
矢量量化用一索引替換樹中每一結(jié)點的矢量,形成一矢量代碼薄,用來為結(jié)點選擇最佳重構(gòu)矢量。代碼薄用圖像的采樣訓(xùn)練集合訓(xùn)練編碼器來單獨產(chǎn)生。矢量量化之后,以相似于標(biāo)量ZTE編碼中的方式進行樹結(jié)點的掃描與分類,每個結(jié)點被分配三種符號之一“修剪樹根”,“數(shù)值修剪樹根”和“數(shù)值”(可選的是IZ(孤立零點))。這些符號與標(biāo)量ZTE編碼中有相同的定義,不同僅在于結(jié)點現(xiàn)在是一個代碼薄中的索引且零與非零指的是對于每一索引的代碼薄入口。一個熵編碼器被用來為符號和索引表編碼。索引表的構(gòu)造與在標(biāo)量ZTE編碼中的相同。
圖9和10顯示了用矢量子波變換的本發(fā)明可選的實施例。同樣,既然圖9和10的編碼器900和1000與圖11和12中的編碼器分別相似,裝置908-914和1008-1014便不討論了。既然這些裝置分別執(zhí)行與1108-1114和1208-1214相同的功能,對這些裝置的描述與上面所討論的相同。
然而,不同于編碼器1100和1200的是,編碼器900和1000用一個矢量組織器903(1003)與矢量子波樹產(chǎn)生器904(1004)相結(jié)合,如上面參考圖13所述。就是說,步驟13041-4共同構(gòu)成矢量組織,而步驟1306和1308共同構(gòu)成矢量子波變換。這樣產(chǎn)生矢量子波樹1310。在矢量子波樹產(chǎn)生之后,編碼器900和1000與編碼器1100和1200的行為分別相同。
本領(lǐng)域普通技術(shù)人員會明白,盡管矢量或?qū)ο笞硬ň幋a結(jié)合了修剪樹熵(ZTE)編碼方法,但它也可用其它編碼方法如嵌入式修剪樹子波(EZW)算法來實現(xiàn)。
本發(fā)明還包括一個處理“非平衡”子波樹的方法。盡管該方法在后面參考一修剪樹來描述,本發(fā)明并不受限制于修剪樹應(yīng)用,而是可用于任何普通的子波樹,包括前面討論的矢量與對象子波樹的概念。而且,本發(fā)明可結(jié)合任何子波編碼方法來實現(xiàn),如前面所說的ZTE和EZW。
通常,子波分解(變換)應(yīng)用于一幅具有“均勻長度”大小的輸入圖像。即,將輸入圖像分解成在每一頻率分辨率中所有子帶必為同樣大小,并且輸入圖像只能子波分解到提供大小相等的子帶的子波分解層級,如圖4和圖17所示。這通常被稱為“均勻子波分解”,且這種分解產(chǎn)生的子波樹被稱為“平衡”樹,如圖18所示。
然而,不滿足上述條件的圖像和視頻幀的子波分解將產(chǎn)生“非平衡”樹,如圖19所示。即,分解后,一個或多個子結(jié)點和/或?qū)O結(jié)點(等等)可能不存在。這種情況的一個簡單例子,會是一幅圖像其或高或?qū)?或二者均)為奇數(shù)長度,即圖像大小為(2n+1)×(2m+1),其中n和m為整數(shù)。這種子波分解后的子波樹的非均勻性產(chǎn)生了一種獨特的子波樹結(jié)構(gòu),它將降低編碼系統(tǒng)的編碼效率。就是說,由于解碼器預(yù)期為一平衡子波樹,所以必須要給解碼器傳送附加的信息,來幫助解碼器從“非平衡”子波樹中正確地重建編碼圖像。因此,這將占用圖像編碼所需的寶貴比特資源。
有兩種方法用于編碼產(chǎn)生非平衡樹的圖像。在第一種方法中,子波分解后輸入圖像或其子波系數(shù)用足夠的額外象素來填補以形成平衡樹。由于其數(shù)據(jù)點的延展以及由此損失的編碼效率,此方法并不盡如人意。第二種方法為每個非平衡樹分別專門定義父-子關(guān)系。其主要缺點在于附加的復(fù)雜性,它既需編碼器又需解碼器。用來描述其獨特父子關(guān)系的額外信息也降低了編碼效率。
在本發(fā)明中,非平衡樹首先映射為平衡樹然后不需附加額外開銷地進行編碼。下面從兩方面描述本發(fā)明,編碼器和解碼器。再次,用ZTE來描述本發(fā)明,但本發(fā)明不局限于此,也可用其它編碼方法。a)關(guān)于編碼器圖24描述了本發(fā)明編碼器2400的一個方塊圖,圖25描述了圖24編碼器2400的操作流程圖。為更好地理解本發(fā)明,在閱讀下面對本發(fā)明的說明時,讀者應(yīng)同時參考圖20,24和25。
編碼器2400包括子波樹產(chǎn)生器104、可選的子波樹映射器2410、可選的子波樹重構(gòu)器108、量化器110、符號分配器2420以及一個熵編碼器114。這些部件串聯(lián)連接,將端口102的圖像處理為端口106的編碼輸出圖像。值得注意的是編碼器2400與圖1的編碼器100相似,同樣的部分就用相同的標(biāo)號來表示。即,編碼器2400結(jié)合了一個附加的子波樹映射器2410,它反過來也影響符號分配器2420的功能,因此,子波樹映射器2410和符號分配器2420將在下面進進一步討論,而其它部分(或圖25中的步驟)已在前面描述過了。
參考圖24和25,一個任意形狀圖像(輸入圖像)被子波樹產(chǎn)生器104所分解。若輸入圖像被分解為一個平衡子波樹,則子波樹映射器2410所執(zhí)行的功能就不必要了,可以由圖24中的路徑106和圖25中的路徑208繞過去。但是,若用一任意形狀的子波變換將輸入圖像分解為子波子帶,則每個頻率分辨率下所得子帶將有不同大小。作為一個簡單的例子,考慮一長方形對象,其高和寬具有奇數(shù)長度。對于轉(zhuǎn)換為該對象的非平衡樹表示的不同子帶,表示這個對象的采樣不是同樣大小。在此種情況下,所得非平衡子波樹就要被子波樹映射器2410重新映射。
子波樹映射器2410(圖25中的步驟2510)重構(gòu)一個新的子波系數(shù)幀(或子波樹結(jié)構(gòu))。新的子波幀在各頻率位置上具有同樣大小的子帶,如圖20所示。新的子波子帶也是二倍大的。就是說,每個新的子帶大到足以容納所有來自原始子波變換相應(yīng)頻帶的系數(shù)。每個新子帶的左上角被來自原始子波子帶的系數(shù)所填充,空位置(丟失結(jié)點)被標(biāo)記為“EMPTY(空)”或“E”2010或被標(biāo)記為E的沒有信息的子結(jié)點所代替。
接下來,如前面討論過的編碼方法,例如修剪樹編碼方法如圖2中的步驟210-214應(yīng)用到新的“平衡樹”子波系數(shù)。所有的結(jié)點按修剪樹方法中所定義的次序被掃描。然而,附加的“EMPTY”結(jié)點需要調(diào)整符號分配器2420的功能(圖25中的步驟2520)。
更明確地說,若一個結(jié)點不是“EMPTY”,它作為一普通結(jié)點來編碼。一個“EMPTY”結(jié)點在掃描樹時被跳過,這意味著在有效映射中,一個新的符號“SKIP(跳過)”分配給該結(jié)點。帶有符號“SKIP”的結(jié)點不被編碼,因此它們不增加任何額外開銷。即,該結(jié)點的信息(或幅值)不被編碼,但符號“SKIP”被編碼和傳輸。這樣,符號分配器2420在前面ZTE方法中的符號中多加進一個符號“SKIP”。
而且,SKIP結(jié)點被象具有零值的系數(shù)一樣來處理。這樣,本發(fā)明不用改變修剪樹編碼方法的符號分配方案。
最后,雖然子波樹映射器2410只結(jié)合圖1的編碼器進行說明,應(yīng)理解的是,子波樹映射器2410可結(jié)合編碼器900,1000,1100和1200按相似的方式用于非平衡子波樹。b)關(guān)于解碼器圖26描述了一解碼器2600的簡化結(jié)構(gòu)方塊圖,用來對編碼輸出圖像比如從編碼器2400輸出的編碼圖像(位流)2605解碼。解碼器2600包括熵解碼部2610、運動補償/估計部2615、逆量化器部2620、逆映射部2625、逆變換部2630以及存儲器(或存貯器)2615,用來檢索或存儲不同的映射和列表,如有效性映射、符號列表、各種代碼薄和/或熵代碼表。
在路徑2605,解碼器2600接收一個編碼的位流(例如編碼的視頻圖像),并對不同的數(shù)據(jù)元素解碼,在路徑2640產(chǎn)生一解碼輸出。編碼位流可直接從傳輸通道或輸入緩沖器(沒顯示)接收。
確切地說,編碼的視頻位流由熵解碼部件2610接收,它通過一系列熵代碼表對圖像類型和所有其它信息解碼。不同的模式控制信息傳送到運動補償/估計部件2615,它可包含后向運動補償(MC)部分、插值MC部分、前向MC部分、幀內(nèi)編碼部分和各種幀存貯緩存器(存儲器)。恰當(dāng)?shù)剡x擇一個特定的運動補償或內(nèi)部編碼器依賴于解碼圖像的圖像類型。解碼的運動矢量,如果有的話,給出了從存儲的先前圖像或?qū)韴D像的位移,它也由運動補償/估計部2615接收。簡言之,先前和將來參考圖像被分別存儲于先前幀存貯緩存器和將來幀存貯緩存器(未示出)中。這些存儲的圖像幀用來結(jié)合運動矢量產(chǎn)生預(yù)測圖像。
熵編碼器部分2610也對子波樹的量化系數(shù)進行相應(yīng)的解碼。被解碼的量化系數(shù)傳送到逆量化器2620以恢復(fù)子波系數(shù)?;謴?fù)的子波系數(shù)送到逆映射部分2625。
在執(zhí)行部件2630的逆子波變換之前,子波系數(shù)幀被重新映射為其原始結(jié)構(gòu)。更確切地說,系數(shù)幀(子波樹)將所有結(jié)點初始化為零點。當(dāng)相關(guān)結(jié)點的幅值和索引被解碼后,系數(shù)幀便被更新。應(yīng)注意的是位流按照編碼器如編碼器2400采用的樹掃描次序進行解碼。在對每一結(jié)點解碼的過程中,若某結(jié)點符號不為“SKIP”,其符號與值便被解碼并用來更新系數(shù)幀。帶“SKIP”符號的結(jié)點被跳過。即,一旦檢測到“SKIP”符號,便指定為“EMPTY”結(jié)點。
解碼后的子波變換系數(shù)再由編碼器2400中所述映射的逆映射而映射回原始大小的幀。即,“EMPTY”結(jié)點從系數(shù)幀中移走。最后,逆子波變換應(yīng)用到子波系數(shù),重建出解碼圖像。最后,根據(jù)編碼模式,解碼后的圖像可加到一預(yù)測圖像中,如果有的話,在路徑2640產(chǎn)生解碼畫面。
為獲得任意形狀圖像和視頻物體的更高質(zhì)量和更有效的編碼,所公開的方法處理非平衡樹而不用附加任何額外開銷,即不用占用寶貴比特資源來通知解碼器非平衡樹的結(jié)構(gòu)。本方法結(jié)合了一個有效的映射方法,而該映射方法可與任何基于子波樹的編碼方案,包括修剪樹編碼方法,相結(jié)合使用。
這樣,相對于上面的編碼器2400的解碼器2600就全部描述完了。然而,應(yīng)理解,對應(yīng)于編碼器100,900,1000,1100和1200的解碼器也可以與用于上述編碼器2400中的相似方法來實現(xiàn)。就是說,用相應(yīng)的逆處理步驟對編碼信號進行解碼,產(chǎn)生原始輸入圖像。
本發(fā)明還包括一個用DC/AC表并預(yù)測的方法。在ZTE編碼方法中,在一個熵編碼器中,如圖1中的熵編碼器114,用一系列表來對有效符號編碼。
更明確地說,一個熵編碼器用三個不同的列表“TYPE”、“VALZ”和“VALNZ”,其中,表TYPE(有效性映射)用來對每個子波系數(shù)的有效符號編碼,表VALNZ用來對具有符號VZTR的子波系數(shù)值或位于樹葉上的非零值的子波系數(shù)值進行編碼,而表VALZ用來對剩下的非零子波系數(shù)值編碼。子波樹的所有頻帶共享這些表。
簡而言之,熵(算術(shù))編碼器用這些表來收集統(tǒng)計量,從而深入了解并揭示系數(shù)值范圍以及它們相對于其它系數(shù)值的位置的趨勢。這樣的信息可使算術(shù)編碼器提高編碼效率,例如,用較少比特的分配符號來表示經(jīng)常遇到的類型或系數(shù)值。
在本發(fā)明中,包括了兩個附加表,來表述子波樹中特殊的頻帶,更明確地說,用一個“DC”表來自適應(yīng)地更新LL頻帶(如圖21中所示頻帶1)中子波系數(shù)的分布。另外,用一個“AC”表來自適應(yīng)地更新HL,LH,和HH頻帶(如圖21中所示的頻帶2-4)中的子波系數(shù)的分布。剩下的頻帶采用前面討論過的兩個表,即表VALZ和VALNZ。表TYPE通常用于整個子波樹。
在各低分辨率頻帶中使用單獨列表的前提是,這些頻帶的子波系數(shù)分布與其它分辨率頻帶的子波系數(shù)分布明顯不同。
在第二個實施例中,對剩下的頻帶采用附加表。明確地說,用一個單獨列表AC2來自適應(yīng)地更新圖21中所示的頻帶5-7的子波系數(shù)分布。用一個單獨列表AC3來自適應(yīng)地更新圖21中所示的頻帶8-10的子波系數(shù)分布,以此類推。通常,對每個子波變換分辨率分配一個單獨列表。
在第三個實施例中,對于DC頻帶(圖21中的頻帶1),認(rèn)為系數(shù)類型都是“數(shù)值”(非零)。這樣,這一頻帶中的系數(shù)的符號不被編碼,只有系數(shù)值被編碼,因此,進一步提高了編碼效率。
本發(fā)明還包括一種改善LL頻帶系數(shù)編碼的方法,它采用一種后向預(yù)測方法。參考圖22,若a,b,c和x是LL頻帶的四個非零子波系數(shù),則用x項為一差值編碼,如下若|a-b|<|a-c|,則編碼(x-c)(1)否則編碼(x-b)接下來,解碼器計算x值,如下若|a-b|<|a-c|,則x=value+c (2)否則x=value+b其中,“value”是解碼器接收到的值。簡而言之,等式(1)表示若abs(a-b)<abs(a-c),則x就接近c(一個水平系數(shù)),否則,x就接近b(一個垂直系數(shù))。這樣,此方法不需要傳輸比特(額外開銷)去描述預(yù)測所基于的方向。
本發(fā)明還包括一種提供空間分級修剪樹編碼的方法。該方法使用一種寬度優(yōu)先或頻帶優(yōu)先的掃描次序。即,先編碼低低頻帶的子波系數(shù),然后編碼其它低分辨率頻帶的系數(shù)。接下來,一個較高分辨率的系數(shù)被編碼并放入位流中,如圖23所示。位流中各部分(數(shù)1-10)相應(yīng)于圖21所示各頻帶。這種方法繼續(xù)下去直到最后高高頻帶的各系數(shù)被編碼并放入位流。
簡言之,每一分辨率分配或占用位流中專門的一頻帶。因此,位流的部分解碼可提供低分辨率的解碼圖像。即,通過用一部分逆子波變換便可獲得一低分辨率圖像。這一方法簡化了低分辨率的解碼計算復(fù)雜性。
而且,在圖像編碼過程中,可以控制僅僅一個分辨率下的位速率。為了在任意位速率的各種分辨率下進行編碼,對每個分辨率必須分配不同的量化步長(量化器)。因此,對任何N級子波變換,編碼器必須定義大小為N的量化步長。
圖27描述了本發(fā)明的編碼系統(tǒng)2700和解碼系統(tǒng)2705。編碼系統(tǒng)2700包括通用目的計算機2710和各種輸入/輸出裝置2720。通用目的計算機包括中央處理單元(CPU)2712、存儲器2714以及用來接收和編碼圖像序列的編碼器2716。
在一個優(yōu)選實施例中,編碼器2716簡單地為前面討論過的編碼器100,編碼器900,編碼器1000,編碼器1100,編碼器1200和/或編碼器2400。編碼器2716可以是通過通信信道與CPU2712相連的物理裝置。或者,編碼器2716也可以用應(yīng)用軟件來表示,該軟件由存儲裝置如磁盤或光盤裝載,并駐留于計算機存儲器2714中。這樣本發(fā)明的編碼器100,編碼器900,編碼器1000,編碼器1100,編碼器1200和編碼器2400可被存儲在計算機可讀介質(zhì)中。
計算機2710可與一系列輸入輸出設(shè)備2720相連,例如鍵盤,鼠標(biāo),數(shù)碼相機,便攜式攝錄機,視頻監(jiān)視器,各種類型的成像裝置或存儲裝置,包括但不局限于磁帶驅(qū)動器,軟盤驅(qū)動器,硬盤驅(qū)動器,或光盤驅(qū)動器。輸入設(shè)備用來提供輸入給計算機以產(chǎn)生編碼視頻位流,或者從存儲裝置或成像裝置接收視頻圖像序列。
編碼系統(tǒng)通過通信信道2750與解碼系統(tǒng)相連。本發(fā)明對通信信道類型沒有限制。
解碼系統(tǒng)2705包括通用計算機2730和各種輸入/輸出設(shè)備2740。通用計算機包括中央處理單元(CPU)2732、存儲器2734和用來接收編碼的圖像序列并對其解碼的解碼器2736。
在優(yōu)選實施例中,解碼器2736簡單地為前面討論過的解碼器2600或任何與上述編碼器100,900,1000,1100和1200互補的解碼器。解碼器2736可為通過通信信道與CPU 2732相連的物理裝置?;蛘?,解碼器2736也可用應(yīng)用軟件來表示,該軟件由存儲裝置如磁盤或光盤裝載,并駐留于計算機的存儲器2734中。這樣,本發(fā)明的解碼器2600以及任何與編碼器100,900,1000,1100和1200相對應(yīng)的解碼器可被存儲在計算機可讀介質(zhì)中。
計算機2730可與一系列輸入輸出設(shè)備2740相連,如鍵盤,鼠標(biāo),視頻監(jiān)視器或各種類型的存儲或分發(fā)圖像的裝置,這包括但不局限于磁帶驅(qū)動器,軟盤驅(qū)動器,硬盤驅(qū)動器或光盤驅(qū)動器。輸入設(shè)備使計算機可以存儲和分發(fā)解碼后的視頻圖像序列。
盡管在此展示并詳細(xì)討論了采用本發(fā)明內(nèi)容的不同實施例,但本領(lǐng)域普通技術(shù)人員可以容易地設(shè)計出許多仍采用這些內(nèi)容的其它不同實施例。
權(quán)利要求
1.一種用于采用子波變換編碼輸入圖像來產(chǎn)生子波樹的方法,該子波樹具有組成為父子關(guān)系的多個結(jié)點,所述方法包括步驟(a)為輸入圖像生成第一子波樹,所述第一子波樹具有多個系數(shù),所述各系數(shù)分別與所述第一子波樹的一個結(jié)點相對應(yīng);(b)將所述第一子波樹映射到第二子波樹,所述第二子波樹所具有的系數(shù)幀不同于所述第一子波樹的系數(shù)幀;并且(c)編碼所述第二子波樹的所述多個系數(shù)。
2.如權(quán)利要求1所述的方法,其中,所述第一子波樹是非平衡子波樹,所述第二子波樹是平衡子波樹。
3.如權(quán)利要求1所述的方法,還包括以下步驟(b1)量化所述第二子波樹的所述多個系數(shù);并且(b2)在編碼步驟(c)之前給每一個所述量化后的系數(shù)分配一個符號;并且其中,在所述編碼步驟(c)中,根據(jù)所分配的符號編碼所述第二子波樹的所述多個量化后的系數(shù)。
4.一種用于采用子波變換編碼輸入圖像來產(chǎn)生子波樹的方法,該子波樹具有組成為父子關(guān)系的多個結(jié)點,所述方法包括步驟(a)為輸入圖像生成一子波樹,所述子波樹具有多個系數(shù),所述各系數(shù)分別與所述子波樹的一個結(jié)點相對應(yīng);并且(b)采用編碼一個或更多頻帶的與所述一個或更多頻帶相關(guān)的列表,來編碼所述子波樹的所述多個系數(shù)。
5.一種用于采用子波變換編碼輸入圖像來產(chǎn)生子波樹的方法,該子波樹具有組成為父子關(guān)系的多個結(jié)點,所述結(jié)點被組成多個頻帶,所述方法包括以下步驟(a)為輸入圖像生成一子波樹,所述子波樹具有多個系數(shù),所述各系數(shù)分別與所述子波樹的一個結(jié)點相對應(yīng);并且(b)采用一差值編碼所述子波樹的多個系數(shù)。
6.如權(quán)利要求5所述的方法,其中,所述差值按下面關(guān)系被編碼如果|a-b|<|a-c|,則編碼x-c,否則,編碼x-b其中a,b,c和x是均在一個所述頻帶中的四個子波系數(shù)。
7.一種對下述信號進行解碼的方法,該信號攜帶有采用子波變換進行編碼以生成子波樹的圖像,該子波樹具有組成為父子關(guān)系的多個結(jié)點,所述方法包括以下步驟a)從該信號中生成第一子波樹,所述第一子波樹具有多個系數(shù),所述各系數(shù)分別與所述第一子波樹的一個結(jié)點相對應(yīng);b)將所述第一子波樹映射到第二子波樹,所述第二子波樹所具有的系數(shù)幀不同于所述第一子波樹的系數(shù)幀;并且c)采用所述第二子波樹來生成該圖像。
8.一種用于采用子波變換編碼輸入圖像來生成子波樹的裝置,該子波樹具有組成為父子關(guān)系的多個結(jié)點,所述裝置包括子波樹生成器,用于為輸入圖像生成第一子波樹,所述第一子波樹具有多個系數(shù),所述各系數(shù)分別與所述第一子波樹的一個結(jié)點相對應(yīng);子波樹映射器,連接到所述子波樹生成器,用于將第一子波樹映射到第二子波樹,所述第二子波樹所具有的系數(shù)幀不同于所述第一子波樹的系數(shù)幀;以及編碼器,連接到所述子波映射器,用于編碼所述第二子波樹的所述多個系數(shù)。
9.如權(quán)利要求8所述的裝置,還包括量化器,連接到所述子波樹映射器,用于量化所述第二子波樹的所述多個系數(shù);以及符號分配器,連接到所述量化器和所述編碼器,用于分配一個符號給每個量化后的系數(shù),其中,所述第二子波樹的量化后的系數(shù)是根據(jù)所分配的符號被編碼的。
10.一種用于采用子波變換編碼和解碼輸入圖像來生成子波樹的信號處理系統(tǒng),該子波樹具有組成為父子關(guān)系的多個結(jié)點,所述系統(tǒng)包括編碼部,包括子波樹生成器,用于為輸入圖像生成第一子波樹,所述第一子波樹具有多個系數(shù),所述各系數(shù)分別與所述第一子波樹的一個結(jié)點相對應(yīng);子波樹映射器,連接到所述子波樹生成器,用于將所述第一子波樹映射到第二子波樹,所述第二子波樹所具有的系數(shù)幀不同于所述第一子波樹的系數(shù)幀;和編碼器,連接到所述子波映射器,用于編碼所述第二子波樹的所述多個系數(shù);以及解碼部,連接到所述編碼部,所述解碼部包括解碼器,用于從所述信號中解碼多個系數(shù),所述各系數(shù)分別與所述第一子波樹的一個結(jié)點相對應(yīng);子波樹映射器,連接到所述解碼器,用于將所述第一子波樹映射到第二子波樹,所述第二子波樹所具有的系數(shù)幀不同于所述第一子波樹的系數(shù)幀;和逆變換部,連接到所述子波樹映射器,用于將所述第二子波樹變換為所述圖像。
全文摘要
公開了一種在基于子波的編碼技術(shù)中編碼子波樹的裝置及其方法,它既能夠處理平衡子波樹又能夠處理非平衡子波樹,還能夠提高整體編碼效率。
文檔編號H04N1/41GK1255218SQ98802489
公開日2000年5月31日 申請日期1998年2月11日 優(yōu)先權(quán)日1997年2月12日
發(fā)明者艾拉吉·索達加, 李鴻儒 申請人:薩爾諾夫公司, 夏普公司