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

中文引用格式: 溫杰,李錦明. 基于FPGA的實(shí)時(shí)圖像邊沿檢測(cè)系統(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 引言

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

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

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


001.jpg

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

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

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

  2.1 圖像灰度化處理

  由于相機(jī)采集到圖像為RGB模式的彩色圖像,而邊沿檢測(cè)系統(tǒng)是檢測(cè)圖像中灰度變化劇烈的像素點(diǎn),所以有必要對(duì)圖像進(jìn)行灰度化處理。圖像灰度化處理不僅能夠減少圖像處理的運(yùn)算量,而且不會(huì)影響邊沿檢測(cè)的效果。常用的灰度化方式有加權(quán)平均法、平均值法和最大值法。系統(tǒng)采用加權(quán)平均法對(duì)圖像進(jìn)行灰度化處理,該方法從人體生理學(xué)角度出發(fā),對(duì)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)換公式對(duì)圖像進(jìn)行灰度處理,其轉(zhuǎn)換精度與8位的轉(zhuǎn)換公式相同,但轉(zhuǎn)換速度更快。具體的實(shí)現(xiàn)公式如式(2)所示:

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

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

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

  在圖像處理系統(tǒng),由于數(shù)據(jù)的輸入速度與系統(tǒng)的處理速度往往不匹配,需要一個(gè)大容量存儲(chǔ)器作為圖像數(shù)據(jù)的緩存。根據(jù)圖像數(shù)據(jù)的特點(diǎn),設(shè)計(jì)者常常采用SRAM或SDRAM對(duì)圖像數(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個(gè)異步FIFO(Wr_FIFO和Rd_FIFO)作為圖像數(shù)據(jù)的輸入輸出緩存,實(shí)現(xiàn)了從低頻數(shù)據(jù)輸入到高頻數(shù)據(jù)寫(xiě)入SDRAM,以及高頻數(shù)據(jù)讀取到低頻數(shù)據(jù)輸出的轉(zhuǎn)換。雖然SDRAM在同一時(shí)間段只能進(jìn)行讀或?qū)懖僮鳎到y(tǒng)采用的SDRAM控制模塊的工作時(shí)鐘為108 MHz,高于數(shù)據(jù)輸入輸出時(shí)鐘的2倍,所以從外部看,SDRAM能夠支持同時(shí)讀寫(xiě)操作。FIFO控制模塊主要包括以下內(nèi)容:(1)當(dāng)有外部圖像數(shù)據(jù)輸入請(qǐng)求時(shí),數(shù)據(jù)寫(xiě)入Wr_FIFO中。(2)當(dāng)有外部圖像數(shù)據(jù)輸出請(qǐng)求時(shí),輸出Rd_FIFO中的數(shù)據(jù)。(3)當(dāng)Wr_FIFO中數(shù)據(jù)個(gè)數(shù)大于256時(shí),請(qǐng)求寫(xiě)入SDRAM,響應(yīng)后開(kāi)始突發(fā)寫(xiě)入數(shù)據(jù)。(4)當(dāng)Rd_FIFO中數(shù)據(jù)個(gè)數(shù)小于256時(shí),請(qǐng)求讀取SDRAM,響應(yīng)后開(kāi)始突發(fā)讀取SDRAM數(shù)據(jù)。

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

003.jpg

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

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

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

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

  以模板內(nèi)的數(shù)字為權(quán)重系數(shù),與圖像平面對(duì)應(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é)合硬件語(yǔ)言編程實(shí)現(xiàn)了Sobel邊沿檢測(cè)模塊的設(shè)計(jì),具體實(shí)現(xiàn)過(guò)程如圖4所示,其中乘加器是計(jì)算像素梯度值的主要模塊。一個(gè)乘加器中包括3個(gè)乘法運(yùn)算模塊和1個(gè)加法運(yùn)算模塊,分布情況如圖5所示,其中dataa為輸入的行像素,datab為方向模板的權(quán)重系數(shù)。一個(gè)乘法器模塊可以實(shí)現(xiàn)一行像素與其對(duì)應(yīng)的模板系數(shù)的卷積運(yùn)算。邊沿檢測(cè)模塊需要6個(gè)乘加器來(lái)實(shí)現(xiàn)X方向和Y方向的梯度值運(yùn)算。開(kāi)方模塊結(jié)合X方向與Y方向的梯度,確定該點(diǎn)的像素梯度值。然后再將得到的梯度值與閾值進(jìn)行比較,從而確定圖像的邊沿。

004.jpg

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

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

4 結(jié)論

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

參考文獻(xiàn)

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

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

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

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

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


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