基于FPGA的JPEG2000數(shù)據(jù)壓縮實(shí)現(xiàn)
摘要:高性能的數(shù)據(jù)壓縮可以有效的減少數(shù)據(jù)對(duì)存儲(chǔ)空間和通信帶寬的要求,降低通信成本。為解決圖像數(shù)據(jù)的高壓縮性能問(wèn)題,本文提出了基于JPEG2000標(biāo)準(zhǔn)的數(shù)據(jù)壓縮系統(tǒng)的FPGA實(shí)現(xiàn)方案。相對(duì)于軟件算法實(shí)現(xiàn)和其他硬件方法,采用FPGA硬件實(shí)現(xiàn)可降低系統(tǒng)復(fù)雜度提高性能。最終設(shè)計(jì)的IP核具有資源占用少,性能良好和便于擴(kuò)展等優(yōu)點(diǎn),能夠滿足通信傳輸和照相設(shè)備等應(yīng)用需求。
本文引用地址:http://www.ex-cimer.com/article/235935.htm關(guān)鍵詞:JPEG2000;數(shù)據(jù)壓縮;FPGA;DWT
近年來(lái)通信領(lǐng)域中信息的傳輸總量急速擴(kuò)大。由于存儲(chǔ)空間有限、通信帶寬等因素的限制,數(shù)據(jù)通常需要通過(guò)壓縮才能有利于存儲(chǔ)和傳輸,數(shù)字圖像存儲(chǔ)和傳輸?shù)陌嘿F費(fèi)用成為其普及的最大障礙。為此必須對(duì)數(shù)字圖像壓縮編碼技術(shù)進(jìn)行研究和實(shí)現(xiàn)。
JPEG2000標(biāo)準(zhǔn)采用的是離散小波變換,具有壓縮率高和無(wú)邊緣效應(yīng)等優(yōu)點(diǎn)。文中的設(shè)計(jì)采用片上系統(tǒng)(System On Claip)方案,可實(shí)現(xiàn)對(duì)分辨率1024x1024圖像的壓縮。在有效實(shí)現(xiàn)數(shù)據(jù)壓縮基礎(chǔ)上,系統(tǒng)還具有較好擴(kuò)展性。研究利用FPGA實(shí)現(xiàn)圖像數(shù)據(jù)壓縮,將壓縮算法映射到專用集成電路(ASIC)設(shè)計(jì),具有非常廣闊的市場(chǎng)應(yīng)用前景。
1 基本原理
數(shù)字圖像的壓縮就是用一定的規(guī)律對(duì)需要處理的圖像數(shù)據(jù)進(jìn)行變換和排列,以盡可能少的數(shù)據(jù)信息來(lái)表示盡可能多的圖像信息。圖像的壓縮是通過(guò)編碼算法來(lái)完成實(shí)現(xiàn)的。目前常用的壓縮方法有:圖像變換技術(shù)、預(yù)測(cè)壓縮、自適應(yīng)壓縮等方法。
圖像數(shù)據(jù)之所以可以進(jìn)行壓縮,主要壓縮來(lái)源于以下2點(diǎn):一是在圖像數(shù)據(jù)中存在大量信息冗余;另一點(diǎn)是人類的視覺(jué)觀察精度是有限的通過(guò)減少數(shù)據(jù)精度來(lái)實(shí)現(xiàn)圖像壓縮。
在數(shù)字圖像壓縮中主要有:編碼冗余、像素相關(guān)冗余和視覺(jué)心理冗余。通過(guò)算法減少或消除冗余就能實(shí)現(xiàn)圖像壓縮。另外根據(jù)人類視覺(jué)允許圖像壓縮后與原始圖像有失真。圖像壓縮就是利用圖像數(shù)據(jù)固有特性以及人類視覺(jué)特性,經(jīng)過(guò)壓縮算法提取有效的數(shù)據(jù)信息,減少數(shù)據(jù)信息量,以便實(shí)現(xiàn)高效率的圖像數(shù)據(jù)傳輸和存儲(chǔ)。
2 系統(tǒng)結(jié)構(gòu)
根據(jù)JPEG2000標(biāo)準(zhǔn),一般來(lái)講基于JPEG2000標(biāo)準(zhǔn)的數(shù)據(jù)壓縮系統(tǒng)主要由預(yù)處理、DWT、量化和EBCOT組成。組成結(jié)構(gòu)如圖1所示。
在參考JPEG2000標(biāo)準(zhǔn)數(shù)據(jù)壓縮系統(tǒng)構(gòu)架后,本文設(shè)計(jì)的數(shù)據(jù)壓縮系統(tǒng)主要包括預(yù)處理,小波變換,量化和嵌入式位平面編碼4部分,系統(tǒng)結(jié)構(gòu)如圖2所示。
預(yù)處理:對(duì)圖像源數(shù)據(jù)進(jìn)行劃分,分成tile大小,之后進(jìn)行DC位移和分量變換處理。
WDT:即小波變換把圖像分解為空間頻域子帶具有能量更為集中,更好的壓縮性能,而且可以很好的消除分塊現(xiàn)象的優(yōu)點(diǎn)。離散小波變換的提升算法可減少內(nèi)存需求,降低計(jì)算復(fù)雜度。本文主要考慮提高壓縮性能,因此采用的是9/7離散小波變換提升算法。
量化:將小波系數(shù)進(jìn)行量化處理,之后按碼塊大小(32x32)儲(chǔ)存量化后的小波系數(shù),采用動(dòng)態(tài)內(nèi)存控制體制(DMC),降低小波系數(shù)緩存量。
EBCOT(Tier_1):對(duì)輸入的子帶小波系數(shù)進(jìn)行底層嵌入式塊編,并輸出算術(shù)編碼比特流和塊編碼的統(tǒng)計(jì)信息給Tier_2。
EBCOT(Tier_2):進(jìn)行層生成及塊信息編碼,最終輸出JPEG2000碼流。
壓縮編碼過(guò)程如下:原始圖像數(shù)據(jù)經(jīng)過(guò)預(yù)處理變成許多個(gè)顏色分片(component—tile),每個(gè)分片經(jīng)過(guò)小波變換后變成小波系數(shù),量化后送入EBCOT進(jìn)行編碼和碼率控制處理,為提高壓縮速率,嵌入式為平面編碼(EBCOT)模塊采用并行處理結(jié)構(gòu),分別完成對(duì)前級(jí)量化后的小波系數(shù)HL、HH以及LH和LL的處理,小波系數(shù)在通過(guò)EBCOT模塊進(jìn)行編碼和碼率控制處理后,最后得到的是符合JPEG2000標(biāo)準(zhǔn)格式的壓縮數(shù)據(jù)。
3 系統(tǒng)各組成模塊的設(shè)計(jì)
本系統(tǒng)主要實(shí)現(xiàn)數(shù)據(jù)的壓縮處理,源圖像通過(guò)預(yù)處理模塊對(duì)圖像源數(shù)據(jù)進(jìn)行劃分,分成tile(512x512)大小,之后經(jīng)過(guò)小波變換和EBCOT模塊完成數(shù)據(jù)壓縮處理,輸出壓縮碼流。
3.1 預(yù)處理模塊
由于原始圖像數(shù)據(jù)較大,通過(guò)預(yù)處理模塊可以大大降低數(shù)據(jù)對(duì)系統(tǒng)存儲(chǔ)空間的要求。本文采用的預(yù)處理有:分片和電平平移,通過(guò)分片將原始圖像分割成tile(512x512)大小的區(qū)塊,每個(gè)分片進(jìn)行獨(dú)立壓縮;電平平移使得圖像數(shù)據(jù)關(guān)于零對(duì)稱,有利于編碼處理。
3.2 小波變換模塊
采用離散小波變換對(duì)圖像進(jìn)行處理,得到圖像的小波系數(shù)分為L(zhǎng)L、LH、HL、HH 4個(gè)子帶。通過(guò)級(jí)聯(lián),進(jìn)行多級(jí)小波變換,小波系數(shù)中,高頻數(shù)據(jù)分量表示圖像中局部區(qū)域如圖像的邊緣,低頻分量表示圖像中的低頻信息如圖像的背景信息??梢?jiàn)通過(guò)小波變換,即使比特率不高的情況下,也能保證圖像中較多的細(xì)節(jié)信息。圖像通過(guò)小波變換時(shí)可進(jìn)行不同級(jí)數(shù)的編解碼處理,進(jìn)而得到具有不同空間分辨率的圖像信息。為實(shí)現(xiàn)較好壓縮效果,需要對(duì)小波變換進(jìn)行多次層分解,主要分解形式有:Mallat、Spacl和Packet,如圖3所示。
其中最為常用的分解方式為Mallat分解,每次分解實(shí)在對(duì)上一層的低頻分量(LL)繼續(xù)做Mallat分解,如圖4所示。
一般來(lái)講,多數(shù)設(shè)備是串行工作方式,圖像數(shù)據(jù)普遍采用逐行的掃描方式,因此,在本文設(shè)計(jì)的數(shù)據(jù)壓縮系統(tǒng)中,圖像數(shù)據(jù)以逐行掃描方式輸入DWT變換模塊,小波變換采用9/7有損壓縮,分解結(jié)構(gòu)采用5層Mallat分解。
3.3 量化處理
人的視覺(jué)可分辨的圖像是有一定范圍的,因此通過(guò)適當(dāng)量化減小數(shù)據(jù)精度實(shí)現(xiàn)對(duì)壓縮。設(shè)計(jì)的量化步長(zhǎng)決定了壓縮效果的好壞。對(duì)圖像量化操作是有損壓縮,會(huì)產(chǎn)生一定的量化誤差。量化后的圖像數(shù)據(jù)都是由符號(hào)和幅值表示,量化后的系數(shù)在進(jìn)行下一步的編碼處理。
3.4 嵌入式塊編碼
在JPEG2000系統(tǒng)中,將量化后的子帶劃分成小的碼塊,認(rèn)為碼塊間相互獨(dú)立,以碼塊為單元,進(jìn)行嵌入式編碼。嵌入式編碼的基本思想是通過(guò)計(jì)算適當(dāng)?shù)拇a流截?cái)帱c(diǎn),將壓縮生成的碼流劃分成若干子集,每一子集表示對(duì)源圖像的一個(gè)壓縮。嵌入式碼流可在任意一處被截?cái)啵玫骄哂胁煌a率或質(zhì)量的重構(gòu)圖像。
在本設(shè)計(jì)中,模塊采用了并行處理的方式來(lái)提高處理能力,嵌入式塊編碼分為Tier1和Tier2兩部分:
Tier1模塊主要處理模塊有:流程控制模塊、比特平面編碼、過(guò)程編碼模塊和算術(shù)編碼模塊,結(jié)構(gòu)如圖5所示。
工作流程是:首先,小波系數(shù)暫存于小波系數(shù)存儲(chǔ)器中,然后進(jìn)入EBCOT模塊,對(duì)小波系數(shù)進(jìn)行比特平面編碼和過(guò)程掃描編碼,進(jìn)過(guò)處理的比特信息送入算術(shù)編碼模塊進(jìn)行基于上下文的二進(jìn)制算術(shù)編碼。
Tier2模塊主要功能模塊有:率失真計(jì)算模塊、碼率控制模塊和碼流組織模塊,結(jié)構(gòu)如圖6所示。
工作過(guò)程是:率失真模塊完成編碼塊的失真率計(jì)算,傳給后級(jí)模塊,碼率控制模塊據(jù)此進(jìn)行碼流截?cái)嗫刂?,之后給編碼模塊進(jìn)行碼流組織,不同子帶方向上的碼流合并輸出JPEG2000壓縮碼流。
4 測(cè)試驗(yàn)證
文中設(shè)計(jì)的JPEG2000數(shù)據(jù)壓縮系統(tǒng)在FPGA開發(fā)板上進(jìn)行了驗(yàn)證,最終結(jié)果顯示,可支持處理512x512大小16灰度級(jí)的tile圖像分片,碼塊大小是32x32,實(shí)現(xiàn)對(duì)1 024x1 024的16灰度級(jí)的圖像壓縮處理,輸入是圖像數(shù)據(jù)信息,輸出是符合JPEG2000標(biāo)準(zhǔn)的壓縮碼流。仿真時(shí)采用的工作時(shí)鐘是50 MHz,對(duì)于1 024x1 024的16灰度級(jí)的圖像完成16:1的壓縮率,結(jié)果顯示需要大約1 s左右的時(shí)間,滿足設(shè)計(jì)要求。
5 結(jié)論
文中首先對(duì)JPEG2000標(biāo)準(zhǔn)進(jìn)行了介紹,并詳細(xì)分析了數(shù)據(jù)壓縮的實(shí)現(xiàn)原理,之后給出系統(tǒng)總體方案對(duì)各個(gè)模塊進(jìn)行了設(shè)計(jì)。由測(cè)試結(jié)果可知達(dá)到了設(shè)計(jì)要求,設(shè)計(jì)的IP核采用以離散小波變換(DWT)算法,具有明顯的性能優(yōu)勢(shì),可代替JPEG標(biāo)準(zhǔn)廣泛應(yīng)用于網(wǎng)絡(luò)傳輸和無(wú)線通訊等領(lǐng)域。但由于JPEG2000算法較為復(fù)雜,系統(tǒng)的壓縮速率和壓縮比還有提升空間,因此需要進(jìn)一步對(duì)算法進(jìn)行研究和改進(jìn),通過(guò)研究其FPGA實(shí)現(xiàn)方法,映射為專用集成電路,最終設(shè)計(jì)實(shí)現(xiàn)具有自主知識(shí)產(chǎn)權(quán)的JPEG2000數(shù)據(jù)壓縮IP核,具有重要研究?jī)r(jià)值。
評(píng)論