馬玲玲,劉云飛,印輝云,周 陽
(南京林業大學信息科學技術學院,江蘇南京210037)
數字圖像是最重要的信息媒體之一,但是其巨大的數據量給圖像的存儲、傳送和處理帶來了很大困難,制約了數字化技術的進一步應用。圖像壓縮技術在解決此類問題中發揮了巨大作用。
大多數壓縮算法的重點集中在有損壓縮上,但在現實生活中,常需要進行無損壓縮,使得重構所得圖像的峰值信噪比(PSNR)無窮大,如處理醫學圖像、航空圖像、環境監測圖像等。傳統的離散余弦變換(DCT變換)和小波變換對圖像數據進行變換后產生的是浮點數,不能對圖像進行完全的無損壓縮[1]。提升小波變換,亦稱為第二代小波變換,不僅具有傳統小波變換多分辨率的優點,還實現了從整數到整數的變換,滿足無損壓縮的要求,且簡化了運算,易于硬件的快速實現?,F已提出不少利用小波壓縮圖像的方案。文獻[2-4]均提出有效設計架構來實現二維小波變換,但采用片內存儲單元存儲圖像數據,片上資源消耗量大。文獻[5]提出基于設計工具DSP Builder實現提升小波變換的簡化方案,但采用補零的邊界處理結構,有損重構圖像。且大多數文獻的重心在優化二維提升小波變換的實現架構上,忽略了圖像采集部分,不能直接應用在實際生活中。
本設計應用Altera公司的多媒體開發平臺(DE2)及Terasic公司的數碼相機開發套件(D5M)采集實時圖像,并利用具有對稱周期延拓結構的二維整數5/3提升小波變換對采集的圖像進行壓縮處理。另外,為減少片內資源的消耗,提高運算速度,利用DE2提供的存儲器(SDRAM、SRAM)存儲圖像數據。最后,對Altera公司的Cyclone II系列EP2C35F672芯片進行適配,以驗證系統的可靠性與實時性。
小波變換是空間和頻域的局部變換,因而能有效地從信號中提取局部信息。通過伸縮和平移等運算,對函數和信號進行多尺度細化分析。小波提升算法放棄了用伸縮、平移一個母函數的方法來構造小波基,而采用通過一系列提升過程來構造小波基,是一種更為快速有效的小波變換方法。基于提升方法的第二代小波變換分為分裂、預測和更新3個步驟[3]。
(Ⅰ)分裂階段:將原始數據s(j)={,k∈z}分裂成偶數樣本和奇數樣本
(Ⅱ)預測階段:利用偶數樣本s(j-1)預測奇數樣本d(j-1),并用奇數樣本與預測值之差代替奇數樣本,即d(j-1)∶=d(j-1)-p(s(j-1)),式中p為預測算子。
(Ⅲ)更新階段:構造一個算子u,作用于d(j-1)(高頻信號)并疊加到偶數樣本s(j-1)上,得到近似信號(低頻信號),即
5/3提升小波變換作為JPEG2000標準中推薦使用的無損壓縮算法[6],其整數變換形式如式(1)。從式(1)可以看出:計算某個奇數位置的系數時,只要該位置上的原有數據及2個相鄰的偶數數據,計算的結果覆蓋原來的數據,實現原位計算,有利于硬件的實現。

圖像數據是有限長度的數據流,在小波變換時,須對原始信號進行邊界處理。標準定義的邊界處理方法是將數據周期對稱延拓,以實現小波變換的完全重構,同時又不增加變換后的數據量[7],即若數據的范圍是0~N,5/3提升小波整數變換形式見式(2)。

采用模塊化設計,主要分為實時圖像采集、圖像預處理和圖像壓縮3個模塊。
實時圖像采集模塊采用D5M數碼相機采集圖像,其中D5M通過DE2平臺的通用輸入/輸出接口(GPIO接口)JP1與FPGA芯片相連。D5M的圖像采集模塊包括4個部分:互補金屬氧化物半導體(CMOS)傳感器設置、圖像模式轉換、動態隨機存儲器(SDRAM)讀寫控制、視頻圖形陣列(VGA)顯示等。4個部分的時鐘頻率不同,傳感器的采樣頻率遠高于VGA顯示的時鐘頻率,通過SDRAM緩沖圖像數據,實現采樣與顯示的協調。
D5M工作時,CMOS傳感器MT9P001[8]實時采集圖像,通過使能幀有效、行有效及像素時鐘3個同步信號,正確獲取Bayer原始圖像數據流。圖像的模式轉換利用行緩沖+流水線的處理方式,將原始圖像數據實時轉換成RGB數據。SDRAM以四端口模式(兩個寫端口+兩個讀端口)存取數據,像素時鐘頻率作為SDRAM的寫時鐘頻率存儲RGB數據,其中綠色數據被拆分為兩部分,分別與藍色、紅色數據合并存入兩個寫端口。VGA的時鐘頻率作為SDRAM的讀時鐘頻率,取兩個讀端口的數據,還原成RGB 數據,在 VGA 上顯示[9]。
一個圖像包含一個或幾個分量,如一個灰度圖像只有一個亮度分量,而一個RGB彩色圖像有3個分量,分別代表紅、綠、藍彩色分量。為了在后端更好地處理和識別圖像,必須先將彩色圖像轉換成灰度圖像。今后在灰度圖像中的各種變換操作,均可以推廣到含有多個分量的彩色圖像上。
應用ITU-RBT.601標準將RGB彩色圖像轉換為YUV圖像,其轉換如式(3)所示[10]。
式(3)中涉及到浮點運算,難以用硬件實現,且應用時會影響到系統的運行速度,妨礙實時圖像的壓縮。觀察公式(3)中Y的值,發現G的權重幾乎是R的2倍,是B的5倍,因而真正決定灰度值的是G,而R、B的影響則不顯著,所以用G來代表灰度值作近似處理,這種方式最有利于硬件的實現。

從SDRAM兩個讀端口中分別讀出綠色圖像的兩部分數據,合并為完整的綠色圖像數據,實時寫入SRAM,此即為后端處理的灰度圖像數據。其中SRAM與SDRAM保持一致,均以幀為單位循環存儲圖像數據。
基于5/3提升小波變換的壓縮模塊是實時壓縮處理的關鍵部件,其結構如圖1所示。它包括SRAM讀寫控制、時鐘二分頻、奇偶序列的采樣及行列變換等4個部分。
2.3.1 SRAM讀寫控制
考慮到實時存儲在SRAM中的灰度圖像,一個像素點對應一個數據,因而也對應了SRAM一個地址。提出通過控制SRAM的地址來控制數據的方法,簡化整個設計的控制。
行變換時要求以行為單位讀出存儲在SRAM中的數據,設計采用對SRAM地址順序加一的方法得到正確數據。列變換時要求以列為單位讀出數據,即轉置讀出存儲在SRAM中的行變換后的數據,設計采用對地址順序加上圖像行數的方法巧妙實現轉置,并且讀完一列后,地址指向下一列的首端。
壓縮模塊采用片外存儲器SRAM循環覆蓋存儲圖像數據,即經處理后的中間數據和最終數據都存儲在SRAM中,但存儲的地址范圍不同,通過對片外SRAM的控制,可最大程度減少FPGA芯片的片上資源的使用,解決了傳統方法中需設置多個內部RAM的繁瑣和內存消耗問題。
2.3.2 二分頻
為了得到同步奇數、偶數序列,提出對時鐘進行二分頻的方法,即以CLK為時鐘頻率輸出SRAM中灰度圖像數據,以CLK/2為時鐘頻率采樣SRAM的輸出數據。
2.3.3 奇偶序列的采樣
正確的同步奇偶序列的獲取需滿足兩個條件:一是奇偶序列的采樣均以CLK/2為時鐘頻率,二是對數據進行間隔采樣。為此提出在奇數序列采樣模塊前添加一個D觸發器以調整時序,實現數據的間隔采樣。
2.3.4 行列變換
應用MATLAB的Simulink工具箱中 Altera DSP Builder[11-12]中的模塊對5/3提升小波變換進行圖形化建模,通過Signal Complier將模型文件轉換成超高速集成電路硬件描述語言(VHDL)代碼,在Modelsim仿真軟件中進行功能仿真,最后應用QuartusII 9.1編程,通過FPGA芯片進行硬件設計驗證[13]。
5/3提升小波的FPGA設計依文獻[5]所提出的結構作出兩點改進:一是用“周期對稱延拓”取代“邊界補零”,消除由于邊界補零引入多余的小波系數,從而在邊界引起較大誤差的問題,其中應用Multiplexer與Single Pulse對邊界作周期對稱延拓處理;二是用“Divider”取代“Barrel Shifter”實現式(2)中偶數序列的更新,解決當兩高頻分量之和為負值時,移位寄存器移位得到錯誤小波系數的問題。
為便于檢驗,假定數據流的長度為12,奇偶數據流的長度分別為6。使用Modelsim和QuartusII分別對生成的RTL級VHDL代碼進行功能仿真和時序仿真,QuartusII仿真波形圖如圖2所示,Modelsim仿真波形圖如圖3所示。比較圖2和圖3可以看出:在Modelsim和QuartusII中的仿真是一致的,符合5/3小波變換的要求,因而可用作實時圖像的無損壓縮處理。5/3提升小波變換的硬件電路的模型化設計具有很強的靈活性,多次調用即可實現多級小波壓縮。

圖1 圖像壓縮模塊結構

圖2 QuartusII仿真波形圖

圖3 Modelsim仿真波形圖
在QuartusII9.1下實現系統的編譯、綜合和仿真后,經Cyclone II系列EP2C35F672芯片進行適配。編譯結果:Total logic element:796/33,216(2%);Total memory bits:8 240/483,840(2%),即邏輯資源與存儲資源分別占用了2%。與文獻[14]提出的二維提升小波變換實現架構占用50%左右的邏輯資源和存儲資源相比,資源消耗大幅度降低,也解決了諸如文獻[15]中因消耗資源量太大和FPGA芯片片上存儲資源的限制而無法處理較大圖片的缺陷。
測試結果:(1)D5M CMOS傳感器MT9P001實時抓取圖像(選取電子工業出版社出版的《小波分析及其應用》教材封面的一部分作為系統采集的原始圖像)如圖4所示,圖像清晰,大小為400 pixel×320 pixel。(2)經第1級小波列變換后的圖像如圖5所示,大小為200 pixel×320 pixel;經第1級小波行變換后的圖像大小為100 pixel×320 pixel;經第2級小波行變換后的圖像如圖6所示,大小為100 pixel×160 pixel。經兩級壓縮,壓縮率為峰值信噪比


圖4 D5M拍攝的原始圖像

圖5 第1級小波列壓縮圖像

圖6 第2級小波行壓縮圖像
設計并完成了一整套從圖像采集、預處理到無損壓縮的實時圖像處理系統,并從圖片的處理效果、結構的靈活性及片上資源的節省3個方面對各個模塊作出改進。在不影響圖片特征和視覺效果的前提下,提出了用G(綠色)取代Y(亮度)的思想,克服了傳統的彩色空間轉換過程中浮點數計算硬件難以實現與運行速度低的缺點。針對5/3提升小波變換,提出了應用對稱周期延拓結構取代邊界補零的思路,彌補了邊界補零結構帶來多余小波系數的不足,改善了壓縮圖片的質量。整個系統實行模塊化設計,多次調用壓縮模塊即可實現多級壓縮處理,且完全由片外存儲器存儲圖像采集和處理過程中的大容量數據,大大減輕了FPGA芯片的負荷。
[1]彭寧嵩,陳家新,韓建松,等.一種基于小波分析的圖像壓縮編碼方法[J].河南科技大學學報:自然科學版,2001,22(3):53-56.
[2]季云松,郭成志,范璐璐,等.基于FPGA的小波圖像實時處理方法[J].激光與紅外,2009,39(10):1112-1114.
[3]盧春暉,王英健,陳麗.提升小波算法的FPGA硬件實現[J].微處理機,2010,33(2):39-41.
[4]李娜,劉艷瀅.基于提升小波的圖像去噪算法的FPGA設計[J].微計算機信息,2009,25(2):166-168.
[5]陳大科,韓久強.5/3提升小波變換及逆變換的FPGA設計方法[J].東南大學學報,2005,35(2):211-214.
[6]胡建,王黎.基于FPGA的小波提升變換實現[J].微計算機信息,2010,26(82):127-128.
[7]張延奎.小波分析及其應用[M].北京:機械工業出版社,2005:117.
[8]羅鈞,吳克松,付麗.基于高分辨率CMOS傳感器圖像采集系統的實現[J].電子技術應用,2008(5):54-56.
[9]朱亦丹,方儀冰.基于FPGA的圖像采集與VGA顯示系統[J].計算機應用,2011,31(5):1258-1261.
[10]封岸松,戰仕成,汪瀅.基于FPGA的RGB到YCC顏色空間轉換[J].現代電子技術,2010,33(10):122-124.
[11]丁亦農.Simulink與信號處理[M].北京:北京航空航天大學出版社,2010.
[12]彭滋霖,陽春華.Matlab/Simulink到VHDL代碼的轉換研究及其實驗配置[J].現代電子技術,2007,31(4):186-188.
[13]袁博,宋萬杰,吳順君.基于FPGA的Matlab與Quartus聯合設計技術研究[J].電子工程師,2007,33(1):6-8.
[14]崔巍,汶德勝,馬濤.二維提升小波變換的FPGA結構設計[J].計算機工程,2007,33(15):261-263.
[15]林路易.JPEG2000中提升小波算法的FPGA實現[D].哈爾濱:哈爾濱工業大學,2006.