文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2015.10.017
中文引用格式: 溫杰,,李錦明. 基于FPGA的實時圖像邊沿檢測系統(tǒng)的實現(xiàn)[J].電子技術(shù)應(yīng)用,,2015,41(10):65-67.
英文引用格式: Wen Jie,,Li Jinming. Realization of real time image edge detection system based on FPGA[J].Application of Electronic Technique,,2015,41(10):65-67.
0 引言
邊緣檢測是圖像處理,、圖像分析、模式識別,、計算機視覺以及人類視覺的基本步驟之一,,目的是為了發(fā)現(xiàn)圖像中關(guān)于形狀和反射或透射比的信息,目前已廣泛應(yīng)用于目標識別,、機器視覺和運動目標跟蹤等領(lǐng)域,。在實時圖像處理中,由于系統(tǒng)對實時性要求較高,,單純依靠軟件來實現(xiàn)圖像處理已無法滿足實際工程的需求,,所以目前較多采用FPGA或DSP等硬件設(shè)備來實現(xiàn)圖像的實時處理。然而由于DSP只是對某些固定的運算提供硬件優(yōu)化,,其體系仍是串行指令執(zhí)行系統(tǒng),,這些都使它在運行速度,、吞吐量方面頗受約束,,且不利于系統(tǒng)的擴展。而FPGA具有強大的并行處理能力和豐富的邏輯資源,,能夠?qū)崿F(xiàn)硬件并行和流水線技術(shù),,在圖像處理方面具有明顯的優(yōu)勢,所以越來越受到人們的青睞,。
本文采用FPGA作為控制處理器設(shè)計并實現(xiàn)了一種實時圖像邊沿檢測系統(tǒng),。該系統(tǒng)具有處理速率快,穩(wěn)定性強且易于擴展等優(yōu)勢,,為更深層次的圖像處理提供了便利,。
1 實時圖像邊沿檢測系統(tǒng)的總體方案
基于FPGA的實時圖像邊沿檢測系統(tǒng)主要由圖像數(shù)據(jù)采集模塊、數(shù)據(jù)灰度化模塊,、SDRAM模塊,、Sobel邊沿檢測模塊和VGA模塊五部分組成,具體實現(xiàn)框圖如圖1所示,。圖像采集模塊實現(xiàn)初始化相機并接收圖像數(shù)據(jù)的功能,;數(shù)據(jù)灰度化模塊能夠把采集到的圖像轉(zhuǎn)換為灰度圖像;SDRAM模塊控制對圖像數(shù)據(jù)的緩存,;Sobel模塊實現(xiàn)像素梯度值的計算確定圖像邊沿并最終通過VGA模塊進行顯示,。
2 實時邊沿檢測系統(tǒng)的實現(xiàn)
圖像采集模塊是系統(tǒng)的前端,,包括相機配置模塊和數(shù)據(jù)捕捉模塊。系統(tǒng)上電后,,系統(tǒng)配置模塊通過SCCB(IIC)總線實現(xiàn)對相機的配置,。配置采用三相寫數(shù)據(jù)的方式實現(xiàn):首先寫入CMOS傳感器的物理地址,然后寫入需要配置的寄存器地址,,最后再寫入數(shù)據(jù)即可完成該寄存器的配置,。根據(jù)以上方法,依次對相應(yīng)的寄存器進行配置,,CMOS傳感器就可以正常地采集圖像并通過相機接口傳回到FPGA的圖像捕獲模塊中,。圖像捕獲模塊根據(jù)像素時鐘同步信號,確定哪些時段中數(shù)據(jù)有效,,產(chǎn)生數(shù)據(jù)有效信號DVAL,,并把圖像數(shù)據(jù)傳到下一模塊進行進一步處理。
2.1 圖像灰度化處理
由于相機采集到圖像為RGB模式的彩色圖像,,而邊沿檢測系統(tǒng)是檢測圖像中灰度變化劇烈的像素點,,所以有必要對圖像進行灰度化處理。圖像灰度化處理不僅能夠減少圖像處理的運算量,,而且不會影響邊沿檢測的效果,。常用的灰度化方式有加權(quán)平均法、平均值法和最大值法,。系統(tǒng)采用加權(quán)平均法對圖像進行灰度化處理,,該方法從人體生理學角度出發(fā),對RGB三分量進行加權(quán)平均,,從而得到較為合理的灰度圖像,。其數(shù)學表達式如式(1)所示:
Gary=0.299R+0.587G+0.114B(1)
在實際應(yīng)用中,由于浮點型運算實現(xiàn)較為困難,,所以需要進行整數(shù)轉(zhuǎn)換,。系統(tǒng)采用7位精度的轉(zhuǎn)換公式對圖像進行灰度處理,其轉(zhuǎn)換精度與8位的轉(zhuǎn)換公式相同,,但轉(zhuǎn)換速度更快,。具體的實現(xiàn)公式如式(2)所示:
Gary=(38R+75G+15B)>>7(2)
圖像灰度化的實現(xiàn)過程采用QuartusII中的乘加器實現(xiàn),頂層文件如下所示:
MAC_3 q0(.dataa_0(ired),
.dataa_1(igreen),
.dataa_2(iblue),
.datab_0(7’d38),
.datab_1(7’d75),
.datab_2(7’d15),
.result(wMono),
.clock0(iclk));
其中:dataa_0~2分別代表一個像素點的RGB分量,,datab為以7為精度的加權(quán)系數(shù),,result右移7位即為輸出的像素灰度值。
2.2 圖像緩沖模塊設(shè)計
在圖像處理系統(tǒng),,由于數(shù)據(jù)的輸入速度與系統(tǒng)的處理速度往往不匹配,,需要一個大容量存儲器作為圖像數(shù)據(jù)的緩存。根據(jù)圖像數(shù)據(jù)的特點,,設(shè)計者常常采用SRAM或SDRAM對圖像數(shù)據(jù)進行緩存,。然而由于SRAM的容量與價格的限制,,不利于系統(tǒng)的擴展,本系統(tǒng)采用SDRAM芯片MT48LC8M32作為系統(tǒng)的緩存模塊,。該芯片單片容量為256 MB,,配置為2 M×32×4bank,刷新計數(shù)為4 K,。接口連接情況如圖2所示,。
SDRAM控制器包括緩沖模塊和SDRAM控制模塊。緩沖模塊采用2個異步FIFO(Wr_FIFO和Rd_FIFO)作為圖像數(shù)據(jù)的輸入輸出緩存,,實現(xiàn)了從低頻數(shù)據(jù)輸入到高頻數(shù)據(jù)寫入SDRAM,,以及高頻數(shù)據(jù)讀取到低頻數(shù)據(jù)輸出的轉(zhuǎn)換。雖然SDRAM在同一時間段只能進行讀或?qū)懖僮?,但系統(tǒng)采用的SDRAM控制模塊的工作時鐘為108 MHz,,高于數(shù)據(jù)輸入輸出時鐘的2倍,所以從外部看,,SDRAM能夠支持同時讀寫操作,。FIFO控制模塊主要包括以下內(nèi)容:(1)當有外部圖像數(shù)據(jù)輸入請求時,數(shù)據(jù)寫入Wr_FIFO中,。(2)當有外部圖像數(shù)據(jù)輸出請求時,,輸出Rd_FIFO中的數(shù)據(jù)。(3)當Wr_FIFO中數(shù)據(jù)個數(shù)大于256時,,請求寫入SDRAM,,響應(yīng)后開始突發(fā)寫入數(shù)據(jù)。(4)當Rd_FIFO中數(shù)據(jù)個數(shù)小于256時,,請求讀取SDRAM,,響應(yīng)后開始突發(fā)讀取SDRAM數(shù)據(jù),。
SDRAM控制模塊包含control_interface,、command、sdr_data_path 三個功能子模塊,。Command命令接口模塊與頂層進行信息交互,,并對接收的信息進行譯碼,產(chǎn)生讀,、寫,、預(yù)充電等命令與訪問地址等信息;control_interface控制接口模塊根據(jù)command的命令與參數(shù)實現(xiàn)對SDRAM的控制,;sdr_data_path數(shù)據(jù)位寬控制模塊根據(jù)外部DQM信號選擇數(shù)據(jù)讀寫的寬度,。系統(tǒng)采用SignalTapII對SDRAM控制器進行了驗證。圖3為SignalTapII采集到的數(shù)據(jù)波形圖,,結(jié)果符合預(yù)期要求,。
2.3 Sobel邊沿檢測的實現(xiàn)
Sobel邊沿檢測算法是一種基于梯度的圖像邊沿檢測的方式,,該算法容易在硬件上實現(xiàn),且能夠平滑一定的噪聲,,邊沿檢測效果較好,。Sobel 算子的邊緣檢測是在圖像空間內(nèi)利用 2 個方向模板與圖像進行鄰域卷積來完成的。這兩個方向模板,,一個檢測水平邊緣,,另一個檢測垂直邊緣。它們的方向梯度算子模板如下:
水平方向梯度模板 垂直方向梯度模板
以模板內(nèi)的數(shù)字為權(quán)重系數(shù),,與圖像平面對應(yīng)的像素值相乘可以求出水平梯度PX與垂直梯度PY,。然后根據(jù)梯度計算公式, 求出梯度值|G|,,并與預(yù)先設(shè)定的閾值進行比較從而確定圖像的邊沿,。
根據(jù)以上分析,系統(tǒng)利用QUARTUS中的IP核模塊并結(jié)合硬件語言編程實現(xiàn)了Sobel邊沿檢測模塊的設(shè)計,,具體實現(xiàn)過程如圖4所示,,其中乘加器是計算像素梯度值的主要模塊。一個乘加器中包括3個乘法運算模塊和1個加法運算模塊,,分布情況如圖5所示,,其中dataa為輸入的行像素,datab為方向模板的權(quán)重系數(shù),。一個乘法器模塊可以實現(xiàn)一行像素與其對應(yīng)的模板系數(shù)的卷積運算,。邊沿檢測模塊需要6個乘加器來實現(xiàn)X方向和Y方向的梯度值運算。開方模塊結(jié)合X方向與Y方向的梯度,,確定該點的像素梯度值,。然后再將得到的梯度值與閾值進行比較,從而確定圖像的邊沿,。
3 實驗結(jié)果與分析
為了驗證系統(tǒng)的正確性,,采用SignalTapII對邊沿檢測結(jié)果進行了仿真,結(jié)果如圖6所示,。其中邊沿檢測模塊選取的閾值為0X5B,,sqrt0|q為Sobel邊沿檢測模塊得到的像素梯度值。如果梯度值大于閾值,,則oDATA輸出0X00h,,反之則輸出0XFFh。仿真結(jié)果與實際相同,。系統(tǒng)采用VGA顯示器作為圖像顯示的終端,,通過設(shè)計VGA控制器,邊沿檢測的結(jié)果以640*480@60Hz的格式進行顯示,,得到如圖7所示結(jié)果,。通過對比圖7中的兩幅圖可以看出,,該系統(tǒng)的檢測效果較好,能夠有效地識別圖像的邊沿,。
4 結(jié)論
本文基于FPGA設(shè)計了一種實時圖像邊沿檢測系統(tǒng),,搭建了以FPGA和SDRAM為核心的硬件平臺,并通過硬件語言編程與調(diào)用可編程宏模塊在硬件上實現(xiàn)了實時圖像的邊沿檢測功能,。結(jié)果表明,,該系統(tǒng)檢測效果較好,能夠滿足系統(tǒng)對于實時性的需求,,可以作為后續(xù)圖像處理,,如運動目標跟蹤等研究的重要支撐。
參考文獻
[1] 朱秀昌,,劉峰.數(shù)字圖像處理與圖像通信[M].北京:北京郵電大學出版社,,2014.
[2] 王建莊.基于FPGA的高速圖像處理算法研究及系統(tǒng)實現(xiàn)[D].武漢:華中科技大學,2011:5-10.
[3] 齊榕,,齊敏.數(shù)字圖像邊緣檢測的FPGA實現(xiàn)[J].電子設(shè)計工程,,2013,21(19):178-179.
[4] 王德勝,,康令州.基于FPGA的實時圖像采集與預(yù)處理[J].電視技術(shù),,2011,35(3):32-33.
[5] 楊新華,,寇為剛.基于FPGA的Soble算子圖像邊緣檢測算法[J].儀表技術(shù)與傳感器,,2013(1):102-104.