專利名稱:嵌入式零樹編碼方法及其電路結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于視頻數(shù)據(jù)壓縮或圖像數(shù)據(jù)壓縮領(lǐng)域,尤其涉及一種嵌入式零樹編碼方法,及其電路結(jié)構(gòu)。
背景技術(shù):
在視頻數(shù)據(jù)壓縮和圖像數(shù)據(jù)壓縮中,為提高壓縮性能經(jīng)常使用數(shù)學(xué)變換技術(shù)。目前經(jīng)常使用的一種數(shù)學(xué)變換是小波變換,圖1、圖2為小波變換頻帶示意圖,其中,L表示低頻,H表示高頻。圖1是圖像的1層小波變換,它產(chǎn)生4個子帶。圖2是圖像的金字塔形4層小波變換,是在圖像壓縮領(lǐng)域常用的一種小波變換。它是在1層小波變換之后,對低頻子帶LL1再次進行第二層的小波變換,然后再對產(chǎn)生的LL2進行第三層的小波變換,最后再對產(chǎn)生的LL3進行第四層的小波變換。
圖像經(jīng)小波變換后,其小波變換系數(shù)(簡稱小波系數(shù))有兩個特點第一、能量主要集中在低頻子帶;其余區(qū)域的能量較少,而且主要集中在與圖像灰度突變邊緣對應(yīng)的小波系數(shù)處,且一般高層的系數(shù)比相應(yīng)的低層系數(shù)的絕對值大。第二、同一方向上不同層的子帶之間存在自相似性。這種層間的自相似,一方面,反映在對應(yīng)于邊緣的各層大系數(shù)位置間的相似;另一方面,也反映在小系數(shù)的層間關(guān)系上,與一個高層的小系數(shù)相應(yīng)的低層系數(shù)一般更小。
為了充分利用小波系數(shù)的這兩個特點,J.M.Shapiro提出了小波系數(shù)的嵌入式零樹編碼方法(見1.“Embedded image coding using zerotrees of wavelet coefficients”,1993,IEEE Trans.on Signal Processing.1993,41(12)3445~3462.2.“A fast technique foridentifying zerotrees in the EZW algorithm”.1996,Proc.IEEE Conf.on Acoustics,Speech andSignal Processing,Atlanta,Georgia,USA,1996,1455~1458)。這是一種高效的編碼方法,而且碼流具有嵌入式的性質(zhì)。即可以隨時截斷,精確地達到所需的壓縮比,而解碼、恢復(fù)出的圖像可以保持較完整的全局信息。它的實現(xiàn)方法是,對小波系數(shù)逐次量化,每次量化后,尋找同一方向上為零的小波系數(shù),用固定的樹狀結(jié)構(gòu)進行組織和編碼,即所謂“零樹編碼”。
小波系數(shù)的樹狀結(jié)構(gòu),如圖2中所示,用線連起來的小波系數(shù)構(gòu)成小波樹。其中位于高層子帶的系數(shù)稱為父結(jié)點,低層子帶相應(yīng)位置的系數(shù)叫做后代結(jié)點。位于最高層高頻子帶的一個結(jié)點和它的所有后代結(jié)點組成一棵小波樹。一幅圖像中,所有高頻子帶的小波系數(shù)沿各自方向形成一棵棵獨立的小波樹。
根據(jù)子帶之間的自相似性,任一個為0的結(jié)點,它的后代結(jié)點也為0的概率較大。如果這種情況成立,就認(rèn)為構(gòu)成一棵零樹,即,全是0值的樹。利用這種零樹編碼,可以將0值小波系數(shù)有效的組織和表達,而且小波樹結(jié)構(gòu)固定,不需另加說明,因而獲得了較高的壓縮性能。
零樹編碼的另一重要方法,逐次量化逼近,是通過逐漸降低小波變換系數(shù)的量化閾值,逐步完成量化和編碼。其中,每一次量化都將每個小波系數(shù)變成0或1,所有這些1比特數(shù)就形成一個位平面。每一次編碼對一個位平面執(zhí)行。
逐次量化、編碼使小波系數(shù)的較重要的數(shù)據(jù)(較大的數(shù)值部分)先行輸出。因此,即使任意停止碼流輸出,根據(jù)已有的數(shù)據(jù),仍然可以產(chǎn)生出粗糙,但是完整的圖像,即所謂“嵌入式”性能。
每次量化后的編碼過程包括主控和從屬兩個過程,主控過程對位平面中的零樹結(jié)構(gòu)進行判別和編碼;從屬過程進行大系數(shù)細(xì)化編碼。
在主控過程中,使用孤獨零、零樹根、正大系數(shù)、負(fù)大系數(shù)等4種符號來表示位平面中的各個結(jié)點的比特及其與前輩、后代結(jié)點之間的關(guān)系。其中,孤獨零表示某結(jié)點的比特是0值,但它的后代結(jié)點不全是0值。零樹根表示某結(jié)點的比特和它的所有后代結(jié)點的比特全是0值,而且它的前輩結(jié)點不是零樹根。正大系數(shù)表示某結(jié)點的比特是+1值,而負(fù)大系數(shù)表示某結(jié)點的比特是-1值。當(dāng)1棵零樹產(chǎn)生,1個零樹根符號就代表了此結(jié)點和它的所有后代結(jié)點的比特0值。因為小波樹內(nèi)形成零樹的概率較大,所以使用零樹根符號編碼可以獲得較高的壓縮性能。
不過,根據(jù)零樹根的定義,一個結(jié)點是否為零樹根,不僅要判斷其所有后代結(jié)點,還要判斷其所有前輩結(jié)點,因而需要較復(fù)雜的遞歸處理。
零樹根的數(shù)目直接關(guān)系到數(shù)據(jù)壓縮的性能。零樹根數(shù)目越多,數(shù)據(jù)壓縮性能越高。因此,零樹編碼需要盡量增加零樹根的數(shù)目。
阻礙零樹形成的因素是大絕對值系數(shù)的存在。對于大絕對值系數(shù),在后面的位平面編碼中,仍然可能為大系數(shù),從而可能多次阻礙零樹根的產(chǎn)生。Shapiro設(shè)計了一種“大系數(shù)跳過處理”技術(shù)。一旦小波系數(shù)在某一位平面的比特值是1,即成為大系數(shù),則在后面的低位平面的編碼中將被作為0值處理,而且不再分配符號。
隨著閾值的降低,大系數(shù)越來越多。跳過處理使它們不能影響后面的零樹根的產(chǎn)生,因而保證了壓縮性能。但是,大系數(shù)不能只由一個主控過程的符號來編碼,否則圖像的精確度將不能保證。因此,附加一個從屬過程,將大系數(shù)的低幅度位依次輸出。
從屬過程的實現(xiàn)較為簡單。而跳過處理的實現(xiàn)有一定難度。隨著由高位平面向低位平面的編碼,大系數(shù)越來越多,而且大系數(shù)的位置沒有規(guī)則,要讓電路不斷地調(diào)整、跳過,難度較大。一般的解決方法是,一旦一個結(jié)點成為大系數(shù)之后,就將其所有的低幅度位清除為0值,并參加所有低位平面的編碼。然后,增加一個后處理電路,對編碼符號再進行篩選。
這種跳過處理也需要遞歸處理,例如,當(dāng)一個結(jié)點是前大系數(shù),需要跳過,但是清為0值并編碼后,若編碼成零樹根,簡單地跳過這個符號,它的后代結(jié)點將無法解碼。因此,跳過之后,必須對其子結(jié)點補償輸出4個零樹根符號;而如果某個子結(jié)點也是前大系數(shù),那么,還需對相應(yīng)的孫結(jié)點再補償輸出4個零樹根符號,依此類推。僅當(dāng)它被編碼為孤獨零,可以簡單地跳過。
由上所述,嵌入式零樹編碼算法中的零樹根符號編碼和大系數(shù)跳過處理都要進行較繁復(fù)的遞歸處理,有待于通過簡捷的方法來實現(xiàn)。
另外,嵌入式零樹編碼采用逐次量化、編碼方法,而且每次量化后大系數(shù)需要清0及跳過處理,因此進行串行式的逐位平面編碼較為容易。但是,量化的次數(shù)一般在10比特以上,要串行執(zhí)行10個以上的位平面的零樹編碼,對于要求快速數(shù)據(jù)壓縮的應(yīng)用將不得不使用處理速度非常高的集成電路。低成本的集成電路難以實現(xiàn)。因此,零樹編碼需要快速的編碼方法,來降低對集成電路性能的要求。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種快速、簡捷的嵌入式零樹編碼方法,使零樹編碼在視頻數(shù)據(jù)壓縮和圖像數(shù)據(jù)壓縮中可以快速實現(xiàn),并降低對電路性能和資源的要求,應(yīng)用靈活且易于實現(xiàn)。
本發(fā)明的另一目的在于提供一種實現(xiàn)上述方法的嵌入式零樹編碼電路結(jié)構(gòu)。
本發(fā)明的嵌入式零樹編碼方法,其步驟包括1、按照由低層子帶向高層子帶掃描順序,逐組、逐層、逐樹讀入小波系數(shù);2、讀入的小波系數(shù)同時執(zhí)行對應(yīng)多個閾值的多級量化;3、多級量化產(chǎn)生的多個幅度位進行預(yù)處理,去除位平面之間的關(guān)聯(lián);4、各個位平面獨立、并行編碼,為所有結(jié)點分配符號;5、待一棵小波樹的結(jié)點全部分配符號后,由高層子帶向低層子帶掃描,篩選有效符號輸出。
所述預(yù)處理為一旦發(fā)現(xiàn)小波變換系數(shù)的一個高幅度位是1,就將其所有低幅度位清零,并做下標(biāo)記,以保證預(yù)處理后的各個幅度位可以獨立、并行地編碼。
所述編碼操作為根據(jù)各個幅度位及其后代的性質(zhì)分配相應(yīng)的編碼符號;編碼符號共有四種,孤獨零、零樹根、正大系數(shù)、負(fù)大系數(shù);符號分配規(guī)則是,當(dāng)幅度位是0值,但它的后代不全是0值時,分配孤獨零符號;當(dāng)幅度位是0值,而且它的后代也全是0值時,分配零樹根符號;當(dāng)幅度位是1值,而且所屬系數(shù)是正數(shù)時,分配正大系數(shù)符號;當(dāng)幅度位是1值,但是所屬系數(shù)是負(fù)數(shù)時,分配負(fù)大系數(shù)符號。
所述分配的符號暫時存入輸出緩存器中。
所述有效符號指該符號不屬于有效零樹根符號的后代,而且不屬于高位平面中的大系數(shù)。
上述各位平面的有效符號是交替或順序輸出的。
本發(fā)明的嵌入式零樹編碼電路結(jié)構(gòu),包括掃描與量化模塊、預(yù)處理器模塊、一個或多個符號分配模塊、一個或多個輸出控制模塊,其中掃描與量化模塊掃描、讀取小波變換系數(shù),進行多級量化;由預(yù)處理器模塊對量化后的各幅度位進行清零和標(biāo)記;符號分配模塊對預(yù)處理后的各幅度位并行編碼,分配相應(yīng)符號;輸出控制模塊篩選有效符號輸出。
本發(fā)明的嵌入式零樹編碼電路結(jié)構(gòu)還包括緩存器,一棵小波樹的所有小波系數(shù)編碼數(shù)據(jù)暫時存入緩存器;然后輸送到輸出控制模塊。
所述預(yù)處理器包括“比特非與”和“比特或”邏輯電路,“比特非與”邏輯電路使小波變換系數(shù)只保留量化后的最高的幅度位1,其低幅度位全部被清為0,處理后的幅度位用來并行編碼;“比特或”邏輯電路保留小波變換系數(shù)量化后的最高的幅度位1,并將其低幅度位全部置為1,處理后的幅度位用來作為低1幅度位的大系數(shù)標(biāo)志。
本發(fā)明的嵌入式零樹編碼電路結(jié)構(gòu)還包括多選一控制模塊,控制各位平面有效符號的交替或順序輸出。
本發(fā)明方法將嵌入式零樹編碼過程分為兩級處理,第一級處理對一棵小波樹的所有小波變換系數(shù)用4種符號編碼;第二級處理篩選有效符號輸出。
首先,按照由低層子帶向高層子帶掃描順序、逐組、逐層、逐樹讀入小波系數(shù)。并將對應(yīng)多個閾值的多次量化同時執(zhí)行。量化后數(shù)據(jù)進行預(yù)處理,去除位平面之間的關(guān)聯(lián)。然后各個位平面獨立編碼,以孤獨零(00)、零樹根(10)、正大系數(shù)(01)、負(fù)大系數(shù)(11)四種符號為所有結(jié)點編碼。將編碼符號輸入緩存器中暫存。待一棵小波樹的結(jié)點全部分配符號后,再按照由高層子帶向低層子帶的掃描順序,篩選有效的編碼符號輸出。
每個位平面的編碼使用四種編碼符號,孤獨零(00)、零樹根(10)、正大系數(shù)(01)、負(fù)大系數(shù)(11)。其低比特對應(yīng)小波系數(shù)量化后數(shù)值,當(dāng)為0時,表示量化后為小系數(shù);當(dāng)為1時,表示量化后為大系數(shù)。其高比特略為復(fù)雜,當(dāng)為0時,表示要么不是零樹,要么是正大系數(shù);當(dāng)為1時,表示要么是零樹,要么是負(fù)大系數(shù)。
根據(jù)前面算法介紹中符號的定義,正大系數(shù)(01)、負(fù)大系數(shù)(11)的分配完全由系數(shù)自身數(shù)值決定;孤獨零(00)則由其自身和后代結(jié)點共同決定;而零樹根(10)則不僅依賴自身和后代結(jié)點的性質(zhì),同時還受前輩結(jié)點的影響。
對于大系數(shù)的跳過處理,由于前大系數(shù)被作為0值編碼,分配的符號只能是孤獨零或零樹根。為孤獨零時,可以直接跳過;為零樹根時,必須在其子結(jié)點位置補償分配4個零樹根;若某個子結(jié)點也是前大系數(shù),則要在相應(yīng)孫結(jié)點位置再補償分配4個零樹根,依此類推??梢姡瑹o論是編碼,還是跳過處理,遞歸處理總是針對零樹根符號。
采用兩級處理方法可以避免零樹根符號所需要的遞歸處理。具體的方法是,在第一級處理中,由低層子帶向高層子帶逐組、逐層、逐樹進行掃描,同時給所有結(jié)點分配符號。所謂“逐組、逐層、逐樹”中的組、層和樹是指,每個結(jié)點的4個子結(jié)點組成一組;每層與小波變換的層次相一致,但只限于一棵小波樹內(nèi);每棵樹由最高層高頻子帶中的一個結(jié)點和它的所有后代結(jié)點組成。第一級處理為所有結(jié)點分配符號,第二級處理就不再需要符號分配。
第一級處理中,由于遵循從后代結(jié)點向前輩結(jié)點依次、單向、規(guī)則的掃描編碼,孤獨零、正大系數(shù)、負(fù)大系數(shù)符號都可以確定。但是零樹根不能完全確定,因為單向編碼僅執(zhí)行了零樹根符號定義的一部分。即,當(dāng)此結(jié)點的比特和它的所有后代結(jié)點的比特全是小系數(shù)0,分配零樹根符號,而沒有考慮其前輩結(jié)點的性質(zhì)。而且是給所有結(jié)點分配符號,必然產(chǎn)生冗余的零樹根符號和應(yīng)跳過的分配給前大系數(shù)的符號。
跳過冗余的符號,篩選有效的符號輸出,由第二級處理完成。第二級處理采用由高層子帶向低層子帶掃描順序,這是根據(jù)零樹解碼的要求,先輸出前輩結(jié)點的符號,后輸出后代結(jié)點的符號,以順序地恢復(fù)小波系數(shù)。
跳過冗余的符號,也是根據(jù)前輩和自身結(jié)點的性質(zhì),跳過冗余的零樹根符號和分配給前大系數(shù)的符號,也需要從高層向低層的掃描。其順序與輸出過程的一致,因此,可以將其嵌入到輸出過程中,減少額外的掃描。
具體說來,在第二級處理中,當(dāng)從高層向低層掃描時,若發(fā)現(xiàn)1個零樹根符號,如果它不是前大系數(shù),那么是有效的編碼符號,予以輸出。而它的所有后代結(jié)點符號都不再需要輸出。若它是前大系數(shù),那么是無效的符號,它的4個子結(jié)點的符號必須輸出。但是,若某個子結(jié)點也是前大系數(shù),則同其父結(jié)點的處理,放棄無效符號,輸出相應(yīng)4個孫結(jié)點的符號。依此類推。對于孤獨零符號,若它是前大系數(shù),只要簡單地跳過。
歸納起來,第一級處理是根據(jù)結(jié)點自身數(shù)值及其后代結(jié)點數(shù)值,分配編碼符號。由于第一級處理為所有結(jié)點分配了符號,第二級處理只需篩選有效的符號輸出。這兩級處理都不需要遞歸處理,只需要單向處理,因此,它是一種簡捷、有效的零樹編碼方法。
簡捷、快速地實現(xiàn)單個位平面的零樹編碼,仍不足以滿足以低成本集成電路快速編碼的要求。由于10個以上的位平面存在,逐個位平面的串行編碼將消耗大量的運算時間。
并行處理是一種常用的減少運算時間的方法。但如何進行并行處理,對運算時間、成本影響很大。前面提到,小波樹之間是相互獨立的,因此可以直接進行并行處理。但是,從一個存儲器中同時讀寫多個小波樹的數(shù)據(jù),將給固定帶寬的數(shù)據(jù)傳輸帶來較大的困難。
本發(fā)明提出多個位平面并行處理,使用同一棵小波樹的數(shù)據(jù),不改變數(shù)據(jù)傳輸帶寬。雖然,由于大系數(shù)的跳過處理,高位平面的零樹編碼影響低位平面的零樹編碼,要實現(xiàn)多個位平面的并行處理,需要設(shè)法去除位平面之間的關(guān)聯(lián),但是,通過一個巧妙而簡單的預(yù)處理器,對前大系數(shù)的低幅度位進行清零,并進行標(biāo)記,就可以保證各個位平面獨立、并行地進行編碼。
具體的預(yù)處理器的操作包括兩部分,一是“比特非與”邏輯運算,將每個高幅度位取“反”,再和每個低幅度位相“與”。當(dāng)任一高幅度位是1時,“比特非與”操作將比它低的所有幅度位清成0值。二是“比特或”邏輯運算,將每個高幅度位和每個低幅度位相“或”。當(dāng)任一高幅度位是1時,“比特或”操作將比它低的所有幅度位置成1值。因此,“比特非與”操作后的每個幅度位可以獨立地在各自的位平面中編碼,而“比特或”操作后每個幅度位可以作為其低一幅度位的前大系數(shù)標(biāo)記。標(biāo)記為1時,此幅度位0值屬于前大系數(shù),應(yīng)該跳過。否則,正常編碼。
根據(jù)上述零樹編碼方法,本發(fā)明設(shè)計了相應(yīng)的電路結(jié)構(gòu),如圖5所示。掃描與量化模塊控制小波系數(shù)由外部存儲器的輸入,使按照由低層子帶向高層子帶逐組、逐層、逐樹的掃描順序。小波系數(shù)進入零樹編碼電路后,先執(zhí)行多級量化。然后由預(yù)處理器對量化系數(shù)進行預(yù)處理,使各幅度位可以獨立編碼。符號分配模塊給每個預(yù)處理后的幅度位分配1個符號,僅根據(jù)其自身及后代結(jié)點數(shù)值。各個符號依次存入輸出緩存器中。待一棵小波樹的所有系數(shù)都已經(jīng)分配了符號,并進入了輸出緩存器后,輸出控制模塊開始工作。按照由高層子帶向低層子帶的掃描順序,輸出控制模塊篩選各自位平面的有效符號輸出。多選一控制模塊使各個位平面的輸出交替進行。
如果有必要簡化電路結(jié)構(gòu),輸出控制模塊的數(shù)目可以減少。例如,使用1個輸出控制模塊,見圖6所示,將多選一控制模塊提到輸出控制模塊之前,順序選擇多個位平面的符號輸出給輸出控制模塊,再篩選有效符號輸出。
本發(fā)明的關(guān)鍵在于一是兩級處理,可以去除嵌入式零樹編碼中的遞歸處理,使編碼過程簡捷。二是多個位平面的并行編碼,可以大幅度地提高編碼速度。使用本發(fā)明技術(shù),可以快速地實現(xiàn)嵌入式零樹編碼,以及由低成本的集成電路實現(xiàn)快速編碼。
本發(fā)明所提供的零樹編碼方法,具有以下的特點1)該零樹編碼方法充分利用零樹編碼的特點,設(shè)計了從低層到高層,逐組、逐層、逐樹的掃描、編碼,以及從高層到低層,從前輩結(jié)點到后代結(jié)點的掃描、篩選和輸出。去除了較繁復(fù)的遞歸處理。而且并行處理多個位平面的零樹編碼。既保證了零樹編碼算法的正確實現(xiàn),同時大大降低了運算復(fù)雜度和運算時間,可以較容易地實現(xiàn)快速的視頻、圖像壓縮編碼,同時保證對集成電路的較低要求。
2)該零樹編碼采用以小波樹為單位,而不是對整幅圖像或多個小波樹進行零樹編碼,可以大大減少對內(nèi)部存儲器的容量要求,以及數(shù)據(jù)傳輸帶寬的要求。
3)從電路設(shè)計角度而言,采用兩級處理,去除遞歸處理,可以大大減少對存儲器的交互讀寫,而交互讀寫將增加控制電路的復(fù)雜度和資源消耗。
4)成本低廉。它對集成電路性能和資源的要求相對很低,并且不需要專門的電路結(jié)構(gòu)和大容量片內(nèi)存儲器,因而能夠集成到一片低成本的集成電路之中。
5)可靠性好。由于結(jié)構(gòu)簡單、緊湊,具有良好的實用性和可靠性。
6)通用性強??赏瓿扇我獬S贸叽绲膱D像的快速零樹編碼。
本發(fā)明可以同時、并行編碼多達16個以上的位平面,根據(jù)本發(fā)明方法設(shè)計的零樹編碼電路將是一個對電路性能、資源要求較低的、可實時完成任意常用尺寸圖像零樹編碼的快速、低成本的集成電路。
圖1為二維小波變換頻帶示意圖。
圖2為四層小波變換頻帶分布示意圖。
圖3為本發(fā)明符號分配示意圖。
圖4為本發(fā)明零樹編碼電路掃描圖。
圖5為本發(fā)明零樹編碼的電路框圖。
圖6為本發(fā)明零樹編碼的簡化電路框圖。
圖7為本發(fā)明零樹編碼的第一級處理的部分電路示意圖。
具體實施例方式下面結(jié)合附圖及具體實施例對本發(fā)明再作進一步的說明。
本發(fā)明是一種實現(xiàn)嵌入式零樹編碼的快速方法和電路結(jié)構(gòu)。它的工作流程是,首先從低層到高層,按照逐組、逐層、逐樹的掃描順序,將數(shù)據(jù)讀入零樹編碼電路;進行多級量化和預(yù)處理;然后,對預(yù)處理后的各個位平面并行編碼;編碼符號暫時存入輸出緩存器中;待一棵小波樹的系數(shù)全部分配符號后,再按照由高層子帶向低層子帶,對于輸出緩存器,為后入先出的掃描順序,篩選有效的編碼符號輸出。
小波樹的輸入掃描、編碼方式如圖4右部所示。如果不采用本發(fā)明的兩級處理,常用的掃描、編碼方式如圖4左部所示。顯然,本發(fā)明采用的掃描、編碼方式更為規(guī)則和簡捷。
以圖2所示的四層小波變換為例,具體說明本發(fā)明的電路結(jié)構(gòu)的工作原理及本發(fā)明的零樹編碼快速方法的實現(xiàn)。
本發(fā)明的零樹編碼電路結(jié)構(gòu)如圖5所示。它從第一層的后代結(jié)點開始掃描,將四個屬于同一父結(jié)點的一組子結(jié)點順序讀取。一組讀完后,讀取下一組的結(jié)點。待第一層的16組讀完后,讀取第二層相應(yīng)的4組。然后,讀取第三層相應(yīng)的1組4個結(jié)點。最后,讀取第四層唯一的1個結(jié)點。
每個結(jié)點被讀入零樹編碼電路后,馬上進行多級量化。量化后,立刻輸入預(yù)處理器進行預(yù)處理。
預(yù)處理器的電路結(jié)構(gòu)如圖7左部所示,它主要執(zhí)行兩個操作。一是“比特非與”操作,只要小波系數(shù)在某一高位平面出現(xiàn)一個幅度位1,即成為大系數(shù),則將所有低幅度位清為0,否則保持不變。操作后的各位平面的幅度位稱之為大系數(shù)清0值,彼此之間獨立,直接用來并行編碼。二是“比特或”操作,只要小波系數(shù)在某一高位平面出現(xiàn)一個幅度值1,則將所有低幅度位置為1,否則保持不變。操作后的各位平面的幅度位作為其低一幅度位的前大系數(shù)標(biāo)記。
預(yù)處理后的分屬不同位平面的數(shù)據(jù)送入各自的符號分配模塊進行編碼。單個符號分配模塊的電路結(jié)構(gòu)如圖7右部所示。
本發(fā)明的兩級處理中,符號分配規(guī)則如圖3所示。首先判斷預(yù)處理后的幅度位是否為1,如果是,則看該系數(shù)是否為正數(shù)?如果幅度位為1且為正數(shù),則輸出正大系數(shù)符號;如果幅度位為1但為負(fù)數(shù),則輸出負(fù)大系數(shù)符號;如果幅度位為0,則看其后代的幅度位是否都為0,如果是,則輸出零樹根符號;如果幅度位為0但其后代的幅度位不全為0,則輸出孤獨零符號。
零樹編碼電路中,后代的幅度位的判別是將順序輸入的一組4個結(jié)點的大系數(shù)清0值通過D觸發(fā)器同步后,進行“比特或非”操作,其輸出值再與ZTR標(biāo)識寄存器中對應(yīng)的此4個結(jié)點的高比特值進行“比特與”操作,結(jié)果為1,表示為零樹,否則不為零樹。產(chǎn)生的1或0再輸出到ZTR標(biāo)識寄存器。對于最低層的結(jié)點,沒有后代結(jié)點,可以假設(shè)具有全0的后代結(jié)點。
結(jié)點符號的分配,首先根據(jù)自身幅度位,其為1,選擇其正、負(fù)號作為符號的高比特值;其為0,選擇ZTR標(biāo)識寄存器中對應(yīng)值作為符號的高比特值。因此,將自身比特同其正、負(fù)號做“比特與”運算,自身比特取反后同ZTR標(biāo)識寄存器中對應(yīng)值做“比特與”運算,兩個結(jié)果做或運算就產(chǎn)生符號的高比特值。符號的低比特值就等于自身比特值。具體的電路結(jié)構(gòu)如圖7右上角所示。
產(chǎn)生的符號與大系數(shù)標(biāo)志一起寫入輸出緩存器。待一棵小波樹的所有編碼符號寫入輸出緩存器后,輸出控制模塊開始工作。按照從高層到低層的順序進行符號掃描,即后入先出的原則,選擇有效符號輸出。
輸出控制的規(guī)則依據(jù)零樹根符號定義和跳過處理的雙重要求而確定。當(dāng)且僅當(dāng)其祖先不是有效的零樹根符號,而且其大系數(shù)標(biāo)志是0時,編碼符號有效,予以輸出。即,如果其祖先是有效的零樹根符號,或者如果其大系數(shù)標(biāo)志是1時,都屬于無效符號,不能輸出。
在要求編碼速度較高的零樹編碼應(yīng)用中,使用多個輸出控制模塊并行工作,如圖5所示。按照高位平面的符號優(yōu)先傳輸?shù)脑瓌t解決總線競爭,通過多選一控制模塊,將符號分別、依次輸出。
對于要求編碼速度略低的零樹編碼應(yīng)用中,可以只使用一個輸出控制模塊,如圖6所示。多選一控制模塊提到輸出控制模塊之前,按照從高位平面到低位平面的原則,依次輸出各個位平面的編碼符號。
根據(jù)上述,該零樹編碼過程主要包括以下步驟1)小波系數(shù)輸入。按照從低層到高層,逐組、逐層、逐樹的掃描順序,將小波系數(shù)讀入零樹編碼電路。
2)量化。根據(jù)碼率控制的要求定出多個量化閾值,對小波系數(shù)進行同時、多級量化。
3)預(yù)處理。如果小波系數(shù)在某一高位平面出現(xiàn)一個幅度位1,即認(rèn)為其在此位平面成為大系數(shù),對于其所有的低幅度位清0。同時,對大系數(shù)進行標(biāo)記。
3)符號分配。兩級處理中的符號分配規(guī)則是,(1)當(dāng)某結(jié)點的大系數(shù)清0值為+1或-1時,分配正大系數(shù)或負(fù)大系數(shù)符號。(2)當(dāng)某結(jié)點和它后代結(jié)點的大系數(shù)清0值全是0時,分配零樹根符號。(3)當(dāng)某結(jié)點的大系數(shù)清0值是0,而它后代結(jié)點的不全是0時,分配孤獨零符號。所有符號存入輸出緩存器。
4)符號輸出。按照從高層到低層的順序進行符號掃描,若其祖先不是有效的零樹根符號,而且大系數(shù)標(biāo)志是0時,輸出此編碼符號。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
權(quán)利要求
1.一種嵌入式零樹編碼方法,其步驟包括1)按照由低層子帶向高層子帶掃描順序,逐組、逐層、逐樹讀入小波系數(shù);2)讀入的小波變換系數(shù)同時執(zhí)行對應(yīng)多個閾值的多級量化;3)多級量化產(chǎn)生的多個幅度位進行預(yù)處理,去除位平面之間的關(guān)聯(lián);4)各位平面獨立、并行編碼,為所有結(jié)點分配符號;5)待一棵小波樹的結(jié)點全部分配符號后,由高層子帶向低層子帶掃描,篩選有效符號輸出。
2.如權(quán)利要求1所述的嵌入式零樹編碼方法,其特征在于所述預(yù)處理為如小波變換系數(shù)的一個高幅度位是1,就將其所有低幅度位清零,并做下標(biāo)記。
3.如權(quán)利要求1所述的嵌入式零樹編碼方法,其特征在于所述編碼為根據(jù)各個幅度位及其后代的性質(zhì)分配相應(yīng)的編碼符號當(dāng)幅度位是0值,而它的后代不全是0值時,分配孤獨零符號;當(dāng)幅度位是0值,而它的后代也全是0值時,分配零樹根符號;當(dāng)幅度位是1值,而所屬系數(shù)是正數(shù)時,分配正大系數(shù)符號;當(dāng)幅度位是1值,而所屬系數(shù)是負(fù)數(shù)時,分配負(fù)大系數(shù)符號。
4.如權(quán)利要求1或3所述的嵌入式零樹編碼方法,其特征在于所述分配的符號暫時存入輸出緩存器中。
5.如權(quán)利要求1所述的嵌入式零樹編碼方法,其特征在于所述有效符號指該符號不屬于有效零樹根符號的后代,而且不屬于高位平面中的大系數(shù)。
6.如權(quán)利要求1所述的嵌入式零樹編碼方法,其特征在于交替或順序輸出各位平面的有效符號。
7.一種嵌入式零樹編碼電路結(jié)構(gòu),包括掃描與量化模塊、預(yù)處理器模塊、一個或多個符號分配模塊、一個或多個輸出控制模塊,其特征在于掃描與量化模塊掃描、讀取小波變換系數(shù),進行多級量化;預(yù)處理器模塊用于去除位平面之間的關(guān)聯(lián);符號分配模塊對各位平面獨立、并行編碼,為所有結(jié)點分配符號;輸出控制模塊篩選有效符號輸出。
8.如權(quán)利要求7所述的嵌入式零樹編碼電路結(jié)構(gòu),其特征在于所述預(yù)處理器模塊將一個高幅度位是1的小波變換系數(shù)的所有低幅度位清零,并做下標(biāo)記。
9.如權(quán)利要求8所述的嵌入式零樹編碼電路結(jié)構(gòu),其特征在于所述預(yù)處理器包括“比特非與”和“比特或”邏輯電路,“比特非與”邏輯電路使小波變換系數(shù)只保留量化后的最高的幅度位1,其低幅度位全部被清為0,處理后的幅度位用來并行編碼;“比特或”邏輯電路保留小波變換系數(shù)量化后的最高的幅度位1,并將其低幅度位全部置為1,處理后的幅度位用來作為低1幅度位的大系數(shù)標(biāo)志。
10.如權(quán)利要求7所述的嵌入式零樹編碼電路結(jié)構(gòu),其特征在于各符號分配模塊根據(jù)各個幅度位及其后代的性質(zhì)分配相應(yīng)的編碼符號當(dāng)幅度位是0值,而它的后代不全是0值時,分配孤獨零符號;當(dāng)幅度位是0值,而它的后代也全是0值時,分配零樹根符號;當(dāng)幅度位是1值,而所屬系數(shù)是正數(shù)時,分配正大系數(shù)符號;當(dāng)幅度位是1值,而所屬系數(shù)是負(fù)數(shù)時,分配負(fù)大系數(shù)符號。
11.如權(quán)利要求7或10所述的嵌入式零樹編碼電路結(jié)構(gòu),其特征在于還包括緩存器,暫時存入符號分配模塊產(chǎn)生的小波變換系數(shù)編碼;然后輸送到輸出控制模塊。
12.如權(quán)利要求7所述的嵌入式零樹編碼電路結(jié)構(gòu),其特征在于還包括多選一控制模塊,控制各位平面有效符號的交替或順序輸出。
全文摘要
本發(fā)明涉及一種嵌入式零樹編碼方法及其電路結(jié)構(gòu)。將嵌入式零樹編碼分為兩級處理,同時進行多個位平面并行的編碼。在第一級處理中,首先按照由低層子帶向高層子帶,逐組、逐層、逐樹的掃描方式讀取小波變換系數(shù);然后將對應(yīng)多個閾值的多級量化同時執(zhí)行;量化后的數(shù)據(jù)進行預(yù)處理;預(yù)處理后的數(shù)據(jù)在各自的位平面中獨立編碼;數(shù)據(jù)編碼產(chǎn)生的符號暫存于輸出緩存器中;當(dāng)一棵小波樹的所有小波變換系數(shù)被分配了符號,并存入輸出緩存器后,開始第二級處理;按照由高層子帶向低層子帶的掃描順序,篩選有效的編碼符號輸出??商岣呔幋a速度,減少編碼時間,對集成電路的性能、資源要求較低,應(yīng)用靈活且易于實現(xiàn)??蓱?yīng)用于視頻數(shù)據(jù)壓縮或圖像數(shù)據(jù)壓縮領(lǐng)域。
文檔編號H04N7/26GK1642278SQ200410000130
公開日2005年7月20日 申請日期2004年1月6日 優(yōu)先權(quán)日2004年1月6日
發(fā)明者許超 申請人:北京大學(xué)