《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于Sobel算法圖像邊緣檢測的FPGA實現(xiàn)
基于Sobel算法圖像邊緣檢測的FPGA實現(xiàn)
2016年電子技術(shù)應(yīng)用第10期
杜正聰1,寧龍飛2
1.攀枝花學院 電氣信息工程學院,四川 攀枝花617000;2.西華大學 機械工程學院,四川 成都610039
摘要: 針對嵌入式軟件無法滿足數(shù)字圖像實時處理速度問題,提出用硬件加速器的思想,通過FPGA實現(xiàn)Sobel邊緣檢測算法。通過乒乓操作、并行處理數(shù)據(jù)和流水線設(shè)計,大大提高算法的處理速度。采用模塊的硬件設(shè)計,保證了系統(tǒng)的可移植性和系統(tǒng)的擴展性。最后使用Verilog HDL編程實現(xiàn)算法處理,并用Modelsim和MATLAB進行了仿真和驗證。
關(guān)鍵詞: FPGA Sobel邊緣檢測 硬件加速器
中圖分類號: TN911.73;TP391.7
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.10.023
中文引用格式: 杜正聰,寧龍飛. 基于Sobel算法圖像邊緣檢測的FPGA實現(xiàn)[J].電子技術(shù)應(yīng)用,2016,42(10):89-91,95.
英文引用格式: Du Zhengcong,Ning Longfei. Image edge detection based on Sobel algorithm in FPGA implementation[J].Application of Electronic Technique,2016,42(10):89-91,95.
Image edge detection based on Sobel algorithm in FPGA implementation
Du Zhengcong1,Ning Longfei2
1.Electrical Information Engineering College,Panzhihua University,Panzhihua 617000,China; 2.School of Mechanical Engineering,Xihua University,Chengdu 610039,China
Abstract: Aiming at the problem that embedded software can′t meet the digital image real-time processing speed,this thesis puts forward the idea of using hardware accelerators, that is, using FPGA hardware to implement Sobel edge detection algorithm. Through Ping-pong operation,parallel processing data and pipeline design, the processing speed of the algorithm is greatly improved. The hardware design of module ensures the portability and scalability of the system. Finally, this thesis applies Verilog HDL programming to realize the algorithm processing and uses Modelsim and MATLAB to make simulation and verification.
Key words : FPGA;Sobel edge detection;hardware accelerators

0 引言

    圖像的邊緣檢測是數(shù)字圖像處理領(lǐng)域的一項關(guān)鍵技術(shù),是圖像分割、運動檢測、目標跟蹤、人臉識別等技術(shù)的基礎(chǔ)[1]。隨著電子信息技術(shù)的高速發(fā)展,圖像的邊緣檢測在航天、工業(yè)、醫(yī)學、軍事等領(lǐng)域有著廣泛的應(yīng)用和發(fā)展[2]。在這些應(yīng)用中,通常選用ARM和DSP等作為處理器,通過嵌入式軟件來處理信息,但隨著待處理信息量越來越大,算法復雜度越來越高,單核處理器處理速度已不能滿足某些系統(tǒng)的需求。

    本文在研究Sobel算法[3]的基礎(chǔ)上,針對嵌入式軟件無法滿足實時數(shù)據(jù)處理速度的要求,引入硬件加速器的思想,采用RAM+FPGA硬件結(jié)構(gòu),通過嵌入式軟件提供從機接口,控制加速器進行工作,硬件加速器(FPGA)通過模塊化設(shè)計,采用流水線設(shè)計和乒乓操作大幅提高實時處理數(shù)據(jù)速度,實現(xiàn)圖像的邊緣檢測。從機接口一般通過嵌入式軟件讀寫寄存器來完成。

1 邊緣檢測和Sobel算法

    邊緣檢測是分析視頻和圖像的重要方法,主要檢測和確定圖像在哪些區(qū)域上亮度發(fā)生突變,這些亮度突變的區(qū)域通常就是物體的邊緣。

    以灰度圖像為例,分辨率為M×N的圖像由M×N個像素組成。Sobel 檢測法把中心像素點和離它最近的8個像素點每個乘以一個系數(shù)后相加,類似卷積的過程來估計每個像素點x、y方向上的導數(shù)值。該系數(shù)通常用一個卷積表(Convolution Mask)來表示。分別用于計算x和y方向?qū)?shù)值的Sobel卷積表Dx和Dy如下所示[4]

     ck6-gs1-s1.gif

    把每個像素值分別乘以卷積表中對應(yīng)的數(shù),再把相乘得到的9個數(shù)相加就得到了x方向和y方向的偏導數(shù)值Dx和Dy。然后,利用這兩個偏導數(shù)值計算中心像素點的導數(shù)。

    計算公式如下:

     ck6-gs1.gif

    由于開平方和平方函數(shù)都是單調(diào)的,實際計算幅度的最大值、最小值與近似以后計算的最大值、最小值發(fā)生在圖像的同一個地方。并且,與計算平方和開平方相比,計算絕對值所用的硬件資源少得多。若要找到導數(shù)幅值的最大值和最小值,對式(1)作如下簡化:

    ck6-gs2.gif

    需要重復地計算圖像中每個像素位的導數(shù)幅值。但是,注意到環(huán)繞圖像邊緣的像素點并沒有一個完整的相鄰像素組來計算偏導數(shù)和導數(shù),所以要對這些像素進行單獨處理。最簡單的方法就是把圖像中邊緣像素點的導數(shù)值|D|設(shè)置為0。

2 Sobel邊緣檢測法的硬件實現(xiàn)

2.1 Sobel加速器結(jié)構(gòu)

    硬件加速實質(zhì)上是通過增加運算并行性達到加速的目的,常常采用硬件復制和流水線的方法。

    邊緣檢測加速器系統(tǒng)的原理框圖如圖1所示。視頻或圖像數(shù)字信號通過 I/O 控制器輸入,保存在存儲器中;在RAM處理器控制下運行的硬件加速器,讀入存儲器中存儲的幀圖像(數(shù)據(jù)),并進行邊緣檢測算法實現(xiàn),最后將得到相應(yīng)的導數(shù)圖像寫入存儲器。在實際應(yīng)用中,選取硬件加速器對時耗大的算法進行加速,大大降低其他處理器(如 DSP、ARM 等)的負擔。

ck6-t1.gif

    I/O控制器和加速器通過DMA(Direct Memory Access)方式直接發(fā)起對內(nèi)存的訪問而不通過處理器,大大加快訪問內(nèi)存的速度。為避免多個設(shè)備同時訪問內(nèi)存發(fā)生沖突,在系統(tǒng)中引入仲裁器。仲裁器的仲裁策略為:唯一申請者獲得資源。這樣,ARM(CPU)對加速器進行配置,配置待處理數(shù)據(jù)源地址和目標地址,然后啟動加速器,釋放總線資源;ACC在接收到啟動命令之后,要申請資源,完成算法實現(xiàn)后,用中斷的方式反饋給RAM(CPU),同時釋放資源。

2.2 基于FPGA的硬件加速器

    圖像邊緣檢測數(shù)據(jù)具有數(shù)據(jù)量大,可并行處理及重復操作等特點,用FPGA可實現(xiàn)硬件并行處理信息;通過流水線設(shè)計技術(shù)和乒乓操作的架構(gòu)設(shè)計,可以進一步提高實現(xiàn)算法組合邏輯處理速度和系統(tǒng)處理信息的吞吐量,因此FPGA對處理圖像邊緣檢測數(shù)據(jù)有著天然的優(yōu)勢。本文采用面向流處理的加速器處理按照順序到達的數(shù)據(jù)流。

    系統(tǒng)基于Altera公司的Cyclone IV系列FPGA,采用從頂向下模塊化設(shè)計方法,利用攀巖法建模,具有良好的移植性和系統(tǒng)擴展性。圖2為邊緣檢測實時處理圖。

ck6-t2.gif

    圖3為硬件加速器模塊設(shè)計圖。設(shè)計中將系統(tǒng)數(shù)據(jù)流和控制流分開進行,這樣在設(shè)計數(shù)據(jù)流時就不必在意數(shù)據(jù)何時輸入何時輸出的問題,而把這些問題轉(zhuǎn)移到控制流設(shè)計階段中去。在控制流設(shè)計階段系統(tǒng)地考慮數(shù)據(jù)流的控制,將使得電路設(shè)計更加系統(tǒng),修改更加方便??刂屏鞯脑O(shè)計一般借助于狀態(tài)機(FSM)。

ck6-t3.gif

    以實現(xiàn)分辨率600×400的8 bit灰度圖片為例,系統(tǒng)設(shè)計數(shù)據(jù)總線位寬32 bit,通過總線分時復用,分別從memory取數(shù)據(jù),放置32 bit*_row_reg寄存器,為減少產(chǎn)生無效數(shù)據(jù),增加硬件設(shè)計的復雜性,等待數(shù)據(jù)分別裝滿*_row_reg寄存器,才開始移位計算Sobel算子結(jié)果,這就造成移位時不能寫入數(shù)據(jù),寫入數(shù)據(jù)時不能移位,產(chǎn)生大量的等待時間。本文通過插入*_row移位寄存器,把寫數(shù)據(jù)和移位分開處理,實現(xiàn)系統(tǒng)的全線流水。

    對于Sobel算法單元,為了節(jié)約資源和提高處理速度,有些設(shè)計采用分布式算法,利用查找表代替乘法器進行乘法運算[5],這樣無法做到對任意隨機數(shù)據(jù)的處理。本文為避免使用乘法器,通過移位實現(xiàn)乘法運算。數(shù)據(jù)流水進入產(chǎn)生的無效數(shù)據(jù)設(shè)置為左邊界,數(shù)據(jù)流水排除的無效數(shù)據(jù)設(shè)置為右邊界,頂行和末行為無效行設(shè)置上下邊界。圖4為Sobel算法架構(gòu)圖。

ck6-t4.gif

3 系統(tǒng)仿真和結(jié)果分析

    本文采用600×400的灰度圖像作為研究對象,仿真和驗證結(jié)果如圖5所示。

ck6-t5.gif

    通過MATLAB將灰度圖片imag1.bmp(任意格式)處理轉(zhuǎn)換成imag.txt文件,存儲在Memory中,用Verilog實現(xiàn)Sobel算法,Modelsim仿真數(shù)據(jù)生成data.txt文件,再利用MATLAB將data.txt文件通過門限處理轉(zhuǎn)換成圖片tes.bmp。用MATLAB直接調(diào)用Sobel函數(shù)處理初始灰度模式圖片,生成圖片imag2.bmp,比較兩圖片,驗證FPGA處理的正確性。

    從仿真結(jié)果和實驗所得圖像來看,該設(shè)計很好地完成了Sobel算法的邊緣檢測任務(wù),使用RAM+FPGA加速器結(jié)構(gòu),以50 MHz(實驗仿真使用值)時鐘驅(qū)動為例,處理一幅600×400圖像,所需時間為19.2 ms,每秒可處理圖像208幅,滿足實時系統(tǒng)要求,解決單核處理器運算時間長的問題。解放控制單元去實現(xiàn)更復雜的控制和功能。

4 結(jié)論

    本文基于FPGA引用硬件加速器思想,解決嵌入式軟件無法滿足信息的實時性處理問題,用Verilog編程硬件實現(xiàn)圖像數(shù)字信號讀寫、Sobel算法實現(xiàn),完成圖像邊緣檢測;通過FPGA乒乓操作、并行處理和流水線設(shè)計完成數(shù)據(jù)量大、重復率高的圖像邊緣檢測數(shù)據(jù)處理,大大提高了系統(tǒng)效率,達到了實時性要求。同時引用模塊化的設(shè)計方法,自頂向下利用攀巖法建模,使得設(shè)計具有良好的可移植性和系統(tǒng)可擴展性,具有極大的實用價值。

參考文獻

[1] 何俊峰.基于視覺原理的圖像邊緣檢測算子研究[D].武漢:華中科技大學,2006.

[2] Yu Yuanhui,Chang Chinchen.A new edge detection approach based on image context analysis[J].SCI,Image and Vision Computing,2006,24:1090-1102.

[3] 林偉,周劍揚.圖像邊緣檢測高速數(shù)字濾波器設(shè)計與實現(xiàn)研究[J].現(xiàn)代電子技術(shù),2006(6):26-29.

[4] 吳海彬,何祖恩,李文錦.基于改進Sobel算子的圖像邊緣檢測及其嵌入式實現(xiàn)[J].機床與液壓,2009,37(10):133-136.

[5] 葉敏,周文暉,顧偉康.基于FPGA的實時圖像濾波及邊緣檢測方法[J].傳感技術(shù)學報,2007,20(3):623-627.

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