王曉娟,翟成瑞
(中北大學, 太原 030051)
基于FPGA聯合Sobel算法的實時圖像邊沿檢測系統的設計與實現
王曉娟,翟成瑞
(中北大學, 太原 030051)
邊沿檢測技術作為數字圖像處理領域的重要一支,在目標匹配,交通管控,國防安全等多個領域有著廣泛的應用,能夠精確高效地實現邊沿檢測對于后續進行更高層次的圖像識別以及圖像處理有著密切的聯系;為了實現實時有效的圖像邊沿檢測提出了基于FPGA結合Sobel算法的實時圖像邊沿檢測系統,硬件使用流水線結合并行處理的解決方案,能夠有效提高圖像處理的速度;算法設計采用Sobel算法,不但簡化了運算同時獲得了不錯的檢測效果;實驗結果顯示,系統可高效地達成實時圖像邊沿檢測的設計目的,而且提升了圖像的處理效率與邊沿檢測的效果,便于滿足后續圖像處理的要求。
FPGA;Sobel算法;圖像邊沿檢測
圖像形狀信息的邊沿信息作為圖像信息的重要組成部分,是圖像的一個重要特征。邊沿檢測是進行圖像處理分析,計算機以及人類視覺和模式識別技術的重要前提,其不但可以減少圖像處理的數據量,同時能夠最大限度保留圖像中物體的形狀信息,當前已經在目標識別與跟蹤,計算機視覺等領域獲得了非常廣泛的應用。因而,研究設計出能夠實時,準確,高效,穩定實現邊沿檢測的系統,對于圖像處理具有極其關鍵的使用價值和理論意義[1]。
在實際工程需求中,圖像的處理系統對于實時性的要求比較高,同時由于圖像的數據量越來越大等問題,依靠單純的軟件系統來對圖像進行實時處理已經顯得力所不及,為此,采用FPGA或者DSP等硬件設備設計實時圖像處理系統成為當前的主流[2]。由于DSP仍然采用串行指令執行系統,這很大程度上影響了他的執行效率以及吞吐量,而且擴展性不佳。另一方面,由于FPGA邏輯結構獨特,存儲資源豐富,同時具有實時性,可靠性以及靈活性等方面的優勢,使得其在眾多的圖像處理芯片中脫穎而出,得到了越來越廣泛的關注和使用。
采用FPGA作為處理器,結合Sobel算法作為檢測算法,設計實現一種基于FPGA聯合Sobel算法的實時圖像邊沿檢測系統,設計的系統在實現實時圖像邊沿檢測的設計目標的同時,獲得了更快的圖像處理速度和更好的邊沿檢測效果,方便了進一步的圖像處理操作。
圖像的邊沿通常被我們認為是圖像中灰度值或亮度發生明顯變化的局部區域,即圖像的亮度信息發生陡峭變化的區域[3]。圖像邊沿可以劃分為3種形式:(1)階梯型邊沿;(2)斜坡型邊沿;(3)線性邊沿。如圖1所示。

圖1 圖像邊沿的三種類型
圖像的邊沿檢測具有巨大的實用價值,根據圖像的邊緣區域存在陡峭的灰度值或亮度變化這一特性,采取合適的數學方法,對目標圖像進行檢測運算操作,能夠提取出目標圖的邊界線。
當前的邊沿檢測方法大體可以歸納為三類:基于一階微分運算的梯度邊緣檢測方法,基于二階微分運算的邊緣檢測算子,以及運算復雜但是效果理想的Canny算子。
我們以基于一階微分運算的邊緣檢測算子為例。一幅圖像的灰度信息可以表示為f(x,y),x,y分別表示水平方向和垂直方向上的坐標,則該圖像在x和y方向上的偏導數可以表示為公式(1)[5]:
(1)
圖像中某一點p在α角度上的偏導數為fp,三者之間的關系為公式(2),如圖2所示。
fp=fxcosα+fysinα
(2)

圖2 關系圖
由此,圖像的梯度可以由公式3定義為:
(3)
其中:Gx和Gy代表灰度值在水平方向和垂直方向上的變化率,根據其值的大小可以確定圖像的大體邊緣信息,為了便于硬件實現,對其以1為模進行運算可得到公式4:
(4)
一般情況下,可以使用不同尺寸和數值的矩陣對圖像中的每一個像素點依次進行卷積運算求出梯度值。該矩陣被稱為梯度算子,梯度算子通常由水平和垂直方向上的兩個算子組成。而由于梯度算子的尺寸和數值存在多樣性,由此可以創造出不同性能,同時適應不同使用環境的梯度算子。
隨著數字圖像處理領域的不斷發展,具有高靈活度,強針對性,優秀數據處理能力的嵌入式圖像處理系統逐漸成為了學界的研究熱潮,收到了產業界的高度青睞。FPGA(fieldprogrammablegateArray),即現場可編程門陣列是由眾多的可配置邏輯模塊,可編程存儲資源,內部總線和I/O模塊組成的專用電路,根據不同的需求,可隨時根改器件的邏輯功能,燒錄簡單,具有無可比擬的靈活性。另一方面,它同時具有優秀的并行計算能力而且提供一定的內存帶寬。基于這些優勢,采用FPGA作為硬件平臺研究數字圖像處理成為了必然。
Sobel算子是一種基于一階微分運算的邊緣檢測算法,Sobel算子的大小為3×3,包括水平方向和垂直方向上的兩個子算子,通過計算每一個像素點水平方向和垂直方向上的亮度差分來實現邊緣檢測[6],該算子的數學表達式以及矩陣形式如下所示:

f(x+1,y-1)

f(x-1,y+1)
其中:A表示目標圖像,f(x,y)表示圖像(x,y)點的灰度值。目標圖像中每一點的梯度值可以由公式(5)算得:
(5)
通常為了在硬件中便于實現并且提高運算效率,使用模1運算替代模2運算:
(6)
將該計算所得的梯度值與預先選取的合適的閥值比較,若該像素點的梯度值大于閥值,則判定該點為圖像的邊沿點。緊接著我們可以根據公式計算該點的梯度方向:
(7)
綜上,我們可以總結出Sobel算法的主要步驟:
1)分別將橫向和縱向兩個梯度因子沿著圖像的每一個像素點移動,將梯度因子中心與圖像中的像素點位置重合。
2)將梯度因子內的系數與圖像上與其對應的像素值相乘并且相加。
3)將計算結果作為梯度因子中心位置像素的梯度值。
4)選取合適的閥值,若像素梯度值大于閥值,則判定該像素點為圖像的邊沿點。
5)計算圖像邊沿點的梯度方向。
圖3為Sobel算法邊沿檢測后的仿真效果圖,由仿真結果可以看出我們成功提取出了圖像中人物的邊沿輪廓信息。Sobel算法根據每個像素點的上、下、左、右鄰域的灰度加權算法,依據在邊沿點處達到極值這一特點進行邊沿檢測。Sobel算法不但可以獲得很好地檢測效果,同時對于噪聲具有相當的平滑作用,能夠獲得較為準確的邊緣信息。但是,其也存在著會誤檢測到偽邊沿,精確度不夠高的缺點。在對精讀沒有苛刻要求的環境或場景,Sobel算法是一種非常有效而且常用的邊沿檢測方法。

圖3 Sobel算法邊沿檢測
設計的基于FPGA聯合Sobel算法的實時圖像邊沿檢測系統主要有以下幾個系統模塊組成:負責數據采集的圖像采集模塊,負責灰度轉換的灰度處理模塊,負責緩存數據的數據緩存模塊,負責圖像邊沿檢測的系統核心邊沿檢測模塊,以及顯示圖像的圖像顯示模塊。如圖4所示為系統框圖,其中圖像采集模塊實現圖像數據的采集;采集后的圖像數據經過灰度處理模塊處理轉化為灰度圖像;處理后的灰度圖像存儲在數據緩存模塊;邊沿檢測模塊采用Sobel算法對緩存數據進行處理提取出邊沿信息后通過圖像顯示模塊顯示。

圖4 圖像邊沿檢測系統設計圖
3.1 圖像采集模塊
視頻信號的采集實質上就是將光信號轉變為電信號,即將攝像頭采集到的模擬視頻信號轉換為可以被數字系統處理的數字信號。在系統中,通過串行攝像機控制總線(SCCB)配置相機,使用三相寫數據的配置方法:首先寫入CMOS傳感器地址,隨后將需要配置的寄存器地址寫入,最后將數據寫入及配置完成了寄存器。依據上述方法,依序配置完成相應的寄存器后,CMOS圖像傳感器就可以順利地采集圖像并且將所采集的數據傳輸到FPGA中的圖像模塊。FPGA圖像獲取模塊依據像素時鐘同步信號,確認不同時段的有效數據,產生有效信號,隨后預處理好的圖像數據被傳輸到下一個模塊進行后續處理。
3.2 灰度處理模塊
圖像收集模塊獲取的圖像是RGB標準的彩色圖像,不可以直接用來進行灰度梯度值計算,因此,我們需要對彩色圖像進行灰度化處理,將其轉換為我們所需的灰度數據。灰度化處理去除了圖像的色彩信息,大大減少了圖像處理系統要處理的數據量因而提升了計算速率,而且不破壞圖像灰度信息,所以對邊沿檢測的效果沒有影響。在圖像的灰度化處理中加權平均法,最大值法和平均值法是最常用的三種。在該系統中采用加權平均值法,該方法符合人體視覺特征,將紅綠藍三種顏色分量進行亮度加權平均,計算出合理的灰度值。該方法的數學表示為公式(8):
Gary=0.299R+0.587G+0.114B
(8)
由于浮點運算在實際工程中實現較為復雜,灰度運算在該系統中進行了整數轉換,具體公式如下所示:
Gary=38R+75G+15B
(9)
該實現過程使用QuartusII中的乘加器實現。
3.3 數據緩存模塊
由于系統頻率與數據處理速度的影響,數據采集速率與數據處理速率不匹配,會影響系統的整體工作效能,因此,設計一個符合要求的大容量存儲器用來緩存待處理數據成為系統設計的一個關鍵步驟。SRAM和SDRAM可以適應圖像數據數據量大等特點,因此經常被用作圖像數據的緩存器緩存器。但是SRAM存在一些固有缺陷,其有限的容量以及昂貴的價格不利于將來對系統的進一步擴展。因此,SDRAM芯片成為了系統數據緩存模塊的不二之選。
緩沖模塊和控制模塊組成了數據緩存模塊的核心——SDRAM控制器。Wr_FIFO和Rd_FIFO兩個異步FIFO作為緩沖模塊中圖像數據的輸入和輸出緩存,可以將低頻數據輸入轉換為高頻數據輸出,將高頻數據輸入轉換為低頻數據輸出。雖然讀寫兩種操作不能在SDRAM中同時進行,但是由于SDRAM控制模塊的工作頻率低于數據傳輸頻率的一半,即可以滿足數據的讀寫操作操作不沖突,因此從功能以及效果上看,SDRAM是可以滿足該系統同時讀寫的要求,到達了實時性的要求。系統中的FIFO控制模塊具有以下功能:(1)外部圖像數據請求輸入,將數據寫入WR_FIFO。(2)當外部請求輸出圖像數據,將Rd_FIFO中的數據輸出。(3)當WR_FIFO中的數據多于256時,發送緩存請求,收到響應后寫入到SDRAM。(4)當RD_FIFO中的數據少于256時,發送讀取請求,收到響應后讀取SDRAM數據。
control_interface,command,sdr_data_path是SDRAM控制模塊的3個子功能模塊。這3個子模塊負責不同的功能,其中,control_interface模塊根據command的命令對SDRAM進行控制;command模塊與頂層交互信息,對收到的信息進行譯碼后得到各項命令以及目標地址等控制信息;sdr_data_path模塊根據外部DQM信號確定數據讀寫寬度。
3.4 邊沿檢測模塊
根據上一章的分析看出每一個像素點的梯度計算需要知道3×3大小區域內各點的灰度值,同時必須將水平和垂直方向的兩個算子同對應的灰度值進行加法和乘法運算,將計算結果和選取好的閥值進行比較,根據結果判定是否為圖像邊沿。系統采用QUARTUS中的IP模塊設計了Sobel邊沿檢測模塊,如圖5所示為其實現框圖,其中運算器為計算像素點梯度值的核心。每一個梯度運算由三個乘加運算以及一個加法運算構成,該模塊設計如下圖所示。通過該模塊計算后所得的梯度值與閥值進行比較,從而確定圖像的邊沿。

圖5 邊沿檢測模塊設計圖
3.5 實驗結果與分析
根據系統結構設計,設置相應的配置,編寫各個模塊所需的程序,編譯運行后,實驗結果如圖6所示,

圖6 Sobel邊沿檢測系統實驗結果圖
圖6顯示,經圖像采集系統采集的原始圖像經過Sobel邊沿檢測系統處理后提取出原始圖像的邊沿信息。通過圖6中原始圖像和檢測后的圖像比較,可以看出,設計的Sobel算法與FPGA結合的邊沿檢測系統很好的實現了目標圖像邊沿信息提取的目的。其中圖像的邊沿部分根據每個像素點的梯度值與預設閥值的比較進行判定,當梯度值大于閥值時則判定為邊沿,并且將該點強度值設為0,其余判定為255,經過篩查之后的結果圖顯示為右圖。由于邊沿檢測時的梯度值需要與預設閥值進行對比,所以閥值的設定直接影響著檢測的結果。如果閥值過小會造成邊沿信息的誤判,反過來,如果閥值過大則會導致邊沿信息的丟失。因此選取合適的閥值在邊沿檢測系統的設計中顯得尤為重要。
為了實現圖像邊沿的實時檢測,采取Sobel算法作為邊沿檢測算法設計實現了基于FPGA硬件平臺的實時圖像邊沿檢測系統。通過實驗所得到的圖像可以看出,設計的系統可以在達成圖像邊沿檢測的設計目標的同時,具備實時性強,檢測效果好的特點,實時檢測效果較為理想。設計方法不但達到了圖像邊沿檢測的實時性和準確性的要求,同時避免了大量代碼編寫工作。在各個子功能模塊的構建中都具備較好的移植性和擴展性,便于系統的進一步開發和應用,同時占用系統資源少,還為后續在FPGA上進行更過圖像處理操作留下了大量的系統空間。
[1] 程鴻亮. 基于FPGA的實時圖像邊緣檢測系統的研究[D]. 西安:長安大學,2009.
[2] 溫 杰, 李錦明. 基于fpga的實時圖像邊沿檢測系統的實現[J]. 電子技術應用, 2015,41(10):65-67.
[3] 富 爽, 許 杰, 邵一峰, 等. 基于fpga的實時圖像邊緣檢測器的設計[J]. 黑龍江八一農墾大學學報, 2014,26(4): 76-79.
[4] 馮輝宗, 陳 葉, 徐 洋. 基于fpga的實時圖像采集與sobel邊緣檢測[J].傳感器與微系統, 2011,30(6):116-118.
[5] 李 濤. 基于FPGA的Sobel算子實時圖像邊緣檢測系統的設計[D]. 北京:北京交通大學,2013.
[6] 王 堃. 基于FPGA的實時Sobel邊緣檢測系統設計[D].合肥:安徽大學,2015.
[7] 邵 莉.基于FPGA的圖像邊緣檢測系統的研究和實現[D].北京:北京大學,2011.
[8] 張浩然. 基于fpga的sobel邊緣檢測實現[J]. 數字化用戶,2013,36.
[9] 王紹雷, 趙進創, 周 毅. 基于fpga的圖像邊緣檢測系統的設計. 電子技術應用, 2007,33(6):40-42.
[10] 李正明, 劉春國, 安明建. 基于fpga的sobel圖像邊緣檢測的設計[J].現代科學儀器, 2012(4):88-90.
[11] 甘振華, 應 駿. 基于fpga的嵌入式圖像邊緣檢測系統設計[J]. 電視技術, 2010,34(8):43-45.
[12] 楊新華, 寇為剛. 基于fpga的sobel算子圖像邊緣檢測算法[J]. 儀表技術與傳感器, 2013(1):102-104.
[13] 張 偉. 基于fpga的圖像邊緣檢測sobel算法的研究與實現[J]. 電腦知識與技術,2014(20): 4810-4812.
[14] 林建英, 陳廣明. 一種改進的實時圖像邊緣檢測算法及其FPGA實現[A]. 全國信息獲取與處理學術會議[C].2010.
[15] 方惠蓉.基于fpga的prewitt邊緣檢測算子的實現[J].哈爾濱師范大學自然科學學報, 2015,31(2):72-76.
The Real-time Image Edge Detection Using Sobel Algorithm Based on FPGA System Design and Realization
Wang Xiaojuan, Zhai Chengrui
(North University of China,Taiyuan 030051, China)
Edge detection technology is an important part of digital image processing, which is widely used in target matching, traffic control and homeland security, it is of prime importance to realize accurate and efficient image edge detection of further imaging processing and image recognition. The system realized real time image edge detection based on FPGA and Sobel algorithm, pipelining and parallel processing was used in hardware, which improved the speed of image processing. Sobel algorithm was used as image edge detection algorithm, it simplifies the operation and improves the detection effect. Experiment results show that the system designed in this paper can achieve real time image edge detection effectively, meanwhile, this system improves the speed of imaging processing, it can meet the needs of further imaging processing.
FPGA; Sobel algorithm; image edge detection
2016-11-22;
2016-12-13。
國家自然科學基金項目(61335008)。
王曉娟(1989-),女,山西平遙人,碩士生,主要從事數據采集方向的研究。
1671-4598(2017)01-0034-04
10.16526/j.cnki.11-4762/tp.2017.01.010
文獻標識碼:A
翟成瑞(1964-),教授,主要從事微系統及集成技術,存儲測試技術、MEMS技術、設備和器件可靠性技術方向的研究。