劉 智,夏春蕾,戴曙光
(上海理工大學 光電信息與計算機工程學院,上海 200093)
隨著計算機技術的快速發展,圖像處理也出現了前所未有的高速發展。目前常用的圖像處理工具是MATLAB提供的圖像處理工具箱,它提供了一套全方位的參照標準算法和圖像工具,用于對圖像進行處理、分析、可視化和算法開發。一方面,用它增強了圖像的效果,獲得了清晰度更高的圖像;但另一方面,伴隨著信息復雜程度的提高以及信息量的增大,這種方法由于實時性不高往往會產生滯后和失真現象。
采用FPGA來進行圖像處理的優勢主要是速度快、應用靈活。速度快的優勢來源于FPGA的硬件邏輯,特別是FPGA的并行執行和流水線操作。FPGA的邏輯功能全部用硬件電路實現,因此所有的延遲只來源于門電路,而一般門電路的延遲都在納秒級別,因此用FPGA來對圖像實施處理,可以彌補上面所提到到的缺憾,很好地達到實時性和增加圖像的雙重目的。
圖像銳化是圖像增強的主要應用方面,圖像銳化處理的目的是增強圖像邊緣,使目標物體的邊緣鮮明,以便于提取目標物體的邊界、對圖像進行分割、目標區域識別以及區域性狀提取等,為圖像理解和分析打下基礎。而圖像邊緣模糊的實質是平均或積分運算造成的,因此可以對圖像進行逆運算來使圖像清晰化,達到銳化的目的。
圖像銳化有梯度銳化和Laplacian銳化兩種方法,常用的圖像銳化處理方法是基于Laplacian算子的模板運算。模板操作實現了一種鄰域運算,即某個像素點的結果不僅和本像素的灰度值有關,而且和其鄰域點的值有關。模塊運算在數學中的描述是卷積(或互相關)運算。
設▽2為Laplacion算子,則有:


式(2)為輸入圖像矩陣,其值為灰度值大小。式(3)即為Laplacian模板,此外還有下面兩個模板:

比較3個模板可以得出:式(3)模板只能檢測水平和垂直方向的邊緣,式(4)模板只能檢測兩對角方向的邊緣,而式(5)模板檢測水平、垂直和兩對角方向的邊緣。
根據整體方案的設計思路,系統的硬件構架框圖如圖1所示。圖像數據在FPGA的控制下通過I2C總線由CMOS圖像傳感器獲得,得到的圖像數據在SDRAM controller的控制下存儲在外部雙端口SDRAM中,然后在Image Sharpening中對得到的數據進行銳化處理,最后按照VGA時序標準送入VGA顯示。

其中圖像銳化是本文研究的重點,它主要由數據緩沖和模板計算兩部分構成,如圖2所示。

由前面的分析可以看出,設計的關鍵在于矩陣(2)的硬件實現。其在MATLAB中很容易實現,但是在硬件語言中,由于沒有矩陣的概念,處理起來比較麻煩。因為所做的圖像增強中用到的基本為3×3矩陣,所以本文討論了在FPGA中怎樣按行來實現和處理3×3的矩陣。
本設計主要采用了Altera公司的移位寄存器(RAM-based)IP核,其示意圖如圖3所示。前期采集到的圖像數據通過shiftin通道按行進入移位寄存器(RAM-based), 經 IP核 后 有 3個 輸 出 端 口 :taps0x、taps1x、taps2x。通過圖4所示的仿真圖可以看出,當最后一個像素X9輸入后,在下一個時鐘周期內得到的是像素 X1、X4、X7,再下一個時鐘周期是 X2、X5、X8,最后一個時鐘周期是 X3、X6、X9,實現了期望的結果。

模板計算主要完成式 (1)的計算,該模塊主要由ALTMULT_ADD和PAPALLEL_ADD及LPM_ABS 3個IP核來實現。ALTMULT_ADD實現的是乘積累加和功能,其示意圖如圖5所示,計算公式為mac_2=dataa_0×datab_0+dataa_1×datab_1+dataa_2×datab_2=M9×X9+M8×X8+M7×X7,其中 dataa_1與 dataa_2分別為 dataa_0延時1個時鐘周期和2個時鐘周期得到的。PAPALLEL_ADD主要實現并行加法的功能,完成了流水線操作,縮短了處理時間。

為了防止出現灰度值為負和溢出的情況,在后期數據處理中加入了求絕對值的設計,用LPM_ABS這個IP核來實現。當得到的數據大于255時,最后得到的結果取255;小于255時,即為輸出結果。
Altera公司的FPGA開發工具QuartusⅡ開發環境友好、易操作且自帶有大量免費的IP核供設計者使用,從而減少了用戶的大量工作,便于設計者模塊化開發,特別是在完成復雜系統設計的時候,這些宏功能模塊無疑將大大減少設計風險及縮短開發周期。
一般地,輸入圖像的格式大于 1 280×1 024(60 Hz),這樣的分辨率要求圖像的數據傳送帶寬在100 Mpix/s以上,但是一般晶振提供的時鐘頻率為50 MHz,滿足不了上述要求,因此需要FPGA內部帶有鎖相環。另外,考慮到系統占用的面積和圖像處理需要乘法器的特點,要求FPGA的內部資源盡量豐富。為此,該系統最終選用了 Altera公司 Cyclone II系列的 EP2C8Q208C8。該芯片最多用戶I/O管腳數為182個,鎖相環為2個,邏輯資源為8 256個,存儲器資源為 165 888 bit,嵌入式乘法器9個,完全滿足系統對FPGA的要求。
按照上述思路和要求選定芯片,建立工程,用Verilog HDL語言編寫程序。將灰度圖像讀入MATLAB中,生成文本激勵,然后作為輸入在ModelSim中進行仿真,再將仿真得到的輸出數據送入MATLAB中,生成經銳化處理后的圖像。實驗前后圖像如圖6、圖 7、圖8所示。從實驗得到的結果可以看出,原本邊緣模糊的圖像經過處理后圖像邊緣變得非常清晰,較好地達到了銳化處理的目的。通過對比兩種模板得到的圖像可知,選擇式(5)模板能取得更好的效果。



本文采用FPGA來實現圖像的銳化處理,以Laplacian算法為核心算法,確立系統的總體設計,完成了主要部分的設計。該系統采用全硬件并行算法實現,提高了圖像處理的整體速度,仿真結果表明,本設計符合預期設想。
[1]岡薩雷斯.數字圖像處理(第二版)[M].阮秋琦,譯.北京:電子工業出版社,2007.
[2]許錄平.數字圖像處理[M].北京:科學出版社,2007.
[3]夏宇聞.Verilog數字系統設計教程[M].北京:北京航天航空大學出版社,2003.
[4]王冠.Verilog HDL與數字電路設計[M].北京:機械工業出版社,2006.
[5]葉敏,周文暉,顧偉康.基于FPGA的實時圖像濾波及邊緣檢測方法[J].傳感技術學報,2007,20(3):623-627.
[6]Altera Corporation.Altera product data sheets[Z].2008.