《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的Sobel邊緣檢測(cè)應(yīng)用
基于FPGA的Sobel邊緣檢測(cè)應(yīng)用
來源:電子技術(shù)應(yīng)用2011年第8期
張麗紅1,2,凌朝東1,2
1.華僑大學(xué) 信息科學(xué)與工程學(xué)院,福建 廈門361021; 2.廈門市專用集成電路系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,福建 廈門 361008
摘要: 針對(duì)目前數(shù)字圖像處理速度慢的問題, 提出了一種基于 FPGA器件的 Sobel 邊緣檢測(cè)實(shí)現(xiàn)方案。Sobel 邊緣檢測(cè)分別在FPGA和MATLAB上仿真實(shí)現(xiàn),仿真結(jié)果表明,該方案可以大幅提高Sobel 邊緣檢測(cè)的速度,并且獲得了很好的邊緣檢測(cè)效果。最后列舉了一個(gè)基于FPGA器件的Sobel邊緣檢測(cè)的應(yīng)用實(shí)例。
關(guān)鍵詞: FPGA Sobel Matlab 邊緣檢測(cè) DE2-70
中圖分類號(hào): TN911.73;TP391.41
文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2011)08-0026-04
Application of Sobel edge detection based on FPGA
Zhang Lihong1,2,Ling Chaodong1,2
1.College of Information Science & Engineering, Huaqiao University, Xiamen 361021,China; 2.Key Laboratory of ASIC and System of Xiamen,Xiamen 361008,China
Abstract: Considering the slow speed of recent digital image processing, a new design scheme of Sobel edge detection based on FPGA device was proposed. Sobel edge detection was respectively implemented on MATLAB and FPGA, Simulation result showed that the scheme can greatly increase the speed of Sobel edge detection and acheive a good effect. Finally, an application example of Sobel edge detection based on FPGA device was given.
Key words : Sobel;MATLAB;FPGA;edge detection;DE2-70


    邊緣檢測(cè)是圖像處理、計(jì)算機(jī)視覺的基礎(chǔ)內(nèi)容;是圖像分析與識(shí)別的重要環(huán)節(jié);是目標(biāo)檢測(cè)、圖像分割所依賴的重要特征。在 PC機(jī)上,MATLAB是圖像處理的強(qiáng)大工具,如何將成熟的算法轉(zhuǎn)移到嵌入式系統(tǒng)上實(shí)現(xiàn)是急需解決的問題。在實(shí)時(shí)圖像處理中,用Sobel算子進(jìn)行物體的邊緣檢測(cè)是經(jīng)常用到的算法, 由于對(duì)處理速度要求較高且算法處理的數(shù)據(jù)量較大,用一般的軟件實(shí)現(xiàn)會(huì)比較慢, 無法達(dá)到實(shí)時(shí)系統(tǒng)的要求。而使用FPGA芯片, 用硬件實(shí)現(xiàn)對(duì)底層的圖像預(yù)處理可提高圖像處理的速度, 滿足系統(tǒng)實(shí)時(shí)要求。FPGA技術(shù)的關(guān)鍵就是利用強(qiáng)有力的設(shè)計(jì)工具以縮短開發(fā)周期,提高器件資源利用率,提供綜合器的選擇(例如在最佳速度和設(shè)計(jì)規(guī)模之間做出選擇)。隨著FPGA 芯片技術(shù)的進(jìn)步, 其價(jià)格逐步降低,而性能迅速增強(qiáng), 這為使用 FPGA 芯片搭建圖像處理平臺(tái)提供了可能[1]。
1 Sobel邊緣檢測(cè)算法
    Sobel算法是一種較成熟的微分邊緣檢測(cè)算法,它計(jì)算簡(jiǎn)單,且能產(chǎn)生較好的檢測(cè)效果, 對(duì)噪聲具有平滑作用, 可以提供較為精確的邊緣方向信息[2]。
    Sobel 邊緣檢測(cè)算子使用兩個(gè)方向算子(垂直算子和水平算子),如圖1所示。其原理是分別用這兩個(gè)算子對(duì)圖像進(jìn)行卷積運(yùn)算,得到兩個(gè)矩陣,再求這兩個(gè)矩陣對(duì)應(yīng)位置的兩個(gè)數(shù)的均方根,得到一個(gè)新的矩陣,即為灰度圖像矩陣中各個(gè)像素點(diǎn)的梯度值。最后將梯度值與門限T進(jìn)行比較,當(dāng)梯度值≥T時(shí),規(guī)定該點(diǎn)的灰度值為255,反之為0。

    根據(jù)Sobel算子邊緣檢測(cè)的原理可得出如圖2所示的Sobel邊緣檢測(cè)算法框圖。對(duì)一幅圖像進(jìn)行Sobel邊緣檢測(cè)時(shí),首先要利用Sobel算子計(jì)算出水平梯度和垂直梯度,這涉及到卷積運(yùn)算。然后再把兩個(gè)方向的梯度結(jié)合起來,這就涉及到均方根運(yùn)算,最后進(jìn)行門限處理來判斷圖像邊緣并輸出邊緣檢測(cè)結(jié)果,這部分可通過編寫Verilog HDL代碼實(shí)現(xiàn)[3]。

2 Sobel 邊緣檢測(cè)的硬件實(shí)現(xiàn)
    Sobel邊緣檢測(cè)的硬件實(shí)現(xiàn)系統(tǒng)應(yīng)包含梯度計(jì)算模塊和門限處理模塊,其中梯度計(jì)算模塊可分為圖像行緩沖模塊和卷積計(jì)算模塊。此外,各個(gè)模塊功能的實(shí)現(xiàn)可通過調(diào)用 Quartus II軟件提供的各種宏功能模塊(Megafunctions)來實(shí)現(xiàn),如圖3所示。

 

 

2.1 圖像行緩沖模塊器
    梯度計(jì)算模塊主要完成兩個(gè)Sobel算子分別與圖像像素矩陣(3×3窗口)的卷積運(yùn)算。首先要構(gòu)造3×3圖像像素矩陣,要完成這個(gè)功能,必須引入一個(gè)容量足夠大的存儲(chǔ)單元來緩沖串行輸入的圖像數(shù)據(jù)流, 并把串行圖像數(shù)據(jù)轉(zhuǎn)化為并行的3行圖像數(shù)據(jù),這樣在3個(gè)像素時(shí)鐘后就可以得到3×3圖像像素矩陣。以往常使用先入先出棧(FIFO)作為圖像數(shù)據(jù)的緩沖器[4],但對(duì) FIFO的讀寫操作較為復(fù)雜。本文通過調(diào)用Quartus II軟件提供的基于RAM移位寄存器宏模塊altshift_taps也能實(shí)現(xiàn)同樣功能。
    altshift_taps宏模塊是一個(gè)可配置的、具有抽頭(Taps)輸出的移位寄存器,每個(gè)抽頭在移位寄存器鏈的指定位置輸出數(shù)據(jù)。對(duì)MATLAB常用的256×256圖像進(jìn)行Sobel邊緣檢測(cè),altshift_taps模塊參數(shù)設(shè)置為8 bit輸入/8 bit輸出、3抽頭,相鄰兩個(gè)抽頭相距256個(gè)寄存器,如圖4所示。其中相鄰兩個(gè)抽頭的距離是根據(jù)圖像的大小來設(shè)置的,例如在硬件下載仿真上,TRDB-LTM液晶屏能正常顯示的圖像大小是800×480,此時(shí)抽頭距離應(yīng)設(shè)置為800。

2.2 卷積計(jì)算模塊
    卷積計(jì)算模塊是為了得到水平、垂直兩個(gè)方向的梯度值,要實(shí)現(xiàn)卷積運(yùn)算需要做大量的乘法和加法運(yùn)算。如果采用以往分立的D觸發(fā)器和加法器以及乘法器來完成[5],但其結(jié)構(gòu)復(fù)雜。本文通過調(diào)用 Quartus II軟件提供的宏功能模塊中的可編程乘加器 altmult_add和可編程多路并行加法器 parallel_add來實(shí)現(xiàn)。
    卷積運(yùn)算的具體實(shí)現(xiàn)是垂直算子和水平算子使用并行結(jié)構(gòu),與altshift_taps宏功能模塊輸出的數(shù)據(jù)同時(shí)相乘并相加,需用到6個(gè)可編程乘加器altmult_add模塊,其參數(shù)設(shè)置如圖5所示,得到的6個(gè)數(shù)據(jù)可分為水平和垂直兩組各3個(gè)。再將這兩組數(shù)據(jù)分別送往可編程多路并行加法器parallel_add模塊,其參數(shù)設(shè)置如圖6所示,得到兩個(gè)數(shù)據(jù)。最后通過調(diào)用浮點(diǎn)平方根altfp_sqrt模塊來計(jì)算這兩個(gè)數(shù)據(jù)的均方根,即得到3×3 窗口中心點(diǎn)像素的梯度值,該模塊的參數(shù)設(shè)置如圖7所示。該方法可以保證每個(gè)周期輸出一個(gè)像素點(diǎn)的Sobel 梯度值。此外,所用到的這些模塊可以根據(jù)系統(tǒng)設(shè)計(jì)需求靈活選用[6]。

2.3 門限處理模塊
    門限處理模塊編寫的Verilog HDL代碼實(shí)現(xiàn)如下:
reg [9:0] cnt;
always@(posedge iCLK, negedge iRST_N)
begin
    if (!iRST_N)
    begin 
        oDVAL <= 0; cnt<=10'b0;
    end
    else
    begin
        if(cnt==10'd768) //3*256=768
        begin 
            oDVAL<=iDVAL; cnt<=10'b0;  end
        else  cnt<=cnt+10'b1;
        if (oDVAL)
        oDATA<=(Abs_mag< iTHRESHOLD) ? 0 : 1023;
        else  oDATA <= 0;
    end
end
    該模塊檢測(cè)到的邊緣數(shù)據(jù)需經(jīng)過3行時(shí)間的延時(shí)才能輸出,如圖8中間線處的時(shí)間為15.4 &mu;s,是第769個(gè)周期。如果不延時(shí),仿真出來的圖像會(huì)出現(xiàn)上下偏移的現(xiàn)象。延時(shí)產(chǎn)生的原因是移位寄存器宏功能模塊altshift_taps填充需要的延時(shí)和門限處理需要的延時(shí)。

3 軟件仿真和分析
    為了更加直觀地驗(yàn)證Sobel 邊緣檢測(cè)的FPGA硬件實(shí)現(xiàn)效果,本文采用 MATLAB 和 Modelsim 進(jìn)行混合仿真[7],并與Sobel 邊緣檢測(cè)的MATLAB實(shí)現(xiàn)進(jìn)行比較。
3.1 Quartus II編譯
    在Quartus II中編譯整個(gè)工程,產(chǎn)生Modelsim仿真測(cè)試時(shí)所需的文件*.vo和*.sdo。本文選用Altera公司的Cyclone II 系列FPGA EP2C70F896C6器件,利用 Quartus II 7.2軟件完成Sobel邊緣檢測(cè)的 FPGA系統(tǒng)設(shè)計(jì)。圖9給出了該系統(tǒng)所消耗的資源情況,從中可以看出,該系統(tǒng)僅僅占用了芯片1%的邏輯單元,剩余的資源可以用來實(shí)現(xiàn)更復(fù)雜的功能。

3.2 Modelsim測(cè)試
    在Modelsim中編寫測(cè)試文件,并存儲(chǔ)檢測(cè)到的邊緣數(shù)據(jù)。系統(tǒng)仿真的時(shí)鐘信號(hào)設(shè)為50 MHz,處理一幅256&times;256的8 bit圖像, 所需時(shí)間為1.3 ms,則每秒可處理圖像為770幅, 達(dá)到了實(shí)時(shí)系統(tǒng)的要求, 解決了普通計(jì)算機(jī)運(yùn)算需時(shí)長(zhǎng)的問題。
3.3 MATLAB處理
    最后將Modelsim存儲(chǔ)的數(shù)據(jù)經(jīng)過MATLAB處理,得到邊緣圖像。圖10是閾值為150時(shí)lena圖像的仿真情況。
3.4 仿真結(jié)果分析
    由圖10可知,(a)是原始圖像,(b)是Sobel 邊緣檢測(cè)的MATLAB實(shí)現(xiàn),(c)是Sobel 邊緣檢測(cè)的FGPA實(shí)現(xiàn)。比較(b)和(c)可以看出,在邊緣檢測(cè)效果方面,硬件時(shí)序仿真結(jié)果和MATLAB處理結(jié)果是一致的。這是因?yàn)樵紙D像也是采用8 bit定點(diǎn)存儲(chǔ)格式,所以沒有量化精度的損失,即該設(shè)計(jì)取得了很好的邊緣檢測(cè)效果。

4 Sobel邊緣檢測(cè)的FPGA應(yīng)用
4.1 開發(fā)環(huán)境

    開發(fā)環(huán)境的硬件驗(yàn)證平臺(tái)是DE2-70開發(fā)板,其目標(biāo)芯片是Altera公司的Cyclone II系列中的 EP2C70-
F896C6N型FPGA器件。該板可外接TRDB-D5M攝像頭和彩色TRDB-LTM 觸摸屏。
4.2 系統(tǒng)結(jié)構(gòu)框架
    圖11是整個(gè)系統(tǒng)結(jié)構(gòu)框架,其中虛線部分是Altera公司的FPGA。該系統(tǒng)將TRDB-D5M攝像頭采集的圖像數(shù)據(jù)送FPGA板進(jìn)行處理,并在TRDB-LTM液晶屏上顯示。

4.3 系統(tǒng)仿真結(jié)果
    該系統(tǒng)可以調(diào)整曝光值和閾值,選擇是否鏡像,控制顯示的圖像為彩色模式、灰階模式或者Sobel邊緣檢測(cè)模式。圖12、圖13的四幅圖像依次為彩色模式、灰階模式和Sobel邊緣檢測(cè)模式下當(dāng)閾值分別為3和96時(shí)的圖像。

    從仿真結(jié)果及實(shí)驗(yàn)所得到的圖像來看, 該系統(tǒng)較好地完成了Sobel 算子邊緣檢測(cè)的任務(wù)。實(shí)驗(yàn)結(jié)果表明,使用 FPGA 器件能較為準(zhǔn)確地檢測(cè)出有用的邊緣信息,即能較好地完成圖像處理的邊緣檢測(cè)工作。
    該設(shè)計(jì)利用可編程的FPGA模塊完成Sobel 邊緣檢測(cè)的硬件設(shè)計(jì)。該方法既避免了自己編寫大量程序代碼的繁瑣,又獲得了很好的綜合和實(shí)現(xiàn)結(jié)果。在系統(tǒng)構(gòu)建時(shí),各功能模塊具有良好的移植性和系統(tǒng)擴(kuò)展性。且使用的邏輯門個(gè)數(shù)少,占用很少系統(tǒng)資源,可以在FPGA 上完成更多更復(fù)雜的圖像處理工作,為FPGA 單芯片圖像處理系統(tǒng)的實(shí)現(xiàn)提供了條件。

參考文獻(xiàn)
[1] 宇野由麻子,大石基之,成英.FPGA產(chǎn)品市場(chǎng)現(xiàn)狀與展望[J].電子設(shè)計(jì)應(yīng)用,2004(12):63-72.
[2] SHARIFI M,F(xiàn)ATHY M,MAHMOUDI M T.A classified  and comparative study of edge detection algorithms[A].Proceedings of the International Conference on Information Technology:Coding and Computing[C].Iran,2002:117-120.
[3] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2003.
[4] 官鑫,王黎,高曉蓉,等.圖像邊緣檢測(cè)Sobel算法的FPGA仿真與實(shí)現(xiàn)[J].現(xiàn)代電子設(shè)計(jì),2009(8):109-111.
[5] 艾揚(yáng)利,楊兵.基于FPGA的Sobel算子并行計(jì)算研究[J].現(xiàn)代電子技術(shù),2005,28(9):50-51.
[6] 李明,趙勛杰,毛偉民.Sobel邊緣檢測(cè)的FPGA實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù),2009,16:44-46.
[7] 杜勇,劉帝英.Matlab在FPGA設(shè)計(jì)中的應(yīng)用[J].電子工程師,2007,33(1):9211.

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