JPEG2000核心算法的研究及DSP實(shí)現

發(fā)布時(shí)間:2010-10-8 12:18    發(fā)布者:eetech
關(guān)鍵詞: dsp , JPEG2000 , 算法
1 引言

JPEG2000是新一代靜止圖像壓縮國際標準,具有優(yōu)越的圖像壓縮性能和高的圖像質(zhì)量,不僅克服了傳統JPEG靜止圖像壓縮標準在高壓縮時(shí)出現方塊效應的缺點(diǎn),還提供了圖像漸進(jìn)傳輸、圖像質(zhì)量可伸縮及感興趣區域編碼等特性,可以應用于數碼相機、醫療圖像、網(wǎng)絡(luò )傳輸等方面。

2 JPEG2000標準基本原理

2.1 JPEG2000編解碼框架

JPEG2000編碼器編碼主要有預處理、小波變換、量化和熵編碼等步驟,相對于編碼過(guò)程,該系統的解碼過(guò)程比較簡(jiǎn)單。JPEG2000編解碼器框圖如圖1和圖2所示。



圖1 JPEG2000編碼器框圖



圖2 JPEG2000解碼器框圖

2.2 JPEG2000編碼的核心算法

1) DWT變換

通過(guò)離散小波變換多級小波分解,小波系數既能表示圖像片中局部區域的高頻信息也能表示圖像片中的低頻信息。這樣,即使在低比特率的情況下,也能保持較多的圖像細節,另外,下一級分解得到的系數所表示圖像在水平和垂直方向的分辨率只有上一級小波系數所表示的圖像的一半,所以通過(guò)對圖像的不同級進(jìn)行解碼,就可以得到具有不同空間分辨率的圖像。

2) EBCOT算法

EBCOT算法的基本思想是將小波變換以后的子帶劃分為大小固定的碼塊,對碼塊系數量化,按照二進(jìn)制位分層的方法,從高有效位平面開(kāi)始,依次對每個(gè)位平面上的所有小波系數位進(jìn)行三個(gè)通道掃描建模(重要性傳播編碼通道、幅度精煉編碼通道、清除編碼通道),即位平面編碼,生成上下文和0、1符號對,然后對這些上下文和符號對進(jìn)行上下文算術(shù)編碼,形成碼塊碼流,完成第一階段編碼塊編碼;最后根據一定參數指標如碼率、失真度,按率失真最優(yōu)原則在每個(gè)獨立碼塊碼流中截取合適的位流組裝成最終的圖像壓縮碼流,完成第二階段碼流組裝過(guò)程。

2.3 EBCOT算法中塊編碼算法的改進(jìn)研究及實(shí)現

在JPEG2000編解碼系統中,EBCOT算法是其重要的組成部分。而EBCOT算法中的第一階段塊編碼又是整個(gè)算法的核心,它占用了大量的編碼時(shí)間,無(wú)論是無(wú)損壓縮還是有損壓縮,EBCOT算法中的位平面編碼時(shí)間都占到整個(gè)編碼耗時(shí)的50%以上。所以,自從EBCOT算法提出后,由于第一階段塊編碼的運算量比較大、編碼速度較慢,針對這種情況的優(yōu)化改進(jìn)研究很有必要。

圖3為barbara圖像(256×256)在位平面編碼時(shí)三個(gè)通道系數編碼數量變化示意圖。圖中通道1表示重要性通道,通道2表示幅度精練通道,通道3表示清除通道。由圖可以看出,在最高位平面MSB,所有系數都只在清除通道進(jìn)行編碼。重要性傳播通道中編碼的系數數量先是增加,然后由于在重要性傳播通道中的系數已變?yōu)橹匾,所以在重要性傳播通道中編碼的系數數量又逐漸減少。在低位平面(0、1、2)大部分系數在幅度精練通道中編碼,只有一少部分在重要通道中編碼,沒(méi)有系數在清除通道中編碼。在整個(gè)掃描編碼過(guò)程中,三次掃描要形成三次上下文并判斷其所屬編碼通道,這樣就會(huì )使編碼時(shí)間大幅度增加。


圖3 位平面編碼三個(gè)通道系數編碼數量變化示意圖

根據對圖3的數據分析研究,本文給出兩種針對于位平面編碼的改進(jìn)方法。

(1)位平面0、1、2清除通道編碼省略法。由圖3可以看出在較低位平面(即位平面0、1、2)上清除通道實(shí)際編碼的像素是很少的,幾乎為零。所以花費時(shí)間對較低位平面上的清除通道進(jìn)行掃描編碼是無(wú)意義的。本論文就此給出一種改進(jìn)方案即省略較低位平面的清除通道編碼,達到改進(jìn)標準算法的目的。該編碼模塊與標準算法此部分代碼相近,只是對編碼條件進(jìn)行了改變。

(2)位平面6、7一次掃描法。由圖3可以看出在高位平面(位平面6和位平面7)重要性傳播通道和幅度精練通道的編碼量都很低,趨近于零,而清除編碼通道編碼的像素量相反卻很高。在標準算法的掃描機制下,對圖像質(zhì)量影響很小的高頻子帶像素編碼,掃描算法必須從最高平面由高向低分三次完整的掃描。本文給出一次掃描法對較高位平面進(jìn)行改進(jìn),即在一次掃描過(guò)程中對最高位平面和次高位平面所有系數進(jìn)行編碼。在一次編碼一個(gè)系數時(shí),通過(guò)上下文的形成,先確定此系數屬于哪個(gè)通道。然后,此系數按所屬通道馬上進(jìn)行相應編碼。這樣就能減少兩次掃描,節約了編碼時(shí)間,從而能夠提高編碼效率。本文處理的對象主要是8比特的灰度圖像。有損壓縮采用9/7小波變換。

通過(guò)對壓縮性能研究發(fā)現,在壓縮比較小時(shí)本文改進(jìn)算法比標準算法的壓縮性能約低0.4db左右,在壓縮比較大時(shí)兩者的壓縮性能相一致,保留了JPEG2000優(yōu)異的壓縮性能;從編解碼時(shí)間來(lái)看,在有損壓縮編碼執行時(shí)間上,本文所給出的改進(jìn)算法比標準算法時(shí)間縮短8%到12%,解碼時(shí)間縮短2%到5%,提高了編碼效率,達到了改進(jìn)的目的。

3 JPEG2000標準中改進(jìn)算法的DSP實(shí)現

3.1 DSP硬件開(kāi)發(fā)平臺

本文使用評估板是北京聞亭公司的TDS642,板上的DSP芯片是TMX DM642,BGA548封裝,內部工作時(shí)鐘為600M,外部總線(xiàn)時(shí)鐘為100M,計算能力高達4.8億指令每秒。

該平臺提供了豐富的外圍接口。板上有兩個(gè)復合視頻(PAL/NTSC/SECAMS)輸入和1個(gè)復合視頻輸出端口;立體聲輸入/出或單一麥克風(fēng)輸入端口;提供兩個(gè)UART、以太網(wǎng)接口、子板接口、PC104接口和JTAG接口。板上還提供了4M Bytes的Flash存儲器,位于DM642的CE1地址空間,寬度為8bits,FPGA擴展了3根地址線(xiàn),把Flash分成8頁(yè),Flash 的第0頁(yè)的前半頁(yè)存放用戶(hù)的自啟動(dòng)程序,后半頁(yè)存放FPGA程序,第1頁(yè)尾用戶(hù)存放數據空間,第2頁(yè)至第8頁(yè)用于存放用戶(hù)程序。

3.2 核心算法的DSP實(shí)現

(1)算法總體框架。本文算法基于DM642EVM實(shí)現時(shí)主要分為兩個(gè)大的模塊(如圖4),第一部分為DWT變換模塊,它將輸入圖像數據變換為一系列的小波系數;第二部分為EBCOT算法模塊,將量化后的的小波系數編碼生成壓縮碼流。硬件開(kāi)發(fā)平臺結構框圖如圖5所示。



圖4 算法框架圖



圖5 算法硬件開(kāi)發(fā)平臺結構框圖

(2)內存分配。對于圖像數據的處理,往往涉及到大量的復雜的數據尋址計算,對于復雜的尋址計算,其耗費CPU的計算量可能比實(shí)際數據操作的計算量還大。所以要加快CPU對數據的訪(fǎng)問(wèn)速度,不但要求存儲器本身的速度快,而且還需要一個(gè)合理的數據結構來(lái)簡(jiǎn)化CPU對地址的計算。另外,DM642對數據的訪(fǎng)問(wèn)技術(shù),如Cache、EDMA和寬bit數據直接讀寫(xiě)等,都是基于存儲地址的連續性;谝陨峡紤],本文在內存分配及定位時(shí),依據以下大的原則:第一,在滿(mǎn)足精度要求的情況下,使用較短的數據類(lèi)型;第二、大的數據塊,如原始圖像、重構圖像存儲在片外SDRAM;第三、關(guān)鍵數據、小的數據塊,比如運算時(shí)的系數、系統堆棧、三個(gè)通道掃描都需要頻繁的訪(fǎng)問(wèn)數據區和上下文標志區等,存放到片內存儲器;第四、對L2級配置足夠的Cache以便CPU對數據的快速讀寫(xiě);第五、對于具有運算相關(guān)性的數據,應在內存中按序連續排放。當涉及到片內外數據塊的搬移操作時(shí),可由DM642的EDMA單元去完成,它可與CPU并行工作,不占用CPU的計算周期。

(3)圖像數據的讀寫(xiě)。由于本文工作主要完成針對圖像的壓縮功能,不涉及圖像采集,所以在圖像數據的輸入輸出上做了適當的處理?紤]到CCS的Simulator完全支持C/C++語(yǔ)言,因此原始圖像數據的輸入采用C語(yǔ)言中的頭文件形式,小波變換模塊,EBCOT算法模塊采用存放在PC機的數據文件形式。本文主要采用頭文件和二進(jìn)制數據文件的形式,將圖像的非文件頭部分的所有數據通過(guò)“fprintf(fp,“%3d,”,image_in [ i][j])”語(yǔ)句寫(xiě)到.h文件中。

(4)DWT的實(shí)現。由于DM642為定點(diǎn)處理器,不適合于浮點(diǎn)運算,所以本文選擇LeGall(5,3)整數濾波器完成JPEG2000中的小波變換。在進(jìn)行小波變換時(shí),首先定義兩個(gè)與圖像塊大小相等的存儲緩沖器,一個(gè)是圖像片數據的輸入緩存Buf,一個(gè)是用來(lái)臨時(shí)存放圖像片數據經(jīng)小波變換后的結果緩存TempBuf。每經(jīng)過(guò)一級小波變換,圖像片數據都要先后兩次經(jīng)過(guò)integer(5,3)的低通和高通濾波。TempBuf中保存的高通濾波數據經(jīng)integer(5,3)濾波器處理后,得到HL子帶和HH子帶的小波變換系數。最后將變換結果存放到輸入緩存Buf中。若要進(jìn)行下一級分解,只需對Buf中LL子帶進(jìn)行同樣處理。

(5)EBCOT算法的實(shí)現。EBCOT算法是JPEG2000編碼系統中耗時(shí)最大的一個(gè)部分,因此對這一部分進(jìn)行優(yōu)化實(shí)現對整個(gè)系統的性能提高很有意義。在PC機上,EBCOT編碼中的每個(gè)通道都是被獨立處理的。因此,在DM642上實(shí)現的時(shí)候,本文采用并行性技術(shù)來(lái)優(yōu)化代碼,加快程序的執行速度,比如在取位平面數據的時(shí)候可以和構造上下文模型并行處理,但是并不是簡(jiǎn)單的并行處理,當要形成通道二的上下文模型時(shí),其鄰域的數據在處理通道一的時(shí)候己經(jīng)被改變。這樣做可以增加DM642功能單元的利用率,充分發(fā)揮出它的并行計算能力。

3.3 實(shí)驗結果

本文實(shí)驗基于Windows XP操作系統、CPU Intel Pentium(R)4 2.4GHz、512M內存、CCS編譯環(huán)境,程序通過(guò)USB仿真器下載到DM642EVM開(kāi)發(fā)板上進(jìn)行,采用LeGall(5,3)小波,處理圖像為512×512的lena和barbara圖像。經(jīng)測試,壓縮比為16:1時(shí)編碼器編碼相應耗時(shí)如表1所示。



實(shí)驗給出了lena圖像在8:1、16:1、32:1三種壓縮比下的重構圖像,并分別給出了與原始圖像的峰值信噪比,如圖6所示。



圖6 barbara圖像編碼圖

表1數據表明,編碼器基于DSP的編碼耗時(shí)相比基于PC的耗時(shí)有所增加,是因為代碼在DM642EVM硬件平臺上運行時(shí)需要持續的通過(guò)USB仿真器和PC機交換數據,從而增加了時(shí)間的開(kāi)銷(xiāo)。從圖6中的PSNR值可知,lena圖像在較高壓縮比下的重構圖像仍具有較高的圖像質(zhì)量。就主觀(guān)評價(jià)來(lái)講,壓縮比為8:1和16:1的重構圖像與原始圖像差別細微,視覺(jué)效果好;壓縮比為32:1的重構圖像略有失真。實(shí)驗結果表明,移植到DSP上的JPEG2000編碼算法代碼仍具有良好的壓縮性能。

4 結束語(yǔ)

為了實(shí)現對圖像的高效壓縮,在這里使用了DWT變換和EBCOT算法,并給出兩點(diǎn)改進(jìn)方法。通過(guò)將改進(jìn)的算法移植到DSP開(kāi)發(fā)板上,可以看出圖像在高壓縮比的重構圖像仍具有較高的圖像質(zhì)量,結果表明移植到DSP上的JPEG2000編碼算法代碼仍具有良好的壓縮性能,在圖像壓縮處理中有較好的嘗試應用。
本文地址:http://selenalain.com/thread-30762-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页