文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.180498
中文引用格式: 袁進(jìn),劉云飛. 圖像去模糊系統(tǒng)的頻域處理改進(jìn)方法[J].電子技術(shù)應(yīng)用,2018,44(9):63-66.
英文引用格式: Yuan Jin,Liu Yunfei. An improved method of frequency domain processing for image deblurring system[J]. Application of Electronic Technique,2018,44(9):63-66.
0 引言
隨著電子技術(shù)的發(fā)展,嵌入式系統(tǒng)在圖像處理領(lǐng)域的應(yīng)用越來越廣,但相關(guān)芯片卻有明顯不足:ASIC芯片開發(fā)周期長、成本高、靈活性差;DSP和ARM的串行結(jié)構(gòu)難以滿足圖像的實(shí)時(shí)處理要求等。然而,FPGA融合了DSP和ASIC等芯片的優(yōu)點(diǎn),具有靈活的配置方式,因易于實(shí)現(xiàn)并行處理功能和流水線工作方式,使得FPGA在圖像處理領(lǐng)域具有更高的應(yīng)用價(jià)值[1]。
由于在空域中對模糊圖像的模糊核估計(jì)手段有限,且處理精度不高,故大多采用頻域轉(zhuǎn)換的方式,在頻域中對模糊圖像進(jìn)行處理。頻域轉(zhuǎn)換的硬件實(shí)現(xiàn)通常采用直接調(diào)用IP核或設(shè)計(jì)通用的信號頻域轉(zhuǎn)換器等方法,這樣不僅在硬件資源消耗和處理效率上大打折扣,而且沒有充分利用模糊圖像及去模糊算法的特點(diǎn)來減少資源利用及處理時(shí)間。
本文結(jié)合模糊圖像及頻域去模糊算法的特點(diǎn),采用圖像數(shù)據(jù)預(yù)處理、原位計(jì)算、拋位、流水線處理等方法,設(shè)計(jì)實(shí)現(xiàn)了一種針對圖像去模糊系統(tǒng)的頻域處理方法。相比其他同類頻域處理方法,其具有資源利用率高、硬件實(shí)現(xiàn)簡單、針對性強(qiáng)等特點(diǎn)。
1 系統(tǒng)總體設(shè)計(jì)
系統(tǒng)以DE2開發(fā)板為開發(fā)平臺(tái),以Altera的EP2C-35F672C6型號的FPGA芯片為核心處理單元,采用TRDB-D5M圖像傳感器進(jìn)行圖像數(shù)據(jù)采集。系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)如圖1所示。
圖像傳感器通過DE2平臺(tái)的通用輸入輸出口與FPGA連接,F(xiàn)PGA通過I2C控制模塊對其進(jìn)行寄存器及工作方式的設(shè)定[2]。圖像傳感器獲得Bayer圖像數(shù)據(jù)流后,通過格式轉(zhuǎn)換處理,將其轉(zhuǎn)換成RGB數(shù)據(jù)。由于圖像傳感器工作時(shí),內(nèi)部各部分的時(shí)鐘頻率不同,為了使采樣與顯示協(xié)調(diào)一致,加入SDRAM存儲(chǔ)模塊對采集的圖像信息進(jìn)行緩存,SDRAM以四端口的形式存取數(shù)據(jù),四個(gè)端口中兩個(gè)為寫端口,兩個(gè)為讀端口,使系統(tǒng)的讀取效率提高了一倍。數(shù)據(jù)存入存儲(chǔ)模塊的同時(shí),將圖像數(shù)據(jù)送至RGB2Gray格式轉(zhuǎn)換模塊,在該模塊中完成圖像從彩色圖像到灰度圖像的轉(zhuǎn)換,接著傳送至頻域轉(zhuǎn)換模塊,完成圖像的頻域變換,最后傳送至圖像處理模塊,對模糊圖像進(jìn)行去模糊預(yù)處理后,存入存儲(chǔ)模塊,通過MATLAB平臺(tái)對處理結(jié)果進(jìn)行分析驗(yàn)證。
2 核心模塊設(shè)計(jì)
2.1 圖像灰度變換模塊設(shè)計(jì)
考慮到直接對彩色圖像進(jìn)行頻域轉(zhuǎn)換時(shí),需分三通道對圖像進(jìn)行存儲(chǔ)及處理,故本文在對圖像頻域處理前加入灰度變換模塊,既不損壞圖像信息,又減少了數(shù)據(jù)量及存儲(chǔ)空間。
從存儲(chǔ)模塊中提取采集到的圖像信息,加入一個(gè)存取控制模塊,控制將要讀取的圖像數(shù)據(jù)的地址。利用QuartusII創(chuàng)建ROM IP核,并將彩色圖像數(shù)據(jù)分R、G、B 3個(gè)顏色通道存儲(chǔ)在ROM中,根據(jù)式(1)彩色圖像轉(zhuǎn)換成灰度圖像的算法公式,設(shè)計(jì)RGB2Gray處理模塊。結(jié)構(gòu)圖如圖2所示。處理完成后,將灰度圖像數(shù)據(jù)存儲(chǔ)在存儲(chǔ)模塊,待后面處理時(shí)讀取即可。
2.2 一維FFT模塊設(shè)計(jì)
在進(jìn)行一維FFT設(shè)計(jì)時(shí),本文采用按頻率抽取(DIF)的FFT算法。由于各蝶形運(yùn)算的輸入與輸出互不重復(fù),任何一個(gè)蝶形的兩個(gè)輸入量經(jīng)蝶形運(yùn)算后可以實(shí)現(xiàn)同址運(yùn)算。這種原位運(yùn)算方式節(jié)省了大量的存儲(chǔ)單元,降低了硬件資源的使用成本[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ì)主要由存儲(chǔ)單元、M(log2N,N為FFT輸入序列的長度)級蝶形運(yùn)算單元、倒位序轉(zhuǎn)為順序單元等部分組成,總體結(jié)構(gòu)如圖3所示。在模塊輸入時(shí)序的控制下,將待處理的數(shù)據(jù)流輸入到模塊中,通過數(shù)據(jù)流水線模塊的控制,將有效數(shù)據(jù)按設(shè)定時(shí)鐘依次輸入到(M-1)級蝶形運(yùn)算單元中,直到完成最后一級的蝶形運(yùn)算后(最后一級無乘法器),經(jīng)過順序排序單元,即可將輸出的倒位序數(shù)據(jù)按自然順序輸出到存儲(chǔ)單元中。其中,為了保證資源的有效利用,且不影響算法的有效性,在順序排序單元的設(shè)計(jì)中,本文設(shè)置了兩個(gè)存儲(chǔ)單元,既能保證數(shù)據(jù)流水線輸入,又能避免在順序排序單元的工作過程中出現(xiàn)數(shù)據(jù)交叉讀取的問題。
2.3 二維FFT模塊設(shè)計(jì)
由于傅里葉變換具有可分性的性質(zhì),處理圖像的傅里葉變換時(shí),通常將二維變換通過降維的方式轉(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é)果存儲(chǔ)在緩存器中,在存儲(chǔ)器內(nèi)進(jìn)行數(shù)據(jù)的交換,完成矩陣轉(zhuǎn)置處理。對轉(zhuǎn)置后的矩陣再次進(jìn)行FFT處理,同樣將結(jié)果存儲(chǔ)在緩存器模塊中,重復(fù)之前的轉(zhuǎn)置處理后,將結(jié)果送入到FIFO模塊,輸出結(jié)果即為圖像的二維FFT處理結(jié)果。在圖像的二維FFT處理中,行FFT和列FFT處理模塊結(jié)構(gòu)完全相同,只需在處理過程中加入轉(zhuǎn)置算法及所需的存儲(chǔ)模塊。
由于FPGA均以定點(diǎn)數(shù)的形式對數(shù)據(jù)進(jìn)行處理,本文將行(列)數(shù)據(jù)進(jìn)行了如式(2)所示的算法處理,將兩行(列)數(shù)據(jù)以復(fù)數(shù)形式轉(zhuǎn)化成一組數(shù)據(jù),這樣在進(jìn)行FFT處理時(shí),使處理速度提高了一倍[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í)時(shí)圖像采集正常,條紋、細(xì)線等細(xì)節(jié)顯示清晰,畫面穩(wěn)定,功能完全符合設(shè)計(jì)要求。采集的圖像大小為320×240。
為了便于對系統(tǒng)處理結(jié)果進(jìn)行分析比較,本文在MATLAB中,創(chuàng)建了一個(gè)運(yùn)動(dòng)位移為30像素、運(yùn)動(dòng)角度為10°的點(diǎn)擴(kuò)散函數(shù)(PSF),使用PSF對采集的圖像進(jìn)行卷積操作,得到一幅簡單運(yùn)動(dòng)模糊圖像,如圖5(b)所示。
將經(jīng)模糊處理后的圖像數(shù)據(jù)輸入到灰度變換模塊,將彩色圖像分R、G、B三通道分別存儲(chǔ),接著進(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平臺(tái)上進(jìn)行綜合、布局、布線。硬件器件使用報(bào)告顯示此設(shè)計(jì)資源占用較少,僅用了9 162個(gè)邏輯單元,使用了73個(gè)引腳。
為了便于對圖像進(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è)定的存儲(chǔ)容量后,輸出使能(rFftOutEn)變?yōu)楦?,開始輸出FFT處理結(jié)果(fftout)。每當(dāng)幀有效(frmval)給一個(gè)信號脈沖時(shí),證明將輸出一行(列)數(shù)據(jù),待一整行數(shù)據(jù)輸出完成后,將給下一個(gè)信號脈沖,形成流水線處理模式。具體時(shí)序如圖6所示。從仿真波形看,時(shí)序符合預(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ì)上降低了存儲(chǔ)消耗,提高了處理速度,具有一定的工程價(jià)值與參考意義。
參考文獻(xiàn)
[1] 楊帆,張皓,馬新文,等.基于FPGA的圖像處理系統(tǒng)[J].華中科技大學(xué)學(xué)報(bào)(自然科學(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é)報(bào)(自然科學(xué)版),2013,35(6):750-755.
[7] 張德豐.數(shù)字圖像處理(MATLAB版)(第2版)[M].北京:人民郵電出版社,2015.
作者信息:
袁 進(jìn),劉云飛
(南京林業(yè)大學(xué) 信息科學(xué)技術(shù)學(xué)院,江蘇 南京210037)