摘要:介紹了5/3提升小波變換相對于傳統(tǒng)小波變換的優(yōu)點,設(shè)計了一種基于FPGA技術(shù)的圖像小波變換方法。相對于傳統(tǒng)的小波變換,提升算法不依賴于傅立葉變換,降低了運算復(fù)雜度,非常適合硬件實現(xiàn)。采用基于Matlab和Simulink的設(shè)計工具DSP Builder,設(shè)計5/3提升小波變換Model,并在Quartus II工具下進行綜合、仿真和下載,在Altera CycloneII系列FPGA(型號為EP2C35F484C8)上實現(xiàn)了5/3提升小波變換的功能。
關(guān)鍵詞:提升小波變換圖像處理FPGADSP Builder
中圖分類號:TP391文獻標識碼:B文章編號:1009-3044(2010)02-397-03
Simulation and FPGA Implementation for 5/3 Lifting Wavelet Transform
WANG Bei-zhen, GUO Zhi-qiang
(Engineering College, Ocean University of China, Qingdao 266100, China)
Abstract: The advantages of 5/3 lifting wavelet transform relative to the traditional wavelet transform are introduced in the paper. A method of FPGA-based image wavelet transform is designed. Lifting algorithm does not depend on the Fourier transform, reduces the computational complexity, and it's very suitable for hardware implementation. With digital signal process(DSP) Builder based on Matlab and Simulink, the model of 5/3 lifting wavelet transform is designed, and then it was synthesized, simulated and configured to FPGA chip with Quartus II. In the Altera Cyclone II series FPGA (model EP2C35F484C8), the function of 5/3 lifting wavelet transform is achieved.
Keywords: Lifting wavelet transform, image processing, FPGA,DSP Builder
相對于傳統(tǒng)的小波變換,提升小波變換具有良好的、適合硬件實現(xiàn)的特點。提升算法不依賴于傅立葉變換,在空間域就能完成小波變換,實現(xiàn)對頻率域信號的分析,因此不需要很強的傅立葉分析背景便可以理解小波的特性和小波變換。由于摒棄了傳統(tǒng)的傅立葉變換,將高低通濾波器轉(zhuǎn)化成一系列的預(yù)測和更新步驟,而預(yù)測和更新步驟的實現(xiàn)往往很簡單,并且具有很大的重復(fù)性,從而簡化了小波分解和重構(gòu)的實現(xiàn)結(jié)構(gòu),降低了運算復(fù)雜度。提升算法可以進行同址運算,大大減少了程序所需要的存儲器開銷。這些特點使得提升算法非常適合硬件實現(xiàn),可以有效地提高硬件系統(tǒng)的性能,以及硬件資源的利用率。
1 小波變換概述
所謂小波(wavelet)就是存在于一個較小區(qū)域的波,即一小段波。其數(shù)學(xué)定義是:設(shè)Ф(t)為平方可積函數(shù),若其傅里葉變換Ψ(ω)滿足條件
則稱Ф(t)為一個基本小波或母小波,并稱上式為小波的容許性條件。
根據(jù)小波函數(shù)的定義,小波函數(shù)一般在時域具有緊支集,即函數(shù)的非零值定義域具有有限的范圍,這就是小波所謂“小”的地方。將小波函數(shù)Ф(t)進行伸縮和平移,設(shè)其尺度因子為α,平移因子為b,并記伸縮平移后的函數(shù)為Фa,b(t),即
稱Фa,b(t)為參數(shù)α和b的小波基函數(shù)。從母小波和小波基的定義可以看出,他們具有以下特點:直流分量為零;為帶通信號,隨著t的延伸而快速衰減[1]。
傳統(tǒng)的小波變換,又稱為第一代小波變換,是在頻率域進行的。其基本的變換工具是傅立葉變換,變換過程主要是對圖像行列分別濾波,進行卷積運算,其過程復(fù)雜、運算量大,不利于硬件實時實現(xiàn)。此外,原始圖像的整數(shù)數(shù)據(jù)經(jīng)過傳統(tǒng)小波變換后,得到的是浮點數(shù)。從計算機有舍入誤差的角度來看,通常這樣的小波變換不能無失真地重構(gòu),因此不能用于無損圖像編碼。而且,在對變換后的系數(shù)編碼壓縮需要進行量化,量化的結(jié)果會損失一定的數(shù)據(jù)信息,導(dǎo)致信息無法完全重構(gòu)。
W.Sweldens于1995年提出了基于提升方案的小波變換,也稱為第二代小波變換。小波提升方案是實現(xiàn)小波變換的一種新方法,與傳統(tǒng)的算法相比,具有計算速度快、占用內(nèi)存少、可以實現(xiàn)整數(shù)變換的特點。Daubechies已經(jīng)證明,任何小波變換或具有有限長濾波器的兩階濾波變換都可以被分解成一系列簡單的提升步驟,所有能夠用傳統(tǒng)算法實現(xiàn)的小波,都可以用提升方案實現(xiàn)。提升方法擺脫了傳統(tǒng)的濾波器和傅立葉頻域的概念,可以直接利用時域信號,從預(yù)測和更新的角度來設(shè)計算法。對提升算法稍加改進,就可以實現(xiàn)整數(shù)到整數(shù)的變換,從而實現(xiàn)圖像的真正無損壓縮。
圖像信號的二維小波變換實質(zhì)上是對圖像進行離散二維小波變換,其二維小波變換相當于對二維圖像數(shù)據(jù)在水平方向和垂直方向各自獨立地進行一次一維小波變換。圖像的小波變換具有內(nèi)在的多尺度結(jié)構(gòu)。因此,基于小波的圖像壓縮無需對圖像進行分塊,從而消除了DCT變換等基于塊變換所導(dǎo)致的方塊效應(yīng),小波基的緊支集特性和小波變換的多尺度展開結(jié)構(gòu)使得小波變換同時又是一種時頻分解,每個小波系數(shù)都只反映圖像一個特定的空間范圍和特定的頻率范圍內(nèi)的信息。一般來說,一幅典型的圖像主要由齊次區(qū)域和紋理區(qū)域以及相當少的視覺敏感的邊界組成,齊次區(qū)的跳變很少,主要由低頻成分組成;紋理區(qū)既含有低頻部分又含有高頻部分;而邊界區(qū)則有極大的跳變,這部分區(qū)域則集中了圖像的絕大部分高頻能量。因此,小波變換將圖像絕大部分的能量壓縮到低頻子帶,只有少數(shù)的能量,分布在幾個高頻子帶[2]。
小波變換一方面能很好的消除圖像數(shù)據(jù)中的統(tǒng)計冗余,另一方面其多分辨率的變換特性提供了利用人眼視覺特性的機制,而且小波變換后的圖像數(shù)據(jù)能夠保持圖像在各種分辨率下的粗細結(jié)構(gòu),為進一步去除圖像中的其它形式的冗余信息提供了便利。而且所有小波在作非線性逼近時都具有大致相同的失真度。這些特性被證明對圖像壓縮是至關(guān)重要的。由于小波變換的這些特點,現(xiàn)代各種數(shù)據(jù)壓縮系統(tǒng)中都采用這一技術(shù),而小波變換圖像壓縮編碼也成為信息處理的一個研究熱點。
2 DSP Builder設(shè)計流程簡介
DSP Builder可以完成基于FPGA的DSP系統(tǒng)設(shè)計的整個流程。除了圖形化的系統(tǒng)建模外,DSP Builder可以自動完成大部分的設(shè)計過程,直至把設(shè)計文件下載至基于FPGA的開發(fā)板上。
鑒于在FPGA上設(shè)計一個DSP模塊的復(fù)雜性,設(shè)計的性能(包括面積、速度、可靠性、設(shè)計周期)對于不同的應(yīng)用目標將有不同的要求,涉及的軟件工具也不僅僅是Simulink和Quartus II,DSP Builder針對不同情況提供了兩套設(shè)計流程,即自動流程和手動流程。圖1是利用DSP Builder進行DSP設(shè)計的流程框圖。
第一步是在Matlab/Simulink中進行設(shè)計輸入,即在Simulink環(huán)境中建立一個mdl模型文件,用圖形方式調(diào)用Altera DSP Builder和Simulink其它庫中的圖形模塊(Block),構(gòu)成系統(tǒng)級或算法級設(shè)計框圖(或稱Simulink設(shè)計模型)。
第二步是利用Simulink圖形化仿真、分析功能,分析此設(shè)計模型的正確性,完成模型仿真。
這兩步與一般的Matlab/Simulink建模過程幾乎沒有什么區(qū)別,所不同的是設(shè)計模型庫采用Altera DSP Builder的Simulink庫,也不涉及到其它EDA軟件,沒有自動流程和手動流程的區(qū)別。
第三步是DSP Builder設(shè)計實現(xiàn)的關(guān)鍵一步,通過SignalCompiler把Simulink的模型文件(后綴為.mdl)轉(zhuǎn)化成通用的硬件描述語言。由于EDA工具軟件(諸如Quartus II、ModelSim)不能直接處理Matlab的.mdl文件,這就需要一個轉(zhuǎn)換過程,轉(zhuǎn)換獲得的文件是基于RTL級(寄存器傳輸級)的硬件描述。
最后,對以上設(shè)計產(chǎn)生的硬件描述語言的RTL代碼和仿真文件進行綜合、編譯適配。大部分情況下,Quartus II對DSP模塊適配后,需要再次驗證適配后網(wǎng)表與Simulink中建立的DSP模型的一致性。需要再次使用ModelSim進行仿真,仿真采用Quartus II適配后帶延時信息的網(wǎng)表文件(EDIF格式或VHDL、Verilog格式)。
3 提升小波變換的FPGA實現(xiàn)
目前在圖像壓縮領(lǐng)域中廣泛使用的兩種小波方案是Daub9/7小波提升方案和Daub5/3小波提升方案。Daub5/3小波是一個整數(shù)到整數(shù)的可逆變換,和Daub9/7小波相比,具有以下兩個優(yōu)點:一是運算速度快,其正變換和逆變換的計算僅靠整數(shù)加法和移位就可以完成,而Daub9/7的計算則需要浮點數(shù)加法和乘法;二是內(nèi)存需求低,對圖像的Daub5/3小波計算結(jié)果,用16位整數(shù)即可保存,而Daub9/7的計算結(jié)果則要用32位浮點數(shù)保存。Daub5/3提升小波正變換公式是:
對應(yīng)的反變換公式是:
式中S0(n)是給定的一維信號,S1[2n],d1[2n]分別是信號S0(n)經(jīng)過低通和高通濾波,并進行亞采樣后的信號[3]。
3.1 Simulink建模
圖2中“From Workspace1”模塊用以模擬圖像信息中的偶數(shù)序列,數(shù)據(jù)寬度為8Bit。由離散小波正變換公式可知,偶數(shù)序列相鄰數(shù)據(jù)X(2n)與X(2n+2)進行加法運算。使用“Delay”模塊,使得X(2n)與X(2n+2)同步進入加法器(Pipelined Adder)。“Pipelined Adder”是流水線工作方式,每個時鐘周期,對輸入端口A和B進行一次加法操作。因此,必須嚴格保證每個時鐘到來時,A、B端口的數(shù)據(jù)有效且同步,這樣才能保證下級運算結(jié)果的正確性。保證數(shù)據(jù)同步的方法是合理地使用“Delay”模塊。使用多路選擇器“n-to-1 Multiplexer”處理邊界問題,通過上述邏輯運算,將會得到X(2n)與X(2n+2)的和,并進入下級運算。
圖3中使用移位寄存器(Barrel Shifter)實現(xiàn)除法運算,簡化了運算電路的復(fù)雜程度,避免了乘法器的使用,減少硬件資源消耗,提高運算效率,這是5/3提升小波變換利于硬件實現(xiàn)的一個體現(xiàn)。通過圖3的邏輯搭建,就得到了高頻分量Y(2n+1)。5/3提升小波正變換的運算邏輯的Model如圖4所示:
圖4 5/3提升小波正變換Simulink模型
3.2 提升小波正變換功能仿真驗證
如圖5所示,ModelSim對Simulink模型進行仿真。系統(tǒng)復(fù)位后,信號源發(fā)出兩組數(shù)據(jù)(127*sin([0:2*pi/(2^6):2*pi])+128)模擬輸入信號,最后兩行數(shù)據(jù)輸出分別是模擬圖像的奇、偶序列,分別表示經(jīng)過一級小波變換后的高、低頻小波系數(shù)。與公式(3)的運算結(jié)果對比,該模型能準確無誤的進行小波運算,圖像數(shù)據(jù)邊界也得到了對稱延拓處理。
通過Matlab讀入圖像文件(lena.bmp),經(jīng)過From workspace模塊進入提升小波變換模型,完成圖像數(shù)據(jù)行變換,輸出結(jié)果保存到workspace中,對圖像數(shù)據(jù)進行轉(zhuǎn)置處理,再將轉(zhuǎn)置圖像輸入提升小波變換模型,完成列變換,輸出結(jié)果同樣保存在workspace中,此時,完整的圖像一級小波變換完成。圖6是Matlab仿真輸入輸出的圖像效果,圖7是原始圖像經(jīng)過行變換后高、低頻小波系數(shù)分布情況。
3.3 生成Quartus工程
在Matlab/Simulink中仿真驗證通過后,將設(shè)計轉(zhuǎn)換到FPGA硬件中實現(xiàn),通過DSP Builder可以得到針對于特定的FPGA型號的硬件描述語言。點擊Simulink模型中的SignalComplier模塊,將模型文件wavelettest.mdl轉(zhuǎn)換成硬件描述語言(使用的是VHDL語言),同時建立了與模型文件同名的Quartus II工程。在Quartus II環(huán)境下對小波變換邏輯描述進行功能仿真和時序仿真,并進行時序分析,該邏輯塊可運行在276MHZ頻率下。
4 結(jié)束語
采用Matlab/Simulink和DSP Builder的設(shè)計流程,設(shè)計了針對圖像處理的5/3提升小波變換模型,在Matlab中對模型進行了算法級和系統(tǒng)級的驗證,在ModelSim中對生成的QuartusII工程進行了RTL級仿真驗證,利用QuartusII進行時序仿真、優(yōu)化,結(jié)合SOPC Builder將硬件系統(tǒng)下載至FPGA芯片進行硬件調(diào)試,完成了圖像5/3提升小波變換的FPGA實現(xiàn),驗證了設(shè)計的可行性。
參考文獻:
[1] Lian C J, Chen K F, Chen H H, et al. Lifting based discrete wavelet transform architecture for JPEG2000[J].Proceedings of the 2001 IEEE International Symposium on Circuits and Systems,ISCAS,2001(2):445-448.
[2] Kim N, Kehtarnavaz N.DWT-based scene adaptive color quantization.Real-Time Imaging,2005,11(5):443-453.
[3] 許茹,李佳.基于小波變換和零樹法的水聲信道彩色圖像壓縮編解碼研究[J].海洋技術(shù),2004,23(3):21-25.
[4] 王俊雄,黃鉉,劉正義,基于FPGA的嵌入式系統(tǒng)設(shè)計[J].電子工程師,2006,32(10):67-69.