0 引言

隨著電子技術(shù)的發(fā)展,嵌入式系統(tǒng)在圖像處理領(lǐng)域的應(yīng)用越來越廣,但相關(guān)芯片卻有明顯不足:ASIC芯片開發(fā)周期長、成本高、靈活性差;DSP和ARM的串行結(jié)構(gòu)難以滿足圖像的實(shí)時處理要求等。然而,F(xiàn)PGA融合了DSP和ASIC等芯片的優(yōu)點(diǎn),具有靈活的配置方式,因易于實(shí)現(xiàn)并行處理功能和流水線工作方式,使得FPGA在圖像處理領(lǐng)域具有更高的應(yīng)用價值[1]。

由于在空域中對模糊圖像的模糊核估計(jì)手段有限,且處理精度不高,故大多采用頻域轉(zhuǎn)換的方式,在頻域中對模糊圖像進(jìn)行處理。頻域轉(zhuǎn)換的硬件實(shí)現(xiàn)通常采用直接調(diào)用IP核或設(shè)計(jì)通用的信號頻域轉(zhuǎn)換器等方法,這樣不僅在硬件資源消耗和處理效率上大打折扣,而且沒有充分利用模糊圖像及去模糊算法的特點(diǎn)來減少資源利用及處理時間。

本文結(jié)合模糊圖像及頻域去模糊算法的特點(diǎn),采用圖像數(shù)據(jù)預(yù)處理、原位計(jì)算、拋位、流水線處理等方法,設(shè)計(jì)實(shí)現(xiàn)了一種針對圖像去模糊系統(tǒng)的頻域處理方法。相比其他同類頻域處理方法,其具有資源利用率高、硬件實(shí)現(xiàn)簡單、針對性強(qiáng)等特點(diǎn)。

系統(tǒng)以DE2開發(fā)板為開發(fā)平臺,以Altera的EP2C-35F672C6型號的FPGA芯片為核心處理單元,采用TRDB-D5M圖像傳感器進(jìn)行圖像數(shù)據(jù)采集。系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)如圖1所示。

圖像傳感器通過DE2平臺的通用輸入輸出口與FPGA連接,F(xiàn)PGA通過I2C控制模塊對其進(jìn)行寄存器及工作方式的設(shè)定[2]。圖像傳感器獲得Bayer圖像數(shù)據(jù)流后,通過格式轉(zhuǎn)換處理,將其轉(zhuǎn)換成RGB數(shù)據(jù)。由于圖像傳感器工作時,內(nèi)部各部分的時鐘頻率不同,為了使采樣與顯示協(xié)調(diào)一致,加入SDRAM存儲模塊對采集的圖像信息進(jìn)行緩存,SDRAM以四端口的形式存取數(shù)據(jù),四個端口中兩個為寫端口,兩個為讀端口,使系統(tǒng)的讀取效率提高了一倍。數(shù)據(jù)存入存儲模塊的同時,將圖像數(shù)據(jù)送至RGB2Gray格式轉(zhuǎn)換模塊,在該模塊中完成圖像從彩色圖像到灰度圖像的轉(zhuǎn)換,接著傳送至頻域轉(zhuǎn)換模塊,完成圖像的頻域變換,最后傳送至圖像處理模塊,對模糊圖像進(jìn)行去模糊預(yù)處理后,存入存儲模塊,通過MATLAB平臺對處理結(jié)果進(jìn)行分析驗(yàn)證。

2 核心模塊設(shè)計(jì)

2.1 圖像灰度變換模塊設(shè)計(jì)

考慮到直接對彩色圖像進(jìn)行頻域轉(zhuǎn)換時,需分三通道對圖像進(jìn)行存儲及處理,故本文在對圖像頻域處理前加入灰度變換模塊,既不損壞圖像信息,又減少了數(shù)據(jù)量及存儲空間。

從存儲模塊中提取采集到的圖像信息,加入一個存取控制模塊,控制將要讀取的圖像數(shù)據(jù)的地址。利用QuartusII創(chuàng)建ROM IP核,并將彩色圖像數(shù)據(jù)分R、G、B 3個顏色通道存儲在ROM中,根據(jù)式(1)彩色圖像轉(zhuǎn)換成灰度圖像的算法公式,設(shè)計(jì)RGB2Gray處理模塊。結(jié)構(gòu)圖如圖2所示。處理完成后,將灰度圖像數(shù)據(jù)存儲在存儲模塊,待后面處理時讀取即可。

2.2 一維FFT模塊設(shè)計(jì)

在進(jìn)行一維FFT設(shè)計(jì)時,本文采用按頻率抽取(DIF)的FFT算法。由于各蝶形運(yùn)算的輸入與輸出互不重復(fù),任何一個蝶形的兩個輸入量經(jīng)蝶形運(yùn)算后可以實(shí)現(xiàn)同址運(yùn)算。這種原位運(yùn)算方式節(jié)省了大量的存儲單元,降低了硬件資源的使用成本[4]。

本文參照CORDIC算法對蝶形運(yùn)算單元進(jìn)行設(shè)計(jì),目的是充分利用FPGA的流水線結(jié)構(gòu),提高蝶形運(yùn)算單元的處理速度。另外,考慮到數(shù)據(jù)在頻域轉(zhuǎn)換后主要對頻譜中的亮條信息進(jìn)行處理分析,故在蝶形運(yùn)算單元中加入了拋位運(yùn)算,這樣既對模糊圖像有效信息未造成影響,在資源消耗及處理速度上也進(jìn)一步得到優(yōu)化。

基-2FFT設(shè)計(jì)主要由存儲單元、M(log2N,N為FFT輸入序列的長度)級蝶形運(yùn)算單元、倒位序轉(zhuǎn)為順序單元等部分組成,總體結(jié)構(gòu)如圖3所示。在模塊輸入時序的控制下,將待處理的數(shù)據(jù)流輸入到模塊中,通過數(shù)據(jù)流水線模塊的控制,將有效數(shù)據(jù)按設(shè)定時鐘依次輸入到(M-1)級蝶形運(yùn)算單元中,直到完成最后一級的蝶形運(yùn)算后(最后一級無乘法器),經(jīng)過順序排序單元,即可將輸出的倒位序數(shù)據(jù)按自然順序輸出到存儲單元中。其中,為了保證資源的有效利用,且不影響算法的有效性,在順序排序單元的設(shè)計(jì)中,本文設(shè)置了兩個存儲單元,既能保證數(shù)據(jù)流水線輸入,又能避免在順序排序單元的工作過程中出現(xiàn)數(shù)據(jù)交叉讀取的問題。

2.3 二維FFT模塊設(shè)計(jì)

由于傅里葉變換具有可分性的性質(zhì),處理圖像的傅里葉變換時,通常將二維變換通過降維的方式轉(zhuǎn)化為行和列的一維傅里葉變換。首先將圖像數(shù)據(jù)以行為單位,依次進(jìn)行行方向的一維傅里葉變換,待行方向數(shù)據(jù)處理完畢后,對結(jié)果矩陣進(jìn)行轉(zhuǎn)置處理,將處理后的數(shù)據(jù)再次進(jìn)行傅里葉變換[6]。本文設(shè)計(jì)的二維FFT處理模塊如圖4所示,由于FFT處理速率與圖像輸入速率不匹配,故將圖像數(shù)據(jù)經(jīng)過FIFO緩存模塊后,以數(shù)據(jù)流的模式進(jìn)行行FFT處理。接著將處理結(jié)果存儲在緩存器中,在存儲器內(nèi)進(jìn)行數(shù)據(jù)的交換,完成矩陣轉(zhuǎn)置處理。對轉(zhuǎn)置后的矩陣再次進(jìn)行FFT處理,同樣將結(jié)果存儲在緩存器模塊中,重復(fù)之前的轉(zhuǎn)置處理后,將結(jié)果送入到FIFO模塊,輸出結(jié)果即為圖像的二維FFT處理結(jié)果。在圖像的二維FFT處理中,行FFT和列FFT處理模塊結(jié)構(gòu)完全相同,只需在處理過程中加入轉(zhuǎn)置算法及所需的存儲模塊。

由于FPGA均以定點(diǎn)數(shù)的形式對數(shù)據(jù)進(jìn)行處理,本文將行(列)數(shù)據(jù)進(jìn)行了如式(2)所示的算法處理,將兩行(列)數(shù)據(jù)以復(fù)數(shù)形式轉(zhuǎn)化成一組數(shù)據(jù),這樣在進(jìn)行FFT處理時,使處理速度提高了一倍[3],結(jié)合相應(yīng)的換算,對應(yīng)的輸出可用式(3)、式(4)表示。

2.4 去模糊算法簡述

空域中,在忽略加性噪聲的情況下,模糊圖像可轉(zhuǎn)化成清晰圖像與模糊核的卷積過程。將空域轉(zhuǎn)換到頻域,卷積問題就變成了相乘問題,去模糊的核心就是對模糊尺度和方向的估計(jì)。對模糊圖像進(jìn)行頻域轉(zhuǎn)換后,圖像的模糊核信息主要集中在頻譜的亮條中[7]。借助相關(guān)算法將亮條信息進(jìn)行提取,即可得到模糊圖像的像素偏移角度和偏移距離,從而實(shí)現(xiàn)圖像的去模糊。

3 系統(tǒng)測試

完成系統(tǒng)各模塊設(shè)計(jì)之后,在QuartusII環(huán)境下使用Programmer軟件,將圖像采集與顯示模塊的工程文件下載到FPGA中。系統(tǒng)圖像采集效果如圖5(a)所示。從測試結(jié)果可以看出系統(tǒng)實(shí)時圖像采集正常,條紋、細(xì)線等細(xì)節(jié)顯示清晰,畫面穩(wěn)定,功能完全符合設(shè)計(jì)要求。采集的圖像大小為320×240。

為了便于對系統(tǒng)處理結(jié)果進(jìn)行分析比較,本文在MATLAB中,創(chuàng)建了一個運(yùn)動位移為30像素、運(yùn)動角度為10°的點(diǎn)擴(kuò)散函數(shù)(PSF),使用PSF對采集的圖像進(jìn)行卷積操作,得到一幅簡單運(yùn)動模糊圖像,如圖5(b)所示。

將經(jīng)模糊處理后的圖像數(shù)據(jù)輸入到灰度變換模塊,將彩色圖像分R、G、B三通道分別存儲,接著進(jìn)行相應(yīng)算法處理后,即得到灰度圖像,將結(jié)果數(shù)據(jù)在MATLAB讀出,結(jié)果如圖5(c)所示。

在FFT處理模塊的工程設(shè)計(jì)中,使用Verilog HDL語言對該設(shè)計(jì)模塊進(jìn)行了行為級描述。以Altera DE2開發(fā)板的EP2C35F672C6為目標(biāo)芯片,在Quartus II平臺上進(jìn)行綜合、布局、布線。硬件器件使用報告顯示此設(shè)計(jì)資源占用較少,僅用了9 162個邏輯單元,使用了73個引腳。

為了便于對圖像進(jìn)行FFT處理,將一行256點(diǎn)的數(shù)據(jù)輸入到FFT模塊,在經(jīng)過9級蝶形運(yùn)算單元后,對結(jié)果數(shù)據(jù)輸入到順序排序模塊重新按自然順序排序后,即可得到FFT處理結(jié)果。

在Modelsim環(huán)境下編寫Testbench文件,對FFT模塊進(jìn)行仿真測試。由仿真結(jié)果可知,在旋轉(zhuǎn)因子片選(rTwiCsEp)和寫脈沖(rTwiWrEp)有效的情況下,將旋轉(zhuǎn)因子(rTwiCoe)存入到FFT模塊。待旋轉(zhuǎn)因子輸入完畢后,數(shù)據(jù)輸入使能為高,開始輸入待處理數(shù)據(jù)(rSrcFFT)。等到輸入數(shù)據(jù)達(dá)到所設(shè)定的存儲容量后,輸出使能(rFftOutEn)變?yōu)楦?,開始輸出FFT處理結(jié)果(fftout)。每當(dāng)幀有效(frmval)給一個信號脈沖時,證明將輸出一行(列)數(shù)據(jù),待一整行數(shù)據(jù)輸出完成后,將給下一個信號脈沖,形成流水線處理模式。具體時序如圖6所示。從仿真波形看,時序符合預(yù)期設(shè)計(jì)。

4 系統(tǒng)分析

待圖像數(shù)據(jù)完成二維FFT處理后,將生成的結(jié)果數(shù)據(jù)通過MATLAB軟件讀出,將之與通過MATLAB的fft2函數(shù)處理后的結(jié)果進(jìn)行對比,如圖7所示,結(jié)果是一致的。由圖可知,經(jīng)本文設(shè)計(jì)的頻域處理算法處理后的數(shù)據(jù)保留了模糊圖像的有效信息。

從兩種方式處理的功率譜看,輪廓基本一致,少許差別的原因在于本文設(shè)計(jì)算法采用了塊浮點(diǎn)及針對去模糊系統(tǒng)使用的數(shù)據(jù)拋位方法,而MATLAB采用的是純浮點(diǎn)的處理方法。功率譜如圖8所示。

對經(jīng)本文設(shè)計(jì)的頻域處理方法得到的結(jié)果與經(jīng)MATLAB直接調(diào)用fft2得到的結(jié)果進(jìn)行對比,統(tǒng)計(jì)對應(yīng)像素點(diǎn)的絕對誤差,結(jié)果如圖9所示。從圖可得,在不考慮定點(diǎn)與浮點(diǎn)數(shù)據(jù)處理方式的影響下,本文設(shè)計(jì)的頻域處理方式在128×128點(diǎn)、256×256點(diǎn)和320×240點(diǎn)不同點(diǎn)數(shù)環(huán)境下的處理精度都保持在98.5%以上。

5 結(jié)論

頻域處理對于圖像去模糊系統(tǒng)的性能起著極重要的作用。本文針對去模糊系統(tǒng)在頻域處理的硬件實(shí)現(xiàn)中遇到的資源利用高和處理精度低等問題,設(shè)計(jì)完成了一種基于FPGA的流水線型結(jié)構(gòu)的頻域處理方法。從實(shí)驗(yàn)結(jié)果及分析可見,相比于FPGA自帶的IP核及其他處理方法,該方法在圖像去模糊系統(tǒng)的頻域處理,結(jié)合圖像數(shù)據(jù)和模糊信息的特點(diǎn),在頻域處理的設(shè)計(jì)上降低了存儲消耗,提高了處理速度,具有一定的工程價值與參考意義。

參考文獻(xiàn)

[1] 楊帆,張皓,馬新文,等.基于FPGA的圖像處理系統(tǒng)[J].華中科技大學(xué)學(xué)報(自然科學(xué)版),2015,43(2):119-123.

[2] 朱奕丹,方怡兵.基于FPGA的圖像采集與VGA顯示系統(tǒng)[J].計(jì)算機(jī)應(yīng)用,2011,31(5):1258-1259.

[3] 原魁.基于FPGA的嵌入式圖像處理系設(shè)計(jì)[M].北京:電子工業(yè)出版社,2013.

[4] 高亞軍.基于FPGA的數(shù)字信號處理(第2版)[M].北京:電子工業(yè)出版社,2015.

[5] 王旭東,潘明海.數(shù)字信號處理的FPGA實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,2011.

[6] 楊軍,于艷艷,陳成,等.基于FPGA的二維FFT處理器的研究與設(shè)計(jì)[J].云南大學(xué)學(xué)報(自然科學(xué)版),2013,35(6):750-755.

[7] 張德豐.數(shù)字圖像處理(MATLAB版)(第2版)[M].北京:人民郵電出版社,2015.

作者信息:

袁 進(jìn),劉云飛

(南京林業(yè)大學(xué) 信息科學(xué)技術(shù)學(xué)院,江蘇 南京210037)

1.《如何操作matlab里面功率譜 matlab如何操作數(shù)據(jù)庫?》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。

2.《如何操作matlab里面功率譜 matlab如何操作數(shù)據(jù)庫?》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實(shí),對其原創(chuàng)性、真實(shí)性、完整性、及時性不作任何保證。

3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/keji/3225522.html