專利名稱::Jpeg2000標(biāo)準(zhǔn)中基于碼塊的低存儲(chǔ)編碼器及其編碼方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于圖像處理
技術(shù)領(lǐng)域:
,涉及壓縮編碼,特別是一種涉及靜止圖像壓縮標(biāo)準(zhǔn)JPEG2000中的低存儲(chǔ)編碼器與方法,用于符合JPEG2000標(biāo)準(zhǔn)的各種數(shù)字圖像壓縮編碼。
背景技術(shù):
:隨著多媒體和網(wǎng)絡(luò)技術(shù)的發(fā)展及其在醫(yī)學(xué)影像、遙感圖像和數(shù)字圖像/視頻傳輸?shù)确矫娴膽?yīng)用,以往的圖像壓縮編碼方法已經(jīng)無(wú)法適應(yīng)高效壓縮、實(shí)時(shí)傳輸與高效存儲(chǔ)的要求。作為目前國(guó)際上最新的靜止圖像壓縮通用標(biāo)準(zhǔn),JPEG2000具有明顯的優(yōu)勢(shì),例如支持單分量或多分量的有損和無(wú)損編碼、在低碼率下仍具有很好的性能,同時(shí)還支持圖像質(zhì)量和分辨率的漸進(jìn)傳輸、感興趣區(qū)域ROI編碼,具有良好的抗誤碼性能。以上這些優(yōu)點(diǎn)來(lái)源于JPEG2000分別釆用了離散小波變換DWT和率失真優(yōu)化截取內(nèi)嵌碼塊編碼結(jié)構(gòu)EBCOT作為其核心的變換和編碼方法。JPEG2000編碼方法首先將大尺寸圖像分割成若干小的分量圖像片,然后對(duì)各個(gè)圖像分片使用DWT進(jìn)行多級(jí)子帶分解,對(duì)劃分在小波子帶系數(shù)上的碼塊經(jīng)過(guò)包括比特平面編碼、算術(shù)編碼和碼率控制在內(nèi)的EBCOT完成壓縮編碼,最后打包生成符合JPEG2000標(biāo)準(zhǔn)的文件或者碼流。JPEG2000編碼方法與之前釆用Mallat濾波器組方法實(shí)現(xiàn)的小波變換相比,由于在其標(biāo)準(zhǔn)中采用了基于提升的離散小波變換方法,大大降低了小波變換所需的計(jì)算量和存儲(chǔ)量,具有計(jì)算復(fù)雜度低、可實(shí)現(xiàn)原位運(yùn)算、變換形式簡(jiǎn)單可逆和能夠?qū)崿F(xiàn)整型系數(shù)小波變換等優(yōu)點(diǎn);同時(shí)JPEG2000標(biāo)準(zhǔn)中采納了9/7和5/3兩種小波基,其中9/7小波變換用于有損壓縮,其性能最優(yōu),而5/3小波變換可用于無(wú)損壓縮。由于圖像信號(hào)是二維信號(hào),需要對(duì)其進(jìn)行二維小波變換。二維小波變換可分解為水平和垂直方向上的兩個(gè)一維小波變換,每一次二維小波分解得到一個(gè)低頻子帶LL和三個(gè)高頻子帶,即;水平子帶LH、垂直子帶HL和對(duì)角子帶HH。下一級(jí)小波變換是在前一級(jí)產(chǎn)生的低頻子帶LL的基礎(chǔ)上進(jìn)行的,如此重復(fù)多次,便可以完成一幅圖像的多級(jí)小波分解。所述的EBCOT算法分為Tier-l和Tier-2兩部分。Tier-l由內(nèi)嵌的比特平面編碼和MQ算術(shù)編碼器組成,完成編碼所需的上下文后進(jìn)行算術(shù)編碼,形成多個(gè)子、流;Tier-2部分按照由目標(biāo)碼率計(jì)算出來(lái)的斜率進(jìn)行碼流截取,完成碼率控制。進(jìn)行EBCOT編碼時(shí),各小波子帶劃分為更小的互不重疊的碼塊,如64x64或者32x32,以碼塊為單位獨(dú)立作Tier-l編碼。不同的碼塊產(chǎn)生的比特流長(zhǎng)度是不相同的,它們對(duì)恢復(fù)圖像質(zhì)量的貢獻(xiàn)也是不同的。因此對(duì)于所有碼塊產(chǎn)生的比特流,Tier-2釆用了率失真優(yōu)化技術(shù)進(jìn)行后壓縮處理,完成碼流的率控制。當(dāng)前有很多關(guān)于JPEG2000標(biāo)準(zhǔn)硬件實(shí)現(xiàn)的研究和設(shè)計(jì)方法,但是這些方法在應(yīng)用中存在以下幾方面的不足第一,JPEG2000標(biāo)準(zhǔn)中的離散小波變換計(jì)算復(fù)雜度高于之前JPEG中的離散余弦變換,且DWT是按照字節(jié)或字進(jìn)行運(yùn)算;而EBCOT中的比特平面編碼和算術(shù)編碼是按照逐個(gè)比特處理。這種處理速率上的不匹配往往要求降低DWT的吞吐能力或者提高EBCOT的處理速度,從而導(dǎo)致整體處理能力的下降。第二,在進(jìn)行EBCOT編碼時(shí),需要對(duì)DWT產(chǎn)生的各個(gè)子帶的小波系數(shù)逐個(gè)進(jìn)行編碼,因此所有的小波系數(shù)都需要在編碼之前存儲(chǔ)下來(lái)。而以往的方法是將整幅圖像或整個(gè)圖像分片的小波系數(shù)全部存儲(chǔ)到片外的靜態(tài)隨機(jī)存儲(chǔ)器SRAM中,由此帶來(lái)的后果是在圖像分片較大的情況下占用的存儲(chǔ)開(kāi)銷會(huì)非常大。如日本研究人員HidekiYamauchi等人在2005年期刊/£££J"owma/o/So/W-Wa/eC/rcwto發(fā)表的文章1440x1080Pixel,30FramesPerSecondMotion-JPEG2000CodecforHD-MovieTransmission(Vol.40,No.1,January2005,pp331-341)中,采用了4096x2048的分片大小,這樣小波系數(shù)占用存儲(chǔ)的地址空間就高達(dá)4Kx2K-8M(lM-1024K,1K=1024)。在小波變換為實(shí)時(shí)處理的要求下,往往需要釆用兩塊相同的SRAM進(jìn)行兵乓互倒,這時(shí)的存儲(chǔ)總量就為一幅圖像小波系數(shù)存儲(chǔ)容量的兩倍。第三,圖像壓縮的質(zhì)量與圖像分片的尺寸和碼塊大小有著密切的關(guān)系。在碼塊大小固定的前提下,如采用恢復(fù)圖像與原始圖像之間的峰值信噪比PSNR來(lái)衡量恢復(fù)圖像的質(zhì)量,釆用較大的圖像分片下恢復(fù)圖像的質(zhì)量要髙于采用小分片壓縮的質(zhì)量,因此在對(duì)圖像壓縮質(zhì)量要求較高的應(yīng)用場(chǎng)合應(yīng)選用較大的圖像分片。但正如上述第二點(diǎn)中所述,這樣也會(huì)帶來(lái)所需存儲(chǔ)資源的相應(yīng)增加。為此研究人員往往以圖像壓縮質(zhì)量下降為代價(jià)換取較小的存儲(chǔ)占用,如美國(guó)學(xué)者KishoreAndra等人在2003年期刊/五^^27a似.o"C/rcwto/orP7tfeorec/z"o/ogv上發(fā)表的文章AHigh-PerformanceJPEG2000Architecture(Vol.13,No.3,March2003,pp209-218)和中國(guó)學(xué)者HuangQuanping等人在2004年期干!j/Efi^7hmy.o"孤"ro"/w上發(fā)表文章LowMemoryandLowComplexityVLSIImplementationofJPEG2000Codec(Vol.50,No.2,May2004,pp638-646)都采用了128xl28的分片大小,這樣會(huì)帶來(lái)恢復(fù)圖像的質(zhì)量的較大下降。中國(guó)學(xué)者M(jìn)eiKuizhi等在2007年期刊/五i:五7Va肌cmOcwtoS"/ewWcfeoTec/z"o/ogv上發(fā)表的文章VLSIDesignofaHigh-SpeedandArea-EfficientJPEG2000Encoder(Vol.17,No.8,August2007,ppl065-1078)中,釆用的分片尺寸為256x256,較之前述的小分片尺寸,會(huì)在圖像質(zhì)量上帶來(lái)一定提高,但是仍無(wú)法滿足對(duì)圖像質(zhì)量較高的要求。因此在具體的應(yīng)用場(chǎng)合需要在這兩方面進(jìn)行考慮做出權(quán)衡。第四,前述的外部存儲(chǔ)在硬件實(shí)現(xiàn)中功率消耗很高。有文獻(xiàn)指出,使用內(nèi)部存儲(chǔ)要比使用外部存儲(chǔ)消耗的功率低一個(gè)數(shù)量級(jí),因此在功耗上優(yōu)先考慮使用內(nèi)部存儲(chǔ)。而且,隨著超大規(guī)模集成電路VLSI的深入研究和半導(dǎo)體工藝技術(shù)的不斷發(fā)展,現(xiàn)場(chǎng)可編程門陣列FPGA器件的集成度和性能價(jià)格比都得到了很大提高。因此,在當(dāng)前的硬件設(shè)計(jì)中,可以采用高集成度大存儲(chǔ)量的FPGA芯片,以達(dá)到節(jié)省功耗的目的。以上是將JPEG2000標(biāo)準(zhǔn)轉(zhuǎn)化到硬件實(shí)現(xiàn)過(guò)程中在小波系數(shù)存儲(chǔ)上遇到的若干技術(shù)難題,以及目前國(guó)內(nèi)外在這一方向上設(shè)計(jì)技術(shù)的發(fā)展和研究的現(xiàn)狀。在已有的包括以上扭究成果的眾多JPEG2000硬件結(jié)構(gòu)中較為常見(jiàn)的是選擇較小尺寸的分片,例如分片大小為128x128,小波系數(shù)存儲(chǔ)直接在片內(nèi);或者選擇大分片尺寸,在硬件實(shí)a中利用外部存儲(chǔ)。兩者僅在存儲(chǔ)器的來(lái)源方面存在差別,很少涉及節(jié)省存儲(chǔ)器的高效結(jié)構(gòu)。發(fā)明的內(nèi)容本發(fā)明的目的在于避免上述已有技術(shù)的不足,在高質(zhì)量圖像壓縮的要求下,提供一種符合JPEG2000標(biāo)準(zhǔn)的基于碼塊的低存儲(chǔ)編碼器結(jié)構(gòu)及其編碼方法,用片內(nèi)存儲(chǔ)代替原有結(jié)構(gòu)中的外部存儲(chǔ)并進(jìn)行高效復(fù)用,以克服原有結(jié)構(gòu)中大圖像分片占用外部存儲(chǔ)量大的不足。實(shí)現(xiàn)本發(fā)明目的的技術(shù)關(guān)鍵是基于JPEG2000標(biāo)準(zhǔn)中在進(jìn)行Tier-1編碼時(shí)各子帶被劃分成碼塊、以碼塊為單位進(jìn)行獨(dú)立編碼這一特性。在大尺寸圖像分片下有效地組織存儲(chǔ)區(qū)域,通過(guò)復(fù)用片內(nèi)存儲(chǔ)器減少小波系數(shù)占用的緩存,避免由于小波系數(shù)累積而占用大量存儲(chǔ)的現(xiàn)象;同時(shí)采用有效的調(diào)度機(jī)制防止緩存在復(fù)用時(shí)出現(xiàn)讀寫(xiě)沖突,在保證恢復(fù)圖像質(zhì)量的前提下節(jié)省存儲(chǔ)資源,降低功耗;在具體實(shí)現(xiàn)中采用基于行的提升變換體制和比特平面并行的編碼結(jié)構(gòu),提高變換和編碼的效率及速度。本發(fā)明的技術(shù)方案包括按照J(rèn)PEG2000標(biāo)準(zhǔn)所提出的基于碼塊的低存儲(chǔ)編碼器結(jié)構(gòu)和按照J(rèn)PEG2000標(biāo)準(zhǔn)進(jìn)行編碼的方法。一.JPEG2000標(biāo)準(zhǔn)中基于碼塊的低存儲(chǔ)編碼器,包括小波變換模塊,用于對(duì)原始的數(shù)字圖像數(shù)據(jù)進(jìn)行多級(jí)二維離散小波變換,并將變換后系數(shù)寫(xiě)入FPGA內(nèi)部的存儲(chǔ)器;地址映射模塊,用于將變換系數(shù)對(duì)應(yīng)于小波分解圖像后的地址映射為某個(gè)具體小波系數(shù)存儲(chǔ)區(qū)域中的地址;小波系數(shù)存儲(chǔ)區(qū)域,用于緩存經(jīng)小波變換模塊計(jì)算得到的小波系數(shù);待編碼碼塊仲裁模塊,用于暫存沒(méi)有進(jìn)行后續(xù)處理的小波系數(shù)已存儲(chǔ)完整的碼塊信息,并對(duì)已經(jīng)存儲(chǔ)完整碼塊中的小波系數(shù)準(zhǔn)備進(jìn)行比特平面編碼;比特平面編碼模塊,用于將待編碼碼塊仲裁模塊未進(jìn)行比特平面編碼的碼塊小波系數(shù)進(jìn)行比特平面編碼和編碼狀態(tài)變量的組織,并對(duì)編碼狀態(tài)變量進(jìn)行更新后輸出到后續(xù)的MQ算術(shù)編碼器中。所述的地址映射模塊,通過(guò)二進(jìn)制計(jì)數(shù)器累加某個(gè)小波分解子帶中的系數(shù)個(gè)數(shù),將計(jì)數(shù)器數(shù)值的某些比特位按照碼塊在這一子帶中的位置,重新排列組合為該系數(shù)在對(duì)應(yīng)小波系數(shù)存儲(chǔ)區(qū)域中的地址。所述的小波系數(shù)存儲(chǔ)區(qū)域的個(gè)數(shù)與小波分解子帶的個(gè)數(shù)相同,且每個(gè)區(qū)域含有《個(gè)地址空間與碼塊大小相同的存儲(chǔ)塊,0<《S^,iV為該存儲(chǔ)區(qū)域?qū)?yīng)小波分解子帶的寬度,M為碼塊寬度。所述的待編碼碼塊仲裁模塊,包括等待隊(duì)列,通過(guò)FPGA芯片內(nèi)部的先進(jìn)先出存儲(chǔ)器FIFO暫存小波系數(shù)已存儲(chǔ)完整碼塊的小波分解子帶,及該碼塊在該小波分解子帶中的位置;控制器,根據(jù)等待隊(duì)列是否暫存已存儲(chǔ)完整小波系數(shù)碼塊的狀態(tài),控制比特平面編碼模塊的工作狀態(tài)。所述的待編碼碼塊仲裁模塊對(duì)已經(jīng)存儲(chǔ)完整碼塊中的小波系數(shù)進(jìn)行比特平面編碼,是根據(jù)比特平面編碼模塊的狀態(tài)進(jìn)行,即比特平面編碼模塊處于空閑狀態(tài)時(shí),可以從待編碼碼塊仲裁模塊中讀出一個(gè)碼塊數(shù)據(jù)進(jìn)行編碼;當(dāng)比特平面編碼模塊處于工作狀態(tài)時(shí),將已存儲(chǔ)完整的碼塊信息暫存于待編碼碼塊仲裁模塊中。二JPEG2000標(biāo)準(zhǔn)中基于碼塊的低存儲(chǔ)編碼方法,包括如下過(guò)程1.對(duì)原始圖像進(jìn)行小波變換;2.為小波變換分解的每一個(gè)小波子帶建立存儲(chǔ)區(qū)域,并將每個(gè)子帶的存儲(chǔ)區(qū)域劃分為若干個(gè)碼塊存儲(chǔ)塊;3.計(jì)算各個(gè)子帶的小波系數(shù),并對(duì)小波系數(shù)進(jìn)行新的碼塊判斷,如果該系數(shù)是全新碼塊中的系數(shù),將其寫(xiě)入新的碼塊存儲(chǔ)塊;如果該系數(shù)屬于已有碼塊且碼塊存儲(chǔ)塊已經(jīng)存儲(chǔ)了部分小波系數(shù),則將其寫(xiě)入該碼塊存儲(chǔ)塊的對(duì)應(yīng)位置;4.碼塊存儲(chǔ)塊對(duì)所存儲(chǔ)的小波系數(shù)進(jìn)行累積,當(dāng)碼塊的存儲(chǔ)空間累積完整后,將該碼塊信息暫存為等待隊(duì)列;5.按照等待隊(duì)列的碼塊先后順序,讀出碼塊信息,并對(duì)每一個(gè)碼塊的小波系數(shù)進(jìn)行比特平面編碼。上述步驟2,按如下過(guò)程進(jìn)行(1)按照小波變換時(shí)產(chǎn)生的小波分解子帶數(shù)量,建立每一級(jí)水平子帶LH、垂直子帶HL、對(duì)角子帶HH和最高一級(jí)分解的低頻子帶LL對(duì)應(yīng)的小波系數(shù)存儲(chǔ)區(qū)域,每個(gè)子帶對(duì)應(yīng)的小波系數(shù)存儲(chǔ)區(qū)域大小與該級(jí)子帶的寬度W和寬度M相關(guān),即該子帶對(duì)應(yīng)的小波系數(shù)存儲(chǔ)區(qū)域空間至少為iVxM;-(2)將每個(gè)子帶對(duì)應(yīng)的小波系數(shù)存儲(chǔ)區(qū)域,劃分成《個(gè)地址空間與碼塊大小相同的碼塊存儲(chǔ)塊,0<《^^,W為該存儲(chǔ)區(qū)域?qū)?yīng)小波分解子帶的寬度,M為碼塊寬度,該碼塊存儲(chǔ)塊存在有空閑、存儲(chǔ)、寫(xiě)滿等待、編碼和讀空等待5種狀態(tài)。上述步驟3所述的對(duì)小波系數(shù)進(jìn)行新的碼塊判斷,是按照小波系數(shù)在各個(gè)小波分解子帶中的位置進(jìn)行,若小波系數(shù)是在某一碼塊中首次出現(xiàn),則該碼塊屬于新的碼塊;若碼塊中已經(jīng)存儲(chǔ)了一部分小波系數(shù),則該碼塊屬于已有碼塊。本發(fā)明由于在編碼器中采用了地址映射模塊,可以將需要緩存小波系數(shù)的存儲(chǔ)空間由分片大小精確到碼塊尺寸;同時(shí)由于本發(fā)明采用了小波系數(shù)存儲(chǔ)區(qū)域來(lái)緩存各個(gè)碼塊小波系數(shù),使得碼塊中小波系數(shù)的完整獲得在時(shí)間上具有間隔特性;此外由于本發(fā)明采用了待編碼碼塊仲裁模塊,可以高效復(fù)用小波系數(shù)存儲(chǔ)區(qū)域中的碼塊存儲(chǔ)塊。整個(gè)編碼器結(jié)構(gòu)的邏輯和存儲(chǔ)均在FPGA內(nèi)部實(shí)現(xiàn),避免了以往結(jié)構(gòu)中采用外部存儲(chǔ)器占用存儲(chǔ)量大的不足,使編碼器的存儲(chǔ)量顯著降低,系統(tǒng)的功耗也有明顯減少。圖l是本發(fā)明編碼器的結(jié)構(gòu)圖;圖2是本發(fā)明基于碼塊的存儲(chǔ)區(qū)域結(jié)構(gòu)圖;圖3是本發(fā)明碼塊存儲(chǔ)塊的地址分配示意圖;圖4是本發(fā)明待編碼碼塊仲裁模塊的結(jié)構(gòu)框圖;圖5是本發(fā)明編碼方法的流程圖;圖6是本發(fā)明待編碼碼塊的狀態(tài)轉(zhuǎn)移圖。具體實(shí)施方式本發(fā)明的編碼器結(jié)構(gòu)是釆用XilinxISE9.1集成開(kāi)發(fā)軟件和VHDL、VerilogHDL語(yǔ)言,在Xilinx公司的型號(hào)為XC4V&140-llffl517的FPGA上實(shí)現(xiàn)。參照?qǐng)D1,本發(fā)明按照J(rèn)PEG2000標(biāo)準(zhǔn)所提出的基于碼塊的低存儲(chǔ)編碼器結(jié)構(gòu)包括小波變換模塊、地址映射模塊、各子帶對(duì)應(yīng)的小波系數(shù)存儲(chǔ)區(qū)域、待編碼碼塊仲裁模塊和比特平面編碼模塊。小波變換模塊首先對(duì)原始圖像進(jìn)行離散小波變換得到頻率域的小波系數(shù),輸出到地址映射模塊。地址映射模塊由若干個(gè)二進(jìn)制計(jì)數(shù)器組成,這些二進(jìn)制計(jì)數(shù)器的個(gè)數(shù)與小波分解的級(jí)數(shù)相同,地址映射模塊將變換系數(shù)對(duì)應(yīng)于小波分解圖像后的地址映射為某個(gè)具體小波系數(shù)存儲(chǔ)區(qū)域中的地址,即通過(guò)二進(jìn)制計(jì)數(shù)器累加某個(gè)小波分解子帶中的系數(shù)個(gè)數(shù),將計(jì)數(shù)器數(shù)值的某些比特位按照碼塊在這一子帶中的位置,重新排列組合為該系數(shù)在對(duì)應(yīng)小波系數(shù)存儲(chǔ)區(qū)域中的地址。小波系數(shù)存儲(chǔ)區(qū)域按照地址映射模塊產(chǎn)生的地址將小波系數(shù)寫(xiě)入FPGA內(nèi)部的存儲(chǔ)器。該小波系數(shù)存儲(chǔ)區(qū)域的個(gè)數(shù)與小波分解子帶的個(gè)數(shù)相同,且每個(gè)區(qū)域含有《個(gè)地址空間與碼塊大小相同的存儲(chǔ)塊,0<《《^,W為該存儲(chǔ)區(qū)域?qū)?yīng)小波分解子帶的M寬度,M為碼塊寬度。參照?qǐng)D2,每個(gè)子帶的存儲(chǔ)區(qū)域按照碼塊大小劃分為若干個(gè)碼塊存儲(chǔ)塊,每個(gè)碼塊存儲(chǔ)塊的地址空間與碼塊大小相同,本實(shí)施例中采用碼塊大小為32"2。碼塊存儲(chǔ)塊由片內(nèi)的雙端口存儲(chǔ)器實(shí)現(xiàn),在寫(xiě)入端包括寫(xiě)選通信號(hào)、寫(xiě)入該碼塊中的地址以及對(duì)應(yīng)地址上的小波系數(shù)。其中寫(xiě)選通信號(hào)根據(jù)此時(shí)碼塊存儲(chǔ)塊的狀態(tài)決定,寫(xiě)入該碼±央中的地址由地址映射模塊將變換圖像中這一小波系數(shù)所處的位置轉(zhuǎn)換得到,同時(shí)將該位置處的小波系數(shù)寫(xiě)入轉(zhuǎn)換后的地址中。碼塊存儲(chǔ)塊的讀出端包括讀選通信號(hào)、讀出該石馬塊中的地址和存儲(chǔ)于其上的數(shù)據(jù);其中讀選通信號(hào)由待編碼碼塊仲裁模塊根據(jù)比特平面編碼模塊狀態(tài)產(chǎn)生,讀地址在比特平面編碼模塊在處理到該碼塊時(shí)按照條帶掃描順序給出,同時(shí)取出對(duì)應(yīng)地址上的小波系數(shù)進(jìn)行比特平面編碼。碼塊存儲(chǔ)塊還包含碼塊狀態(tài)和碼塊信息兩個(gè)指示信號(hào),分別標(biāo)識(shí)該碼塊是否可被讀寫(xiě)以及對(duì)應(yīng)于小波變換圖像中的碼塊位置。參照?qǐng)D3,碼塊存儲(chǔ)塊的地址按照J(rèn)PEG2000標(biāo)準(zhǔn)提供的正規(guī)條帶掃描順序regular方式進(jìn)行分配,便于比特平面編碼模塊完成條帶掃描和上下文生成。本實(shí)施例中選用的碼塊大小為32x32,因此每個(gè)碼塊存儲(chǔ)塊中的空間為01023共1024個(gè)地址。從圖3中可見(jiàn)在每一個(gè)32x4的條帶內(nèi),地址映射模塊將小波系數(shù)在變換圖像中的位置按照從上到下、從左到右的順序轉(zhuǎn)化為正規(guī)條帶順序。這樣在比特平面編碼模塊進(jìn)行條帶掃描時(shí),每個(gè)位置完成后對(duì)下一個(gè)位置掃描只需要地址自增,不必像原有結(jié)構(gòu)中按照水平方向地址組織順序那樣進(jìn)行地址計(jì)算和切換。小波系數(shù)存儲(chǔ)區(qū)域?qū)@些小波系數(shù)按照級(jí)數(shù)從高到低和頻率從低頻LL到高頻HL、LH、HH的順序進(jìn)行編號(hào),例如將小波分解的最高級(jí)LL子帶編號(hào)為O,最高級(jí)分解的HL子帶編號(hào)為1,最高級(jí)分解的LH子帶編號(hào)為2,最高級(jí)分解的HH子帶編號(hào)為3,對(duì)各級(jí)分解均按照以上規(guī)則編號(hào)到3n。本發(fā)明中的小波基選擇JPEG2000建議的整數(shù)9/7或者5/3小波,小波分解級(jí)數(shù)為11=4,這樣共產(chǎn)生13個(gè)子帶的存儲(chǔ)區(qū)域。小波系數(shù)存儲(chǔ)區(qū)域中的這些小波系數(shù)再輸出到待編碼碼塊仲裁模塊進(jìn)行處理。參照?qǐng)D4,本發(fā)明的待編碼碼塊仲裁模塊由等待隊(duì)列和控制器組成。等待隊(duì)列的端口包含已存儲(chǔ)完整碼塊的信息輸入、需要進(jìn)行編碼碼塊的信息輸出和隊(duì)列的空滿狀態(tài)標(biāo)志;控制器的端口包含由等待隊(duì)列輸入的碼塊信息和等待隊(duì)列空滿狀態(tài)信號(hào),向碼塊存儲(chǔ)塊發(fā)出的選通信號(hào)和讀碼塊地址,以及從碼塊存儲(chǔ)塊中讀出的小波系數(shù),還有比特平面編碼模塊的狀態(tài)和向比特平面編碼模塊傳遞的各層比特平面系數(shù)值。已存儲(chǔ)完整碼塊的信息按照先后順序全部暫存于等待隊(duì)列中,當(dāng)邏輯電路檢測(cè)到等待f人列空滿狀態(tài)為非空時(shí),若比特平面編碼模塊對(duì)存儲(chǔ)在之前的碼塊編碼完成后,便從等待隊(duì)列中讀出下一個(gè)碼塊信息進(jìn)行編碼??刂破鳛楸忍仄矫婢幋a模塊和等待隊(duì)列進(jìn)行調(diào)度和控制,當(dāng)比特平面編碼模塊處于空閑狀態(tài)且等待隊(duì)列的狀態(tài)為非空時(shí),從等待隊(duì)列中讀出一個(gè)碼塊信息數(shù)據(jù),將控制權(quán)交給比特平面編碼模塊。同時(shí)向?qū)?yīng)的碼塊存儲(chǔ)塊發(fā)出讀請(qǐng)求,按照比特平面編碼的順序從中讀出小波系數(shù),將每一層比特平面的系數(shù)值傳遞給比特平面編碼模塊進(jìn)行編碼,即將待編碼碼塊仲裁模塊未進(jìn)行比特平面編碼的碼塊小波系數(shù)進(jìn)行比特平面編碼和編碼狀態(tài)變量的組織,并對(duì)編碼狀態(tài)變量進(jìn)行更新后輸出到后續(xù)的MQ算術(shù)編碼器中。在比特平面編碼模塊處于工作狀態(tài)時(shí),控制器對(duì)等待隊(duì)列不起作用,等待隊(duì)列可以繼續(xù)接收己存儲(chǔ)完整碼塊的信息。若比特平面編碼模塊對(duì)等待隊(duì)列中己存儲(chǔ)完整碼塊的小波系數(shù)全部編碼完成后回到空閑狀態(tài)而此時(shí)等待隊(duì)列為空,則控制器將優(yōu)先權(quán)交給等待隊(duì)列,一旦等待隊(duì)列接收到新的存儲(chǔ)完整碼塊信息時(shí),控制器檢測(cè)到等待隊(duì)列空滿狀態(tài)信號(hào)為非空,便從中讀出這一碼塊信息,開(kāi)啟比特平面編碼模塊進(jìn)行如上所述的操作。參照?qǐng)D5,本發(fā)明的編碼方法按如下過(guò)程進(jìn)行-歩驟l,對(duì)原始圖像進(jìn)行小波變換。對(duì)原始圖像進(jìn)行小波變換是指對(duì)原始圖像進(jìn)行n級(jí)二維離散小波變換,每一級(jí)二維離散小波變換都包含水平方向和垂直方向的小波分解,即水平子帶LH、垂直子帶HL、對(duì)角子帶HH和最高一級(jí)分解的低頻子帶LL,共3n+l個(gè)。小波分解采用JPEG2000標(biāo)準(zhǔn)中的提升算法,同時(shí)兼容標(biāo)準(zhǔn)中推薦的9/7和5/3兩種小波基。步驟2,建立小波系數(shù)存儲(chǔ)區(qū)域。為了緩存在對(duì)原始圖像進(jìn)行小波變換時(shí)產(chǎn)生小波分解子帶中的系數(shù),要建立對(duì)應(yīng)子帶的小波系數(shù)存儲(chǔ)區(qū)域,即為每一級(jí)分解的水平子帶LH、垂直子帶HL、對(duì)角子帶HH和最高一級(jí)分解的低頻子帶LL都建立相應(yīng)的小波系數(shù)存儲(chǔ)區(qū)域,共3n+l個(gè)。每個(gè)子帶對(duì)應(yīng)的小波系數(shù)存儲(chǔ)區(qū)域大小與該級(jí)子帶的寬度W和寬度M相關(guān),即該子帶對(duì)應(yīng)的小波系數(shù)存儲(chǔ)區(qū)域空間至少為WxM。步驟3,對(duì)小波系數(shù)存儲(chǔ)區(qū)域進(jìn)行碼塊存儲(chǔ)塊的劃分。在JPEG2000標(biāo)準(zhǔn)中,碼塊是進(jìn)行EBCOT編碼的最小獨(dú)立單位?;谶@一規(guī)則,將每個(gè)子帶對(duì)應(yīng)的小波系數(shù)存儲(chǔ)區(qū)域,劃分成若干個(gè)存儲(chǔ)空間與碼塊大小相同的存儲(chǔ)塊,即碼塊存儲(chǔ)塊。每個(gè)碼塊存儲(chǔ)塊都可能存在如圖6所示的5種狀態(tài),分別為(1)空閑狀態(tài),表明該碼塊存儲(chǔ)塊從未被占用,可以接受某個(gè)碼塊中的小波系數(shù);(2)存儲(chǔ)狀態(tài),表明某個(gè)碼塊的小波系數(shù)正寫(xiě)入該碼塊存儲(chǔ)塊,此時(shí)該碼±央存儲(chǔ)塊被這一個(gè)碼塊的小波系數(shù)唯一占用;(3)寫(xiě)滿等待狀態(tài),表明該碼塊存儲(chǔ)塊對(duì)應(yīng)碼塊小波系數(shù)已經(jīng)填充完畢,正處于等待比特平面編碼模塊處理的狀態(tài);(4)編碼狀態(tài),在這一狀態(tài)下,比特平面編碼模塊正為這一碼塊存儲(chǔ)塊對(duì)應(yīng)碼塊的小波系數(shù)進(jìn)行編碼;(5)讀空等待狀態(tài),此時(shí)該碼塊存儲(chǔ)塊經(jīng)比特平面編碼模塊掃描之后并編碼完成,正等待接收另一全新碼塊中的小波系數(shù)。碼塊存儲(chǔ)塊的這5種狀態(tài)的切換,由有限狀態(tài)機(jī)實(shí)現(xiàn)。各個(gè)狀態(tài)之間的跳轉(zhuǎn)依照待編碼碼塊仲裁模塊中的控制器和比特平面編碼模塊的狀態(tài)信息決定。步驟4,計(jì)算各個(gè)子帶的小波系數(shù)。通過(guò)JPEG2000標(biāo)準(zhǔn)中的提升算法計(jì)算各個(gè)子帶的小波系數(shù),包括三個(gè)步驟首先是把輸入數(shù)據(jù)分為兩個(gè)子集,分別是偶數(shù)集合和奇數(shù)集合;然后是預(yù)測(cè)提升,即用偶數(shù)集合來(lái)預(yù)測(cè)奇數(shù)集合,把產(chǎn)生的誤差作為髙通小波系數(shù);最后是更新提升,即用這些小波系數(shù)來(lái)更新偶數(shù)集合作為低通小波系數(shù)。步驟5,對(duì)小波系數(shù)進(jìn)行新的碼塊判斷。將計(jì)算得到的小波系數(shù)按照它們?cè)诟鱾€(gè)分解子帶中的位置判斷其是否屬于新的碼塊,若小波系數(shù)是在某一碼塊中首次出現(xiàn),則該碼塊屬于新的碼塊;若碼塊存儲(chǔ)塊中已經(jīng)存儲(chǔ)了一部分小波系數(shù),則該碼塊屬于己有碼塊。對(duì)于新碼塊中的小波系數(shù),則將其寫(xiě)入新的或可重復(fù)使用的碼塊存儲(chǔ)塊;對(duì)于已有碼塊中的小波系數(shù),則將其寫(xiě)入該碼塊存儲(chǔ)塊的對(duì)應(yīng)位置。歩驟6,將碼塊信息暫存為等待隊(duì)列。碼塊存儲(chǔ)塊對(duì)所存儲(chǔ)的小波系數(shù)進(jìn)行累積,當(dāng)碼塊存儲(chǔ)塊的存儲(chǔ)空間被累積完整后,將該碼塊信息暫存為等待隊(duì)列,即當(dāng)某個(gè)碼塊存儲(chǔ)塊寫(xiě)滿對(duì)應(yīng)碼塊的全部小波系數(shù)后,將該碼塊信息按照各自被累積完整的先后順序進(jìn)行暫存。步驟7,對(duì)每一個(gè)碼塊的小波系數(shù)進(jìn)行比特平面編碼。將等待隊(duì)列中未處理的碼塊信息依次讀出,對(duì)相應(yīng)碼塊的小波系數(shù)進(jìn)行比特平面編碼和狀態(tài)變量的組織,并對(duì)狀態(tài)變量同時(shí)進(jìn)行更新,將產(chǎn)生的上下文信息輸出到后續(xù)的MQ算術(shù)編碼器中。本發(fā)明的效果可以通過(guò)軟件數(shù)據(jù)計(jì)算和硬件綜合實(shí)現(xiàn)進(jìn)一步說(shuō)明。1.峰值信噪比PSNR計(jì)算選取airport、field和bridge這3幅圖像,在采用不同分片尺寸下經(jīng)過(guò)JPEG2000算法在多種比特率下壓縮,解碼后計(jì)算恢復(fù)圖像與原始圖像的峰值信噪比PSNR,其結(jié)果如表1所示。本發(fā)明中選擇碼塊大小為32x32,小波系數(shù)精度為16比特。表l峰值信噪比比較<table>tableseeoriginaldocumentpage14</column></row><table>從表1可見(jiàn),PSNR在分片大小為1024x1024時(shí),比分片大小為128x128時(shí)平均要高0.20.4dB,在對(duì)birdge圖像比特率為4.0bpp壓縮時(shí)高達(dá)ldB以上。2.編碼結(jié)構(gòu)性能在XilinxISE9.1集成開(kāi)發(fā)軟件環(huán)境中,采用VHDL、VerilogHDL語(yǔ)言,對(duì)本發(fā)明編碼器結(jié)構(gòu)的性能綜合結(jié)果如表2所示。表2本發(fā)明和1吏用外部乒乓存儲(chǔ)實(shí)現(xiàn)性能的綜合比較<table>tableseeoriginaldocumentpage14</column></row><table>從表2中可見(jiàn),在連續(xù)變換編碼的要求下,本發(fā)明所需存儲(chǔ)量為2.875Mbit,現(xiàn)有技術(shù)使用乒乓互倒的存儲(chǔ)方法所用存儲(chǔ)量為32Mbit,本發(fā)明比現(xiàn)有技術(shù)的存儲(chǔ)量降低了90%;本發(fā)明綜合出的最高時(shí)鐘頻率接近現(xiàn)有技術(shù);而本發(fā)明使用的功耗低于現(xiàn)有技術(shù)。對(duì)于本領(lǐng)域的專業(yè)人員來(lái)說(shuō),在了解了本
發(fā)明內(nèi)容和原理后,都可能在不背離本發(fā)明原理、結(jié)構(gòu)的情況下,進(jìn)行形式和細(xì)節(jié)上的各種修正和改變,可以做出不局限于小波基類型、小波分解級(jí)數(shù)和碼塊大小的基于碼塊的低存儲(chǔ)編碼器結(jié)構(gòu)和編碼方法,例如,采用3級(jí)5/3小波變換、碼塊大小采用64x64的基于碼塊的低存儲(chǔ)結(jié)構(gòu),包括3級(jí)小波變換模塊、對(duì)應(yīng)的地址映射模塊、10個(gè)子帶的小波系數(shù)存儲(chǔ)區(qū)域,以及相應(yīng)的待編碼碼塊仲裁模塊和比特平面編碼模塊。但是這些基于本發(fā)明思想的修正和改變?nèi)栽诒景l(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。權(quán)利要求1.一種JPEG2000標(biāo)準(zhǔn)中基于碼塊的低存儲(chǔ)編碼器,包括小波變換模塊,用于對(duì)原始的數(shù)字圖像數(shù)據(jù)進(jìn)行多級(jí)二維離散小波變換,并將變換后系數(shù)寫(xiě)入FPGA內(nèi)部的存儲(chǔ)器;地址映射模塊,用于將變換系數(shù)對(duì)應(yīng)于小波分解圖像后的地址映射為某個(gè)具體小波系數(shù)存儲(chǔ)區(qū)域中的地址;小波系數(shù)存儲(chǔ)區(qū)域,用于緩存經(jīng)小波變換模塊計(jì)算得到的小波系數(shù);待編碼碼塊仲裁模塊,用于暫存沒(méi)有進(jìn)行后續(xù)處理的小波系數(shù)已存儲(chǔ)完整的碼塊信息,并對(duì)已經(jīng)存儲(chǔ)完整碼塊中的小波系數(shù)準(zhǔn)備進(jìn)行比特平面編碼;比特平面編碼模塊,用于將待編碼碼塊仲裁模塊未進(jìn)行比特平面編碼的碼塊小波系數(shù)進(jìn)行比特平面編碼和編碼狀態(tài)變量的組織,并對(duì)編碼狀態(tài)變量進(jìn)行更新后輸出到后續(xù)的MQ算術(shù)編碼器中。2.根據(jù)權(quán)利要求1所述的基于碼塊的低存儲(chǔ)編碼器,其特征在于地址映射模塊,通過(guò)二進(jìn)制計(jì)數(shù)器累加某個(gè)小波分解子帶中的系數(shù)個(gè)數(shù),將計(jì)數(shù)器數(shù)值的某些比特位按照碼塊在這一子帶中的位置,重新排列組合為該系數(shù)在對(duì)應(yīng)小波系數(shù)存儲(chǔ)區(qū)域中的地址。3.根據(jù)權(quán)利要求1所述的基于碼塊的低存儲(chǔ)編碼器,其特征在于小波系數(shù)存儲(chǔ)區(qū)域的個(gè)數(shù)與小波分解子帶的個(gè)數(shù)相同,且每個(gè)區(qū)域含有《個(gè)地址空間與碼塊大小相同的存儲(chǔ)塊,0<《S^,iV為該存儲(chǔ)區(qū)域?qū)?yīng)小波分解子帶的寬度,M為碼塊寬度。4.根據(jù)權(quán)利要求1所述的基于碼塊的低存儲(chǔ)編碼器,其特征在于待編碼碼塊仲裁模塊,包括等待隊(duì)列,通過(guò)FPGA芯片內(nèi)部的先進(jìn)先出存儲(chǔ)器FIFO暫存小波系數(shù)己存儲(chǔ)完整碼塊的小波分解子帶,及該碼塊在該小波分解子帶中的位置;控制器,根據(jù)等待隊(duì)列是否暫存已存儲(chǔ)完整小波系數(shù)碼塊的狀態(tài),控帶j比特平面編碼模塊的工作狀態(tài)。5.根據(jù)權(quán)利要求4所述的基于碼塊的低存儲(chǔ)編碼器,其特征在于所述的控制器控制比特平面編碼模塊的工作狀態(tài),通過(guò)邏輯電路的檢測(cè)實(shí)現(xiàn),即等待隊(duì)歹U狀態(tài)由空變?yōu)榉强諘r(shí),比特平面編碼模塊接收等待隊(duì)列中的一個(gè)信息數(shù)據(jù),對(duì)相應(yīng)的碼塊進(jìn)行比特平面編碼;當(dāng)?shù)却?duì)列狀態(tài)由非空變?yōu)榭諘r(shí),比特平面編碼模塊歸于空閑狀態(tài)。6.根據(jù)權(quán)利要求1或4所述的基于碼塊的低存儲(chǔ)編碼器,其特征在于所述的待編碼碼塊仲裁模塊對(duì)已經(jīng)存儲(chǔ)完整碼塊中的小波系數(shù)進(jìn)行比特平面編碼,是根據(jù)比特平面編碼模塊的狀態(tài)進(jìn)行,即比特平面編碼模塊處于空閑狀態(tài)時(shí),可以從待編碼碼塊仲裁模塊中讀出一個(gè)碼塊數(shù)據(jù)進(jìn)行編碼,當(dāng)比特平面編碼模塊處于工作狀態(tài)時(shí),將已存儲(chǔ)完整的碼塊信息暫存于待編碼碼塊仲裁模塊中。7.根據(jù)權(quán)利要求3或4所述的基于碼塊的低存儲(chǔ)編碼器,其特征在于所述的碼塊存儲(chǔ)塊在寫(xiě)滿對(duì)應(yīng)碼塊的全部小波系數(shù)后,由等待隊(duì)列接受該碼塊的編碼請(qǐng)求,按照碼塊被寫(xiě)滿的先后順序存入該隊(duì)列。8.—種JPEG2000標(biāo)準(zhǔn)中基于碼塊的低存儲(chǔ)編碼方法,包括如下過(guò)程-(1)對(duì)原始圖像進(jìn)行小波變換;(2)為小波變換分解的每一個(gè)小波子帶建立存儲(chǔ)區(qū)域,并將每個(gè)子帶的存儲(chǔ)區(qū)域劃分為若干個(gè)碼塊存儲(chǔ)塊;(3)計(jì)算各個(gè)子帶的小波系數(shù),并對(duì)小波系數(shù)進(jìn)行新的碼塊判斷,如果該系數(shù)是全新碼塊中的系數(shù),將其寫(xiě)入新的碼塊存儲(chǔ)塊;如果該系數(shù)屬于已有碼^i且碼塊存儲(chǔ)塊已經(jīng)存儲(chǔ)了部分小波系數(shù),則將其寫(xiě)入'該碼塊存儲(chǔ)塊的對(duì)應(yīng)位置;(4)碼塊存儲(chǔ)塊對(duì)所存儲(chǔ)的小波系數(shù)進(jìn)行累積,當(dāng)碼塊的存儲(chǔ)空間累積完整后,將該碼塊信息暫存為等待隊(duì)列;(5)按照等待隊(duì)列的碼塊先后順序,讀出碼塊信息,并對(duì)每一個(gè)碼塊的小波系數(shù)進(jìn)行比特平面編碼。9.根據(jù)權(quán)利要求8所述的低存儲(chǔ)編碼方法,其特征在于步驟2,按如下過(guò)程進(jìn)行(2a)按照小波變換時(shí)產(chǎn)生的小波分解子帶數(shù)量,建立每一級(jí)水平子帶LH、垂直子帶HL、對(duì)角子帶HH和最高一級(jí)分解的低頻子帶LL對(duì)應(yīng)的小波系數(shù)存儲(chǔ)區(qū)域,每個(gè)子帶對(duì)應(yīng)的小波系數(shù)存儲(chǔ)區(qū)域大小與該級(jí)子帶的寬度iV和寬度M相關(guān),即該子帶對(duì)應(yīng)的小波系數(shù)存儲(chǔ)區(qū)域空間至少為iVxM;(2b)將每個(gè)子帶對(duì)應(yīng)的小波系數(shù)存儲(chǔ)區(qū)域,劃分成〖個(gè)地址空間與碼i央大小相同的碼塊存儲(chǔ)塊,0<尺^(guò)^,W為該存儲(chǔ)區(qū)域?qū)?yīng)小波分解子帶的寬度,M為碼塊寬度,該碼塊存儲(chǔ)塊存在有空閑、存儲(chǔ)、寫(xiě)滿等待、編碼和讀空等待5種狀態(tài)。10.根據(jù)權(quán)利要求8所述的低存儲(chǔ)編碼方法,其特征在于步驟3所述的對(duì)小波系數(shù)進(jìn)行新的碼塊判斷,是按照小波系數(shù)在各個(gè)小波分解子帶中的位置進(jìn)行,若小波系數(shù)是在某一碼塊中首次出現(xiàn),則該碼塊屬于新的碼塊;若碼塊中已經(jīng)存儲(chǔ)了一部分小波系數(shù),則該碼塊屬于己有碼塊。全文摘要本發(fā)明公開(kāi)了一種JPEG2000標(biāo)準(zhǔn)中基于碼塊的低存儲(chǔ)編碼器及其編碼方法。該編碼器包括小波變換、地址映射、小波系數(shù)存儲(chǔ)區(qū)域、待編碼碼塊仲裁和比特平面編碼模塊。小波變換模塊,對(duì)原始圖像進(jìn)行多級(jí)小波變換;地址映射模塊,將變換系數(shù)對(duì)應(yīng)于小波分解圖像后的地址映射為具體小波系數(shù)緩存區(qū)域中的地址;小波系數(shù)存儲(chǔ)區(qū)域,緩存經(jīng)小波變換模塊計(jì)算的小波系數(shù);待編碼碼塊仲裁模塊,暫存沒(méi)有進(jìn)行后續(xù)處理的碼塊信息,并對(duì)已經(jīng)存儲(chǔ)完整碼塊中的小波系數(shù)準(zhǔn)備進(jìn)行比特平面編碼;比特平面編碼模塊,對(duì)編碼狀態(tài)變量進(jìn)行編碼和更新。本發(fā)明具有圖像壓縮質(zhì)量好,系統(tǒng)占用存儲(chǔ)容量小的優(yōu)點(diǎn),可用于對(duì)各種數(shù)字設(shè)備的圖像壓縮編碼,特別是大分辨率圖像的壓縮系統(tǒng)。文檔編號(hào)G06T9/00GK101267558SQ20081001811公開(kāi)日2008年9月17日申請(qǐng)日期2008年5月4日優(yōu)先權(quán)日2008年5月4日發(fā)明者凱劉,吳成柯,李云松,王柯儼,杰郭,杰雷申請(qǐng)人:西安電子科技大學(xué)