摘要:高性能的數據壓縮可以有效的減少數據對存儲空間和通信帶寬的要求,降低通信成本。為解決圖像數據的高壓縮性能問題,本文提出了基於JPEG2000標準的數據壓縮系統的FPGA實現方案。相對於軟體算法實現和其他硬體方法,採用FPGA硬體實現可降低系統複雜度提高性能。最終設計的IP核具有資源佔用少,性能良好和便於擴展等優點,能夠滿足通信傳輸和照相設備等應用需求。
關鍵詞:JPEG2000;數據壓縮;FPGA;DWT
近年來通信領域中信息的傳輸總量急速擴大。由於存儲空間有限、通信帶寬等因素的限制,數據通常需要通過壓縮才能有利於存儲和傳輸,數字圖像存儲和傳輸的昂貴費用成為其普及的最大障礙。為此必須對數字圖像壓縮編碼技術進行研究和實現。
JPEG2000標準採用的是離散小波變換,具有壓縮率高和無邊緣效應等優點。文中的設計採用片上系統(System On Claip)方案,可實現對解析度1024x1024圖像的壓縮。在有效實現數據壓縮基礎上,系統還具有較好擴展性。研究利用FPGA實現圖像數據壓縮,將壓縮算法映射到專用集成電路(ASIC)設計,具有非常廣闊的市場應用前景。
1 基本原理
數字圖像的壓縮就是用一定的規律對需要處理的圖像數據進行變換和排列,以儘可能少的數據信息來表示儘可能多的圖像信息。圖像的壓縮是通過編碼算法來完成實現的。目前常用的壓縮方法有:圖像變換技術、預測壓縮、自適應壓縮等方法。
圖像數據之所以可以進行壓縮,主要壓縮來源於以下2點:一是在圖像數據中存在大量信息冗餘;另一點是人類的視覺觀察精度是有限的通過減少數據精度來實現圖像壓縮。
在數字圖像壓縮中主要有:編碼冗餘、像素相關冗餘和視覺心理冗餘。通過算法減少或消除冗餘就能實現圖像壓縮。另外根據人類視覺允許圖像壓縮後與原始圖像有失真。圖像壓縮就是利用圖像數據固有特性以及人類視覺特性,經過壓縮算法提取有效的數據信息,減少數據信息量,以便實現高效率的圖像數據傳輸和存儲。
2 系統結構
根據JPEG2000標準,一般來講基於JPEG2000標準的數據壓縮系統主要由預處理、DWT、量化和EBCOT組成。組成結構如圖1所示。
在參考JPEG2000標準數據壓縮系統構架後,本文設計的數據壓縮系統主要包括預處理,小波變換,量化和嵌入式位平面編碼4部分,系統結構如圖2所示。
預處理:對圖像源數據進行劃分,分成tile大小,之後進行DC位移和分量變換處理。
WDT:即小波變換把圖像分解為空間頻域子帶具有能量更為集中,更好的壓縮性能,而且可以很好的消除分塊現象的優點。離散小波變換的提升算法可減少內存需求,降低計算複雜度。本文主要考慮提高壓縮性能,因此採用的是9/7離散小波變換提升算法。
量化:將小波係數進行量化處理,之後按碼塊大小(32x32)儲存量化後的小波係數,採用動態內存控制體制(DMC),降低小波係數緩存量。
EBCOT(Tier_1):對輸入的子帶小波係數進行底層嵌入式塊編,並輸出算術編碼比特流和塊編碼的統計信息給Tier_2。
EBCOT(Tier_2):進行層生成及塊信息編碼,最終輸出JPEG2000碼流。
壓縮編碼過程如下:原始圖像數據經過預處理變成許多個顏色分片(component—tile),每個分片經過小波變換後變成小波係數,量化後送入EBCOT進行編碼和碼率控制處理,為提高壓縮速率,嵌入式為平面編碼(EBCOT)模塊採用並行處理結構,分別完成對前級量化後的小波係數HL、HH以及LH和LL的處理,小波係數在通過EBCOT模塊進行編碼和碼率控制處理後,最後得到的是符合JPEG2000標準格式的壓縮數據。
3 系統各組成模塊的設計
本系統主要實現數據的壓縮處理,源圖像通過預處理模塊對圖像源數據進行劃分,分成tile(512x512)大小,之後經過小波變換和EBCOT模塊完成數據壓縮處理,輸出壓縮碼流。
3.1 預處理模塊
由於原始圖像數據較大,通過預處理模塊可以大大降低數據對系統存儲空間的要求。本文採用的預處理有:分片和電平平移,通過分片將原始圖像分割成tile(512x512)大小的區塊,每個分片進行獨立壓縮;電平平移使得圖像數據關於零對稱,有利於編碼處理。
3.2 小波變換模塊
採用離散小波變換對圖像進行處理,得到圖像的小波係數分為LL、LH、HL、HH 4個子帶。通過級聯,進行多級小波變換,小波係數中,高頻數據分量表示圖像中局部區域如圖像的邊緣,低頻分量表示圖像中的低頻信息如圖像的背景信息。可見通過小波變換,即使比特率不高的情況下,也能保證圖像中較多的細節信息。圖像通過小波變換時可進行不同級數的編解碼處理,進而得到具有不同空間解析度的圖像信息。為實現較好壓縮效果,需要對小波變換進行多次層分解,主要分解形式有:Mallat、Spacl和Packet,如圖3所示。
其中最為常用的分解方式為Mallat分解,每次分解實在對上一層的低頻分量(LL)繼續做Mallat分解,如圖4所示。
一般來講,多數設備是串行工作方式,圖像數據普遍採用逐行的掃描方式,因此,在本文設計的數據壓縮系統中,圖像數據以逐行掃描方式輸入DWT變換模塊,小波變換採用9/7有損壓縮,分解結構採用5層Mallat分解。
3.3 量化處理
人的視覺可分辨的圖像是有一定範圍的,因此通過適當量化減小數據精度實現對壓縮。設計的量化步長決定了壓縮效果的好壞。對圖像量化操作是有損壓縮,會產生一定的量化誤差。量化後的圖像數據都是由符號和幅值表示,量化後的係數在進行下一步的編碼處理。
3.4 嵌入式塊編碼
在JPEG2000系統中,將量化後的子帶劃分成小的碼塊,認為碼塊間相互獨立,以碼塊為單元,進行嵌入式編碼。嵌入式編碼的基本思想是通過計算適當的碼流截斷點,將壓縮生成的碼流劃分成若干子集,每一子集表示對源圖像的一個壓縮。嵌入式碼流可在任意一處被截斷,得到具有不同碼率或質量的重構圖像。
在本設計中,模塊採用了並行處理的方式來提高處理能力,嵌入式塊編碼分為Tier1和Tier2兩部分:
Tier1模塊主要處理模塊有:流程控制模塊、比特平面編碼、過程編碼模塊和算術編碼模塊,結構如圖5所示。
工作流程是:首先,小波係數暫存於小波係數存儲器中,然後進入EBCOT模塊,對小波係數進行比特平面編碼和過程掃描編碼,進過處理的比特信息送入算術編碼模塊進行基於上下文的二進位算術編碼。
Tier2模塊主要功能模塊有:率失真計算模塊、碼率控制模塊和碼流組織模塊,結構如圖6所示。
工作過程是:率失真模塊完成編碼塊的失真率計算,傳給後級模塊,碼率控制模塊據此進行碼流截斷控制,之後給編碼模塊進行碼流組織,不同子帶方向上的碼流合併輸出JPEG2000壓縮碼流。
4 測試驗證
文中設計的JPEG2000數據壓縮系統在FPGA開發板上進行了驗證,最終結果顯示,可支持處理512x512大小16灰度級的tile圖像分片,碼塊大小是32x32,實現對1 024x1 024的16灰度級的圖像壓縮處理,輸入是圖像數據信息,輸出是符合JPEG2000標準的壓縮碼流。仿真時採用的工作時鐘是50 MHz,對於1 024x1 024的16灰度級的圖像完成16:1的壓縮率,結果顯示需要大約1 s左右的時間,滿足設計要求。
5 結論
文中首先對JPEG2000標準進行了介紹,並詳細分析了數據壓縮的實現原理,之後給出系統總體方案對各個模塊進行了設計。由測試結果可知達到了設計要求,設計的IP核採用以離散小波變換(DWT)算法,具有明顯的性能優勢,可代替JPEG標準廣泛應用於網絡傳輸和無線通訊等領域。但由於JPEG2000算法較為複雜,系統的壓縮速率和壓縮比還有提升空間,因此需要進一步對算法進行研究和改進,通過研究其FPGA實現方法,映射為專用集成電路,最終設計實現具有自主智慧財產權的JPEG2000數據壓縮IP核,具有重要研究價值。