1 引言
JPEG2000是新一代靜止圖像壓縮國(guó)際標(biāo)準(zhǔn),,具有優(yōu)越的圖像壓縮性能和高的圖像質(zhì)量,,不僅克服了傳統(tǒng)JPEG靜止圖像壓縮標(biāo)準(zhǔn)在高壓縮時(shí)出現(xiàn)方塊效應(yīng)的缺點(diǎn),還提供了圖像漸進(jìn)傳輸,、圖像質(zhì)量可伸縮及感興趣區(qū)域編碼等特性,,可以應(yīng)用于數(shù)碼相機(jī)、醫(yī)療圖像,、網(wǎng)絡(luò)傳輸?shù)确矫妗?br />
2 JPEG2000標(biāo)準(zhǔn)基本原理
2.1 JPEG2000編解碼框架
JPEG2000編碼器編碼主要有預(yù)處理,、小波變換、量化和熵編碼等步驟,,相對(duì)于編碼過(guò)程,,該系統(tǒng)的解碼過(guò)程比較簡(jiǎn)單[1],。JPEG2000編解碼器框圖如圖1和圖2所示。
圖1 JPEG2000編碼器框圖
圖2 JPEG2000解碼器框圖
2.2 JPEG2000編碼的核心算法
1) DWT變換
通過(guò)離散小波變換多級(jí)小波分解,,小波系數(shù)既能表示圖像片中局部區(qū)域的高頻信息也能表示圖像片中的低頻信息,。這樣,即使在低比特率的情況下,,也能保持較多的圖像細(xì)節(jié),,另外,下一級(jí)分解得到的系數(shù)所表示圖像在水平和垂直方向的分辨率只有上一級(jí)小波系數(shù)所表示的圖像的一半,,所以通過(guò)對(duì)圖像的不同級(jí)進(jìn)行解碼,,就可以得到具有不同空間分辨率的圖像。
2) EBCOT算法
EBCOT算法的基本思想是將小波變換以后的子帶劃分為大小固定的碼塊,,對(duì)碼塊系數(shù)量化,,按照二進(jìn)制位分層的方法,從高有效位平面開(kāi)始,,依次對(duì)每個(gè)位平面上的所有小波系數(shù)位進(jìn)行三個(gè)通道掃描建模(重要性傳播編碼通道、幅度精煉編碼通道,、清除編碼通道),,即位平面編碼,生成上下文和0,、1符號(hào)對(duì),,然后對(duì)這些上下文和符號(hào)對(duì)進(jìn)行上下文算術(shù)編碼,形成碼塊碼流,,完成第一階段編碼塊編碼,;最后根據(jù)一定參數(shù)指標(biāo)如碼率、失真度,,按率失真最優(yōu)原則在每個(gè)獨(dú)立碼塊碼流中截取合適的位流組裝成最終的圖像壓縮碼流,,完成第二階段碼流組裝過(guò)程[2]。
2.3 EBCOT算法中塊編碼算法的改進(jìn)研究及實(shí)現(xiàn)
在JPEG2000編解碼系統(tǒng)中,,EBCOT算法是其重要的組成部分,。而EBCOT算法中的第一階段塊編碼又是整個(gè)算法的核心,它占用了大量的編碼時(shí)間,,無(wú)論是無(wú)損壓縮還是有損壓縮,,EBCOT算法中的位平面編碼時(shí)間都占到整個(gè)編碼耗時(shí)的50%以上[3][4]。所以,,自從EBCOT算法提出后,,由于第一階段塊編碼的運(yùn)算量比較大、編碼速度較慢,,針對(duì)這種情況的優(yōu)化改進(jìn)研究很有必要,。
圖3為barbara圖像(256×256)在位平面編碼時(shí)三個(gè)通道系數(shù)編碼數(shù)量變化示意圖,。圖中通道1表示重要性通道,通道2表示幅度精練通道,,通道3表示清除通道,。由圖可以看出,在最高位平面MSB,,所有系數(shù)都只在清除通道進(jìn)行編碼,。重要性傳播通道中編碼的系數(shù)數(shù)量先是增加,然后由于在重要性傳播通道中的系數(shù)已變?yōu)橹匾?,所以在重要性傳播通道中編碼的系數(shù)數(shù)量又逐漸減少,。在低位平面(0、1,、2)大部分系數(shù)在幅度精練通道中編碼,,只有一少部分在重要通道中編碼,沒(méi)有系數(shù)在清除通道中編碼,。在整個(gè)掃描編碼過(guò)程中,,三次掃描要形成三次上下文并判斷其所屬編碼通道,這樣就會(huì)使編碼時(shí)間大幅度增加,。
根據(jù)對(duì)圖3的數(shù)據(jù)分析研究,,本文給出兩種針對(duì)于位平面編碼的改進(jìn)方法[5]。
(1)位平面0,、1,、2清除通道編碼省略法。由圖3可以看出在較低位平面(即位平面0,、1,、2)上清除通道實(shí)際編碼的像素是很少的,幾乎為零,。所以花費(fèi)時(shí)間對(duì)較低位平面上的清除通道進(jìn)行掃描編碼是無(wú)意義的,。本論文就此給出一種改進(jìn)方案即省略較低位平面的清除通道編碼,達(dá)到改進(jìn)標(biāo)準(zhǔn)算法的目的,。該編碼模塊與標(biāo)準(zhǔn)算法此部分代碼相近,,只是對(duì)編碼條件進(jìn)行了改變。
(2)位平面6,、7一次掃描法,。由圖3可以看出在高位平面(位平面6和位平面7)重要性傳播通道和幅度精練通道的編碼量都很低,趨近于零,,而清除編碼通道編碼的像素量相反卻很高,。在標(biāo)準(zhǔn)算法的掃描機(jī)制下,對(duì)圖像質(zhì)量影響很小的高頻子帶像素編碼,掃描算法必須從最高平面由高向低分三次完整的掃描,。本文給出一次掃描法對(duì)較高位平面進(jìn)行改進(jìn),,即在一次掃描過(guò)程中對(duì)最高位平面和次高位平面所有系數(shù)進(jìn)行編碼。在一次編碼一個(gè)系數(shù)時(shí),,通過(guò)上下文的形成,,先確定此系數(shù)屬于哪個(gè)通道。然后,,此系數(shù)按所屬通道馬上進(jìn)行相應(yīng)編碼,。這樣就能減少兩次掃描,節(jié)約了編碼時(shí)間,,從而能夠提高編碼效率,。本文處理的對(duì)象主要是8比特的灰度圖像。有損壓縮采用9/7小波變換,。
圖3 位平面編碼三個(gè)通道系數(shù)編碼數(shù)量變化示意圖
通過(guò)對(duì)壓縮性能研究發(fā)現(xiàn),,在壓縮比較小時(shí)本文改進(jìn)算法比標(biāo)準(zhǔn)算法的壓縮性能約低0.4db左右,在壓縮比較大時(shí)兩者的壓縮性能相一致,,保留了JPEG2000優(yōu)異的壓縮性能,;從編解碼時(shí)間來(lái)看,在有損壓縮編碼執(zhí)行時(shí)間上,,本文所給出的改進(jìn)算法比標(biāo)準(zhǔn)算法時(shí)間縮短8%到12%,,解碼時(shí)間縮短2%到5%,提高了編碼效率,,達(dá)到了改進(jìn)的目的。
3 JPEG2000標(biāo)準(zhǔn)中改進(jìn)算法的DSP實(shí)現(xiàn)
3.1 DSP硬件開(kāi)發(fā)平臺(tái)
本文使用評(píng)估板是北京聞亭公司的TDS642,,板上的DSP芯片是TMX DM642,,BGA548封裝,內(nèi)部工作時(shí)鐘為600M,,外部總線時(shí)鐘為100M,,計(jì)算能力高達(dá)4.8億指令每秒。
該平臺(tái)提供了豐富的外圍接口,。板上有兩個(gè)復(fù)合視頻(PAL/NTSC/SECAMS)輸入和1個(gè)復(fù)合視頻輸出端口,;立體聲輸入/出或單一麥克風(fēng)輸入端口;提供兩個(gè)UART,、以太網(wǎng)接口,、子板接口、PC104接口和JTAG接口[6][7],。板上還提供了4M Bytes的Flash存儲(chǔ)器,,位于DM642的CE1地址空間,寬度為8bits,,F(xiàn)PGA擴(kuò)展了3根地址線,,把Flash分成8頁(yè),,F(xiàn)lash 的第0頁(yè)的前半頁(yè)存放用戶的自啟動(dòng)程序,后半頁(yè)存放FPGA程序,,第1頁(yè)尾用戶存放數(shù)據(jù)空間,,第2頁(yè)至第8頁(yè)用于存放用戶程序。
3.2 核心算法的DSP實(shí)現(xiàn)
(1)算法總體框架,。本文算法基于DM642EVM實(shí)現(xiàn)時(shí)主要分為兩個(gè)大的模塊(如圖4),,第一部分為DWT變換模塊,它將輸入圖像數(shù)據(jù)變換為一系列的小波系數(shù),;第二部分為EBCOT算法模塊,,將量化后的的小波系數(shù)編碼生成壓縮碼流。硬件開(kāi)發(fā)平臺(tái)結(jié)構(gòu)框圖如圖5所示,。
圖4 算法框架圖
圖5 算法硬件開(kāi)發(fā)平臺(tái)結(jié)構(gòu)框圖
(2)內(nèi)存分配,。對(duì)于圖像數(shù)據(jù)的處理,往往涉及到大量的復(fù)雜的數(shù)據(jù)尋址計(jì)算,,對(duì)于復(fù)雜的尋址計(jì)算,,其耗費(fèi)CPU的計(jì)算量可能比實(shí)際數(shù)據(jù)操作的計(jì)算量還大。所以要加快CPU對(duì)數(shù)據(jù)的訪問(wèn)速度,,不但要求存儲(chǔ)器本身的速度快,,而且還需要一個(gè)合理的數(shù)據(jù)結(jié)構(gòu)來(lái)簡(jiǎn)化CPU對(duì)地址的計(jì)算。另外,,DM642對(duì)數(shù)據(jù)的訪問(wèn)技術(shù),,如Cache、EDMA和寬bit數(shù)據(jù)直接讀寫(xiě)等,,都是基于存儲(chǔ)地址的連續(xù)性,。基于以上考慮,,本文在內(nèi)存分配及定位時(shí),,依據(jù)以下大的原則:第一,在滿足精度要求的情況下,,使用較短的數(shù)據(jù)類型,;第二、大的數(shù)據(jù)塊,,如原始圖像,、重構(gòu)圖像存儲(chǔ)在片外SDRAM;第三,、關(guān)鍵數(shù)據(jù),、小的數(shù)據(jù)塊,比如運(yùn)算時(shí)的系數(shù)、系統(tǒng)堆棧,、三個(gè)通道掃描都需要頻繁的訪問(wèn)數(shù)據(jù)區(qū)和上下文標(biāo)志區(qū)等,,存放到片內(nèi)存儲(chǔ)器;第四,、對(duì)L2級(jí)配置足夠的Cache以便CPU對(duì)數(shù)據(jù)的快速讀寫(xiě),;第五、對(duì)于具有運(yùn)算相關(guān)性的數(shù)據(jù),,應(yīng)在內(nèi)存中按序連續(xù)排放,。當(dāng)涉及到片內(nèi)外數(shù)據(jù)塊的搬移操作時(shí),可由DM642的EDMA單元去完成,,它可與CPU并行工作,,不占用CPU的計(jì)算周期[8]。
(3)圖像數(shù)據(jù)的讀寫(xiě),。由于本文工作主要完成針對(duì)圖像的壓縮功能,,不涉及圖像采集,所以在圖像數(shù)據(jù)的輸入輸出上做了適當(dāng)?shù)奶幚???紤]到CCS的Simulator完全支持C/C++語(yǔ)言,因此原始圖像數(shù)據(jù)的輸入采用C語(yǔ)言中的頭文件形式,,小波變換模塊,,EBCOT算法模塊采用存放在PC機(jī)的數(shù)據(jù)文件形式。本文主要采用頭文件和二進(jìn)制數(shù)據(jù)文件的形式,,將圖像的非文件頭部分的所有數(shù)據(jù)通過(guò)“fprintf(fp,,“%3d,”,,image_in [i][j])”語(yǔ)句寫(xiě)到.h文件中,。
(4)DWT的實(shí)現(xiàn)。由于DM642為定點(diǎn)處理器,,不適合于浮點(diǎn)運(yùn)算,,所以本文選擇LeGall(5,,3)整數(shù)濾波器完成JPEG2000中的小波變換,。在進(jìn)行小波變換時(shí),首先定義兩個(gè)與圖像塊大小相等的存儲(chǔ)緩沖器,,一個(gè)是圖像片數(shù)據(jù)的輸入緩存Buf,,一個(gè)是用來(lái)臨時(shí)存放圖像片數(shù)據(jù)經(jīng)小波變換后的結(jié)果緩存TempBuf。每經(jīng)過(guò)一級(jí)小波變換,,圖像片數(shù)據(jù)都要先后兩次經(jīng)過(guò)integer(5,,3)的低通和高通濾波。TempBuf中保存的高通濾波數(shù)據(jù)經(jīng)integer(5,3)濾波器處理后,,得到HL子帶和HH子帶的小波變換系數(shù),。最后將變換結(jié)果存放到輸入緩存Buf中。若要進(jìn)行下一級(jí)分解,,只需對(duì)Buf中LL子帶進(jìn)行同樣處理,。
(5)EBCOT算法的實(shí)現(xiàn)。EBCOT算法是JPEG2000編碼系統(tǒng)中耗時(shí)最大的一個(gè)部分,,因此對(duì)這一部分進(jìn)行優(yōu)化實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)的性能提高很有意義,。在PC機(jī)上,EBCOT編碼中的每個(gè)通道都是被獨(dú)立處理的,。因此,,在DM642上實(shí)現(xiàn)的時(shí)候,本文采用并行性技術(shù)來(lái)優(yōu)化代碼,,加快程序的執(zhí)行速度,,比如在取位平面數(shù)據(jù)的時(shí)候可以和構(gòu)造上下文模型并行處理,但是并不是簡(jiǎn)單的并行處理,,當(dāng)要形成通道二的上下文模型時(shí),,其鄰域的數(shù)據(jù)在處理通道一的時(shí)候己經(jīng)被改變。這樣做可以增加DM642功能單元的利用率,,充分發(fā)揮出它的并行計(jì)算能力,。
3.3 實(shí)驗(yàn)結(jié)果
本文實(shí)驗(yàn)基于Windows XP操作系統(tǒng)、CPU Intel Pentium(R)4 2.4GHz,、512M內(nèi)存,、CCS編譯環(huán)境,程序通過(guò)USB仿真器下載到DM642EVM開(kāi)發(fā)板上進(jìn)行,,采用LeGall(5,,3)小波,處理圖像為512×512的lena和barbara圖像,。經(jīng)測(cè)試,,壓縮比為16:1時(shí)編碼器編碼相應(yīng)耗時(shí)如表1所示。
實(shí)驗(yàn)給出了lena圖像在8:1,、16:1,、32:1三種壓縮比下的重構(gòu)圖像,并分別給出了與原始圖像的峰值信噪比,,如圖6所示,。
表1數(shù)據(jù)表明,編碼器基于DSP的編碼耗時(shí)相比基于PC的耗時(shí)有所增加,,是因?yàn)榇a在DM642EVM硬件平臺(tái)上運(yùn)行時(shí)需要持續(xù)的通過(guò)USB仿真器和PC機(jī)交換數(shù)據(jù),,從而增加了時(shí)間的開(kāi)銷(xiāo),。從圖6中的PSNR值可知,lena圖像在較高壓縮比下的重構(gòu)圖像仍具有較高的圖像質(zhì)量,。就主觀評(píng)價(jià)來(lái)講,,壓縮比為8:1和16:1的重構(gòu)圖像與原始圖像差別細(xì)微,視覺(jué)效果好,;壓縮比為32:1的重構(gòu)圖像略有失真,。實(shí)驗(yàn)結(jié)果表明,移植到DSP上的JPEG2000編碼算法代碼仍具有良好的壓縮性能,。
圖6 barbara圖像編碼圖
4 結(jié)束語(yǔ)
為了實(shí)現(xiàn)對(duì)圖像的高效壓縮,,在這里使用了DWT變換和EBCOT算法,并給出兩點(diǎn)改進(jìn)方法,。通過(guò)將改進(jìn)的算法移植到DSP開(kāi)發(fā)板上,,可以看出圖像在高壓縮比的重構(gòu)圖像仍具有較高的圖像質(zhì)量,結(jié)果表明移植到DSP上的JPEG2000編碼算法代碼仍具有良好的壓縮性能,,在圖像壓縮處理中有較好的嘗試應(yīng)用,。