摘要:
工程應用中,在對模糊圖像處理時,由于空域去卷積的方式難度較大,通常對圖像進行頻域變換后,在頻域中進行相關的處理與實現(xiàn)。針對圖像去模糊系統(tǒng)的頻域處理硬件資源消耗大、轉換靈活性差、處理時間長等問題,以DE2開發(fā)板為硬件平臺,結合模糊圖像及去模糊算法特點,采用輸入數(shù)據(jù)預處理、原位計算、拋位、流水線結構、并行處理等方式設計實現(xiàn)了一種針對圖像去模糊系統(tǒng)的頻域處理方式。實驗數(shù)據(jù)顯示,方法對圖像數(shù)據(jù)頻域處理的精確度始終保持在98.5%以上,硬件資源僅用了9 162個邏輯單元。實驗結果表明,所設計的系統(tǒng)在處理精度及資源利用上優(yōu)于其他同類系統(tǒng)。
0 引言
隨著電子技術的發(fā)展,嵌入式系統(tǒng)在圖像處理領域的應用越來越廣,但相關芯片卻有明顯不足:ASIC芯片開發(fā)周期長、成本高、靈活性差;DSP和ARM的串行結構難以滿足圖像的實時處理要求等。然而,FPGA融合了DSP和ASIC等芯片的優(yōu)點,具有靈活的配置方式,因易于實現(xiàn)并行處理功能和流水線工作方式,使得FPGA在圖像處理領域具有更高的應用價值[1]。
由于在空域中對模糊圖像的模糊核估計手段有限,且處理精度不高,故大多采用頻域轉換的方式,在頻域中對模糊圖像進行處理。頻域轉換的硬件實現(xiàn)通常采用直接調用IP核或設計通用的信號頻域轉換器等方法,這樣不僅在硬件資源消耗和處理效率上大打折扣,而且沒有充分利用模糊圖像及去模糊算法的特點來減少資源利用及處理時間。
本文結合模糊圖像及頻域去模糊算法的特點,采用圖像數(shù)據(jù)預處理、原位計算、拋位、流水線處理等方法,設計實現(xiàn)了一種針對圖像去模糊系統(tǒng)的頻域處理方法。相比其他同類頻域處理方法,其具有資源利用率高、硬件實現(xiàn)簡單、針對性強等特點。
1 系統(tǒng)總體設計
系統(tǒng)以DE2開發(fā)板為開發(fā)平臺,以Altera的EP2C-35F672C6型號的FPGA芯片為核心處理單元,采用TRDB-D5M圖像傳感器進行圖像數(shù)據(jù)采集。系統(tǒng)總體結構設計如圖1所示。
圖像傳感器通過DE2平臺的通用輸入輸出口與FPGA連接,F(xiàn)PGA通過I2C控制模塊對其進行寄存器及工作方式的設定[2]。圖像傳感器獲得Bayer圖像數(shù)據(jù)流后,通過格式轉換處理,將其轉換成RGB數(shù)據(jù)。由于圖像傳感器工作時,內部各部分的時鐘頻率不同,為了使采樣與顯示協(xié)調一致,加入SDRAM存儲模塊對采集的圖像信息進行緩存,SDRAM以四端口的形式存取數(shù)據(jù),四個端口中兩個為寫端口,兩個為讀端口,使系統(tǒng)的讀取效率提高了一倍。數(shù)據(jù)存入存儲模塊的同時,將圖像數(shù)據(jù)送至RGB2Gray格式轉換模塊,在該模塊中完成圖像從彩色圖像到灰度圖像的轉換,接著傳送至頻域轉換模塊,完成圖像的頻域變換,最后傳送至圖像處理模塊,對模糊圖像進行去模糊預處理后,存入存儲模塊,通過MATLAB平臺對處理結果進行分析驗證。
2 核心模塊設計
2.1 圖像灰度變換模塊設計
考慮到直接對彩色圖像進行頻域轉換時,需分三通道對圖像進行存儲及處理,故本文在對圖像頻域處理前加入灰度變換模塊,既不損壞圖像信息,又減少了數(shù)據(jù)量及存儲空間。
從存儲模塊中提取采集到的圖像信息,加入一個存取控制模塊,控制將要讀取的圖像數(shù)據(jù)的地址。利用QuartusII創(chuàng)建ROM IP核,并將彩色圖像數(shù)據(jù)分R、G、B 3個顏色通道存儲在ROM中,根據(jù)式(1)彩色圖像轉換成灰度圖像的算法公式,設計RGB2Gray處理模塊。結構圖如圖2所示。處理完成后,將灰度圖像數(shù)據(jù)存儲在存儲模塊,待后面處理時讀取即可。
2.2 一維FFT模塊設計
在進行一維FFT設計時,本文采用按頻率抽取(DIF)的FFT算法。由于各蝶形運算的輸入與輸出互不重復,任何一個蝶形的兩個輸入量經(jīng)蝶形運算后可以實現(xiàn)同址運算。這種原位運算方式節(jié)省了大量的存儲單元,降低了硬件資源的使用成本[4]。
本文參照CORDIC算法對蝶形運算單元進行設計,目的是充分利用FPGA的流水線結構,提高蝶形運算單元的處理速度。另外,考慮到數(shù)據(jù)在頻域轉換后主要對頻譜中的亮條信息進行處理分析,故在蝶形運算單元中加入了拋位運算,這樣既對模糊圖像有效信息未造成影響,在資源消耗及處理速度上也進一步得到優(yōu)化。
基-2FFT設計主要由存儲單元、M(log2N,N為FFT輸入序列的長度)級蝶形運算單元、倒位序轉為順序單元等部分組成,總體結構如圖3所示。在模塊輸入時序的控制下,將待處理的數(shù)據(jù)流輸入到模塊中,通過數(shù)據(jù)流水線模塊的控制,將有效數(shù)據(jù)按設定時鐘依次輸入到(M-1)級蝶形運算單元中,直到完成最后一級的蝶形運算后(最后一級無乘法器),經(jīng)過順序排序單元,即可將輸出的倒位序數(shù)據(jù)按自然順序輸出到存儲單元中。其中,為了保證資源的有效利用,且不影響算法的有效性,在順序排序單元的設計中,本文設置了兩個存儲單元,既能保證數(shù)據(jù)流水線輸入,又能避免在順序排序單元的工作過程中出現(xiàn)數(shù)據(jù)交叉讀取的問題。
2.3 二維FFT模塊設計
由于傅里葉變換具有可分性的性質,處理圖像的傅里葉變換時,通常將二維變換通過降維的方式轉化為行和列的一維傅里葉變換。首先將圖像數(shù)據(jù)以行為單位,依次進行行方向的一維傅里葉變換,待行方向數(shù)據(jù)處理完畢后,對結果矩陣進行轉置處理,將處理后的數(shù)據(jù)再次進行傅里葉變換[6]。本文設計的二維FFT處理模塊如圖4所示,由于FFT處理速率與圖像輸入速率不匹配,故將圖像數(shù)據(jù)經(jīng)過FIFO緩存模塊后,以數(shù)據(jù)流的模式進行行FFT處理。接著將處理結果存儲在緩存器中,在存儲器內進行數(shù)據(jù)的交換,完成矩陣轉置處理。對轉置后的矩陣再次進行FFT處理,同樣將結果存儲在緩存器模塊中,重復之前的轉置處理后,將結果送入到FIFO模塊,輸出結果即為圖像的二維FFT處理結果。在圖像的二維FFT處理中,行FFT和列FFT處理模塊結構完全相同,只需在處理過程中加入轉置算法及所需的存儲模塊。
由于FPGA均以定點數(shù)的形式對數(shù)據(jù)進行處理,本文將行(列)數(shù)據(jù)進行了如式(2)所示的算法處理,將兩行(列)數(shù)據(jù)以復數(shù)形式轉化成一組數(shù)據(jù),這樣在進行FFT處理時,使處理速度提高了一倍[3],結合相應的換算,對應的輸出可用式(3)、式(4)表示。
2.4 去模糊算法簡述
空域中,在忽略加性噪聲的情況下,模糊圖像可轉化成清晰圖像與模糊核的卷積過程。將空域轉換到頻域,卷積問題就變成了相乘問題,去模糊的核心就是對模糊尺度和方向的估計。對模糊圖像進行頻域轉換后,圖像的模糊核信息主要集中在頻譜的亮條中[7]。借助相關算法將亮條信息進行提取,即可得到模糊圖像的像素偏移角度和偏移距離,從而實現(xiàn)圖像的去模糊。
3 系統(tǒng)測試
完成系統(tǒng)各模塊設計之后,在QuartusII環(huán)境下使用Programmer軟件,將圖像采集與顯示模塊的工程文件下載到FPGA中。系統(tǒng)圖像采集效果如圖5(a)所示。從測試結果可以看出系統(tǒng)實時圖像采集正常,條紋、細線等細節(jié)顯示清晰,畫面穩(wěn)定,功能完全符合設計要求。采集的圖像大小為320×240。
為了便于對系統(tǒng)處理結果進行分析比較,本文在MATLAB中,創(chuàng)建了一個運動位移為30像素、運動角度為10°的點擴散函數(shù)(PSF),使用PSF對采集的圖像進行卷積操作,得到一幅簡單運動模糊圖像,如圖5(b)所示。
將經(jīng)模糊處理后的圖像數(shù)據(jù)輸入到灰度變換模塊,將彩色圖像分R、G、B三通道分別存儲,接著進行相應算法處理后,即得到灰度圖像,將結果數(shù)據(jù)在MATLAB讀出,結果如圖5(c)所示。
在FFT處理模塊的工程設計中,使用Verilog HDL語言對該設計模塊進行了行為級描述。以Altera DE2開發(fā)板的EP2C35F672C6為目標芯片,在Quartus II平臺上進行綜合、布局、布線。硬件器件使用報告顯示此設計資源占用較少,僅用了9 162個邏輯單元,使用了73個引腳。
為了便于對圖像進行FFT處理,將一行256點的數(shù)據(jù)輸入到FFT模塊,在經(jīng)過9級蝶形運算單元后,對結果數(shù)據(jù)輸入到順序排序模塊重新按自然順序排序后,即可得到FFT處理結果。
在Modelsim環(huán)境下編寫Testbench文件,對FFT模塊進行仿真測試。由仿真結果可知,在旋轉因子片選(rTwiCsEp)和寫脈沖(rTwiWrEp)有效的情況下,將旋轉因子(rTwiCoe)存入到FFT模塊。待旋轉因子輸入完畢后,數(shù)據(jù)輸入使能為高,開始輸入待處理數(shù)據(jù)(rSrcFFT)。等到輸入數(shù)據(jù)達到所設定的存儲容量后,輸出使能(rFftOutEn)變?yōu)楦?,開始輸出FFT處理結果(fftout)。每當幀有效(frmval)給一個信號脈沖時,證明將輸出一行(列)數(shù)據(jù),待一整行數(shù)據(jù)輸出完成后,將給下一個信號脈沖,形成流水線處理模式。具體時序如圖6所示。從仿真波形看,時序符合預期設計。
4 系統(tǒng)分析
待圖像數(shù)據(jù)完成二維FFT處理后,將生成的結果數(shù)據(jù)通過MATLAB軟件讀出,將之與通過MATLAB的fft2函數(shù)處理后的結果進行對比,如圖7所示,結果是一致的。由圖可知,經(jīng)本文設計的頻域處理算法處理后的數(shù)據(jù)保留了模糊圖像的有效信息。
從兩種方式處理的功率譜看,輪廓基本一致,少許差別的原因在于本文設計算法采用了塊浮點及針對去模糊系統(tǒng)使用的數(shù)據(jù)拋位方法,而MATLAB采用的是純浮點的處理方法。功率譜如圖8所示。
對經(jīng)本文設計的頻域處理方法得到的結果與經(jīng)MATLAB直接調用fft2得到的結果進行對比,統(tǒng)計對應像素點的絕對誤差,結果如圖9所示。從圖可得,在不考慮定點與浮點數(shù)據(jù)處理方式的影響下,本文設計的頻域處理方式在128×128點、256×256點和320×240點不同點數(shù)環(huán)境下的處理精度都保持在98.5%以上。
5 結論
頻域處理對于圖像去模糊系統(tǒng)的性能起著極重要的作用。本文針對去模糊系統(tǒng)在頻域處理的硬件實現(xiàn)中遇到的資源利用高和處理精度低等問題,設計完成了一種基于FPGA的流水線型結構的頻域處理方法。從實驗結果及分析可見,相比于FPGA自帶的IP核及其他處理方法,該方法在圖像去模糊系統(tǒng)的頻域處理,結合圖像數(shù)據(jù)和模糊信息的特點,在頻域處理的設計上降低了存儲消耗,提高了處理速度,具有一定的工程價值與參考意義。
-
FPGA
+關注
關注
1625文章
21620瀏覽量
601239 -
圖像傳感器
+關注
關注
68文章
1862瀏覽量
129405 -
數(shù)據(jù)采集
+關注
關注
38文章
5808瀏覽量
113424
原文標題:【學術論文】圖像去模糊系統(tǒng)的頻域處理改進方法
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論