《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的實(shí)時圖像邊沿檢測系統(tǒng)的實(shí)現(xiàn)
基于FPGA的實(shí)時圖像邊沿檢測系統(tǒng)的實(shí)現(xiàn)
2015年電子技術(shù)應(yīng)用第10期
溫 杰,李錦明
(中北大學(xué) 電子測試國家重點(diǎn)實(shí)驗(yàn)室 儀器科學(xué)與動態(tài)測試教育部重點(diǎn)實(shí)驗(yàn)室,山西 太原030051)
摘要: 邊緣檢測是圖像處理中一個重要的分支,它的實(shí)現(xiàn)對于進(jìn)行更高層次的圖像識別和理解等有著重大的影響。系統(tǒng)采用FPGA+SDRAM實(shí)現(xiàn)了實(shí)時圖像的邊沿檢測。硬件采用流水線與并行處理的方式,提高了圖像處理的速率;算法實(shí)現(xiàn)結(jié)合了硬件語言編程與IP核模塊,減小了開發(fā)周期,增強(qiáng)了系統(tǒng)的靈活性。實(shí)驗(yàn)結(jié)果顯示,該系統(tǒng)能夠有效地實(shí)現(xiàn)實(shí)時圖像的邊沿檢測,且檢測效果較好,能夠滿足后續(xù)圖像處理的需求。
關(guān)鍵詞: FPGA 邊沿檢測 SDRAM Sobel算子
中圖分類號: TP391
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2015.10.017

中文引用格式: 溫杰,李錦明. 基于FPGA的實(shí)時圖像邊沿檢測系統(tǒng)的實(shí)現(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.
Realization of real time image edge detection system based on FPGA
Wen Jie,Li Jinming
National Key Laboratory for Electronic Measurement Technology,Key Laboratory of instrumentation Science & Dynamic Measurement of Ministry of Education,North University of China,Taiyuan 030051,China
Abstract: Edge detection is an important branch of image processing, and it has a great influence on image recognition and understanding. The system realized the real-time image edge detection based on FPGA and SDRAM. The hardware used pipelining and parallel processing to improve the image processing speed. The algorithm combined with the hardware language programming and IP core module, reducing the development cycle and enhancing the flexibility of the system. Experimental results show that the system can effectively achieve real-time image edge, and the detection effect is good, and can meet the needs of follow-up image processing.
Key words : FPGA;edge detection;SDRAM;Sobel operator

 

0 引言

  邊緣檢測是圖像處理、圖像分析、模式識別、計(jì)算機(jī)視覺以及人類視覺的基本步驟之一,目的是為了發(fā)現(xiàn)圖像中關(guān)于形狀和反射或透射比的信息,目前已廣泛應(yīng)用于目標(biāo)識別、機(jī)器視覺和運(yùn)動目標(biāo)跟蹤等領(lǐng)域。在實(shí)時圖像處理中,由于系統(tǒng)對實(shí)時性要求較高,單純依靠軟件來實(shí)現(xiàn)圖像處理已無法滿足實(shí)際工程的需求,所以目前較多采用FPGA或DSP等硬件設(shè)備來實(shí)現(xiàn)圖像的實(shí)時處理。然而由于DSP只是對某些固定的運(yùn)算提供硬件優(yōu)化,其體系仍是串行指令執(zhí)行系統(tǒng),這些都使它在運(yùn)行速度、吞吐量方面頗受約束,且不利于系統(tǒng)的擴(kuò)展。而FPGA具有強(qiáng)大的并行處理能力和豐富的邏輯資源,能夠?qū)崿F(xiàn)硬件并行和流水線技術(shù),在圖像處理方面具有明顯的優(yōu)勢,所以越來越受到人們的青睞。

  本文采用FPGA作為控制處理器設(shè)計(jì)并實(shí)現(xiàn)了一種實(shí)時圖像邊沿檢測系統(tǒng)。該系統(tǒng)具有處理速率快,穩(wěn)定性強(qiáng)且易于擴(kuò)展等優(yōu)勢,為更深層次的圖像處理提供了便利。

1 實(shí)時圖像邊沿檢測系統(tǒng)的總體方案


001.jpg

  基于FPGA的實(shí)時圖像邊沿檢測系統(tǒng)主要由圖像數(shù)據(jù)采集模塊、數(shù)據(jù)灰度化模塊、SDRAM模塊、Sobel邊沿檢測模塊和VGA模塊五部分組成,具體實(shí)現(xiàn)框圖如圖1所示。圖像采集模塊實(shí)現(xiàn)初始化相機(jī)并接收圖像數(shù)據(jù)的功能;數(shù)據(jù)灰度化模塊能夠把采集到的圖像轉(zhuǎn)換為灰度圖像;SDRAM模塊控制對圖像數(shù)據(jù)的緩存;Sobel模塊實(shí)現(xiàn)像素梯度值的計(jì)算確定圖像邊沿并最終通過VGA模塊進(jìn)行顯示。

2 實(shí)時邊沿檢測系統(tǒng)的實(shí)現(xiàn)

  圖像采集模塊是系統(tǒng)的前端,包括相機(jī)配置模塊和數(shù)據(jù)捕捉模塊。系統(tǒng)上電后,系統(tǒng)配置模塊通過SCCB(IIC)總線實(shí)現(xiàn)對相機(jī)的配置。配置采用三相寫數(shù)據(jù)的方式實(shí)現(xiàn):首先寫入CMOS傳感器的物理地址,然后寫入需要配置的寄存器地址,最后再寫入數(shù)據(jù)即可完成該寄存器的配置。根據(jù)以上方法,依次對相應(yīng)的寄存器進(jìn)行配置,CMOS傳感器就可以正常地采集圖像并通過相機(jī)接口傳回到FPGA的圖像捕獲模塊中。圖像捕獲模塊根據(jù)像素時鐘同步信號,確定哪些時段中數(shù)據(jù)有效,產(chǎn)生數(shù)據(jù)有效信號DVAL,并把圖像數(shù)據(jù)傳到下一模塊進(jìn)行進(jìn)一步處理。

  2.1 圖像灰度化處理

  由于相機(jī)采集到圖像為RGB模式的彩色圖像,而邊沿檢測系統(tǒng)是檢測圖像中灰度變化劇烈的像素點(diǎn),所以有必要對圖像進(jìn)行灰度化處理。圖像灰度化處理不僅能夠減少圖像處理的運(yùn)算量,而且不會影響邊沿檢測的效果。常用的灰度化方式有加權(quán)平均法、平均值法和最大值法。系統(tǒng)采用加權(quán)平均法對圖像進(jìn)行灰度化處理,該方法從人體生理學(xué)角度出發(fā),對RGB三分量進(jìn)行加權(quán)平均,從而得到較為合理的灰度圖像。其數(shù)學(xué)表達(dá)式如式(1)所示:

  Gary=0.299R+0.587G+0.114B(1)

  在實(shí)際應(yīng)用中,由于浮點(diǎn)型運(yùn)算實(shí)現(xiàn)較為困難,所以需要進(jìn)行整數(shù)轉(zhuǎn)換。系統(tǒng)采用7位精度的轉(zhuǎn)換公式對圖像進(jìn)行灰度處理,其轉(zhuǎn)換精度與8位的轉(zhuǎn)換公式相同,但轉(zhuǎn)換速度更快。具體的實(shí)現(xiàn)公式如式(2)所示:

  Gary=(38R+75G+15B)>>7(2)

  圖像灰度化的實(shí)現(xiàn)過程采用QuartusII中的乘加器實(shí)現(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分別代表一個像素點(diǎn)的RGB分量,datab為以7為精度的加權(quán)系數(shù),result右移7位即為輸出的像素灰度值。

  2.2 圖像緩沖模塊設(shè)計(jì)

  在圖像處理系統(tǒng),由于數(shù)據(jù)的輸入速度與系統(tǒng)的處理速度往往不匹配,需要一個大容量存儲器作為圖像數(shù)據(jù)的緩存。根據(jù)圖像數(shù)據(jù)的特點(diǎn),設(shè)計(jì)者常常采用SRAM或SDRAM對圖像數(shù)據(jù)進(jìn)行緩存。然而由于SRAM的容量與價(jià)格的限制,不利于系統(tǒng)的擴(kuò)展,本系統(tǒng)采用SDRAM芯片MT48LC8M32作為系統(tǒng)的緩存模塊。該芯片單片容量為256 MB,配置為2 M×32×4bank,刷新計(jì)數(shù)為4 K。接口連接情況如圖2所示。

002.jpg

  SDRAM控制器包括緩沖模塊和SDRAM控制模塊。緩沖模塊采用2個異步FIFO(Wr_FIFO和Rd_FIFO)作為圖像數(shù)據(jù)的輸入輸出緩存,實(shí)現(xiàn)了從低頻數(shù)據(jù)輸入到高頻數(shù)據(jù)寫入SDRAM,以及高頻數(shù)據(jù)讀取到低頻數(shù)據(jù)輸出的轉(zhuǎn)換。雖然SDRAM在同一時間段只能進(jìn)行讀或?qū)懖僮?,但系統(tǒng)采用的SDRAM控制模塊的工作時鐘為108 MHz,高于數(shù)據(jù)輸入輸出時鐘的2倍,所以從外部看,SDRAM能夠支持同時讀寫操作。FIFO控制模塊主要包括以下內(nèi)容:(1)當(dāng)有外部圖像數(shù)據(jù)輸入請求時,數(shù)據(jù)寫入Wr_FIFO中。(2)當(dāng)有外部圖像數(shù)據(jù)輸出請求時,輸出Rd_FIFO中的數(shù)據(jù)。(3)當(dāng)Wr_FIFO中數(shù)據(jù)個數(shù)大于256時,請求寫入SDRAM,響應(yīng)后開始突發(fā)寫入數(shù)據(jù)。(4)當(dāng)Rd_FIFO中數(shù)據(jù)個數(shù)小于256時,請求讀取SDRAM,響應(yīng)后開始突發(fā)讀取SDRAM數(shù)據(jù)。

   SDRAM控制模塊包含control_interface、command、sdr_data_path 三個功能子模塊。Command命令接口模塊與頂層進(jìn)行信息交互,并對接收的信息進(jìn)行譯碼,產(chǎn)生讀、寫、預(yù)充電等命令與訪問地址等信息;control_interface控制接口模塊根據(jù)command的命令與參數(shù)實(shí)現(xiàn)對SDRAM的控制;sdr_data_path數(shù)據(jù)位寬控制模塊根據(jù)外部DQM信號選擇數(shù)據(jù)讀寫的寬度。系統(tǒng)采用SignalTapII對SDRAM控制器進(jìn)行了驗(yàn)證。圖3為SignalTapII采集到的數(shù)據(jù)波形圖,結(jié)果符合預(yù)期要求。

003.jpg

  2.3 Sobel邊沿檢測的實(shí)現(xiàn)

  Sobel邊沿檢測算法是一種基于梯度的圖像邊沿檢測的方式,該算法容易在硬件上實(shí)現(xiàn),且能夠平滑一定的噪聲,邊沿檢測效果較好。Sobel 算子的邊緣檢測是在圖像空間內(nèi)利用 2 個方向模板與圖像進(jìn)行鄰域卷積來完成的。這兩個方向模板,一個檢測水平邊緣,另一個檢測垂直邊緣。它們的方向梯度算子模板如下:

  ~2(QSAUAS`7$KNZEAF~1F4N.png

  水平方向梯度模板  垂直方向梯度模板

  以模板內(nèi)的數(shù)字為權(quán)重系數(shù),與圖像平面對應(yīng)的像素值相乘可以求出水平梯度PX與垂直梯度PY。然后根據(jù)梯度計(jì)算公式SR(~7O9{R~XZ[N%B6(KKYT7.jpg, 求出梯度值|G|,并與預(yù)先設(shè)定的閾值進(jìn)行比較從而確定圖像的邊沿。

  根據(jù)以上分析,系統(tǒng)利用QUARTUS中的IP核模塊并結(jié)合硬件語言編程實(shí)現(xiàn)了Sobel邊沿檢測模塊的設(shè)計(jì),具體實(shí)現(xiàn)過程如圖4所示,其中乘加器是計(jì)算像素梯度值的主要模塊。一個乘加器中包括3個乘法運(yùn)算模塊和1個加法運(yùn)算模塊,分布情況如圖5所示,其中dataa為輸入的行像素,datab為方向模板的權(quán)重系數(shù)。一個乘法器模塊可以實(shí)現(xiàn)一行像素與其對應(yīng)的模板系數(shù)的卷積運(yùn)算。邊沿檢測模塊需要6個乘加器來實(shí)現(xiàn)X方向和Y方向的梯度值運(yùn)算。開方模塊結(jié)合X方向與Y方向的梯度,確定該點(diǎn)的像素梯度值。然后再將得到的梯度值與閾值進(jìn)行比較,從而確定圖像的邊沿。

004.jpg

3 實(shí)驗(yàn)結(jié)果與分析

  為了驗(yàn)證系統(tǒng)的正確性,采用SignalTapII對邊沿檢測結(jié)果進(jìn)行了仿真,結(jié)果如圖6所示。其中邊沿檢測模塊選取的閾值為0X5B,sqrt0|q為Sobel邊沿檢測模塊得到的像素梯度值。如果梯度值大于閾值,則oDATA輸出0X00h,反之則輸出0XFFh。仿真結(jié)果與實(shí)際相同。系統(tǒng)采用VGA顯示器作為圖像顯示的終端,通過設(shè)計(jì)VGA控制器,邊沿檢測的結(jié)果以640*480@60Hz的格式進(jìn)行顯示,得到如圖7所示結(jié)果。通過對比圖7中的兩幅圖可以看出,該系統(tǒng)的檢測效果較好,能夠有效地識別圖像的邊沿。

4 結(jié)論

  本文基于FPGA設(shè)計(jì)了一種實(shí)時圖像邊沿檢測系統(tǒng),搭建了以FPGA和SDRAM為核心的硬件平臺,并通過硬件語言編程與調(diào)用可編程宏模塊在硬件上實(shí)現(xiàn)了實(shí)時圖像的邊沿檢測功能。結(jié)果表明,該系統(tǒng)檢測效果較好,能夠滿足系統(tǒng)對于實(shí)時性的需求,可以作為后續(xù)圖像處理,如運(yùn)動目標(biāo)跟蹤等研究的重要支撐。

參考文獻(xiàn)

  [1] 朱秀昌,劉峰.數(shù)字圖像處理與圖像通信[M].北京:北京郵電大學(xué)出版社,2014.

  [2] 王建莊.基于FPGA的高速圖像處理算法研究及系統(tǒng)實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2011:5-10.

  [3] 齊榕,齊敏.數(shù)字圖像邊緣檢測的FPGA實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2013,21(19):178-179.

  [4] 王德勝,康令州.基于FPGA的實(shí)時圖像采集與預(yù)處理[J].電視技術(shù),2011,35(3):32-33.

  [5] 楊新華,寇為剛.基于FPGA的Soble算子圖像邊緣檢測算法[J].儀表技術(shù)與傳感器,2013(1):102-104.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。