王曉娟,翟成瑞
(中北大學(xué), 太原 030051)
基于FPGA聯(lián)合Sobel算法的實時圖像邊沿檢測系統(tǒng)的設(shè)計與實現(xiàn)
王曉娟,翟成瑞
(中北大學(xué), 太原 030051)
邊沿檢測技術(shù)作為數(shù)字圖像處理領(lǐng)域的重要一支,在目標(biāo)匹配,交通管控,國防安全等多個領(lǐng)域有著廣泛的應(yīng)用,能夠精確高效地實現(xiàn)邊沿檢測對于后續(xù)進(jìn)行更高層次的圖像識別以及圖像處理有著密切的聯(lián)系;為了實現(xiàn)實時有效的圖像邊沿檢測提出了基于FPGA結(jié)合Sobel算法的實時圖像邊沿檢測系統(tǒng),硬件使用流水線結(jié)合并行處理的解決方案,能夠有效提高圖像處理的速度;算法設(shè)計采用Sobel算法,不但簡化了運算同時獲得了不錯的檢測效果;實驗結(jié)果顯示,系統(tǒng)可高效地達(dá)成實時圖像邊沿檢測的設(shè)計目的,而且提升了圖像的處理效率與邊沿檢測的效果,便于滿足后續(xù)圖像處理的要求。
FPGA;Sobel算法;圖像邊沿檢測
圖像形狀信息的邊沿信息作為圖像信息的重要組成部分,是圖像的一個重要特征。邊沿檢測是進(jìn)行圖像處理分析,計算機以及人類視覺和模式識別技術(shù)的重要前提,其不但可以減少圖像處理的數(shù)據(jù)量,同時能夠最大限度保留圖像中物體的形狀信息,當(dāng)前已經(jīng)在目標(biāo)識別與跟蹤,計算機視覺等領(lǐng)域獲得了非常廣泛的應(yīng)用。因而,研究設(shè)計出能夠?qū)崟r,準(zhǔn)確,高效,穩(wěn)定實現(xiàn)邊沿檢測的系統(tǒng),對于圖像處理具有極其關(guān)鍵的使用價值和理論意義[1]。
在實際工程需求中,圖像的處理系統(tǒng)對于實時性的要求比較高,同時由于圖像的數(shù)據(jù)量越來越大等問題,依靠單純的軟件系統(tǒng)來對圖像進(jìn)行實時處理已經(jīng)顯得力所不及,為此,采用FPGA或者DSP等硬件設(shè)備設(shè)計實時圖像處理系統(tǒng)成為當(dāng)前的主流[2]。由于DSP仍然采用串行指令執(zhí)行系統(tǒng),這很大程度上影響了他的執(zhí)行效率以及吞吐量,而且擴(kuò)展性不佳。另一方面,由于FPGA邏輯結(jié)構(gòu)獨特,存儲資源豐富,同時具有實時性,可靠性以及靈活性等方面的優(yōu)勢,使得其在眾多的圖像處理芯片中脫穎而出,得到了越來越廣泛的關(guān)注和使用。
采用FPGA作為處理器,結(jié)合Sobel算法作為檢測算法,設(shè)計實現(xiàn)一種基于FPGA聯(lián)合Sobel算法的實時圖像邊沿檢測系統(tǒng),設(shè)計的系統(tǒng)在實現(xiàn)實時圖像邊沿檢測的設(shè)計目標(biāo)的同時,獲得了更快的圖像處理速度和更好的邊沿檢測效果,方便了進(jìn)一步的圖像處理操作。
圖像的邊沿通常被我們認(rèn)為是圖像中灰度值或亮度發(fā)生明顯變化的局部區(qū)域,即圖像的亮度信息發(fā)生陡峭變化的區(qū)域[3]。圖像邊沿可以劃分為3種形式:(1)階梯型邊沿;(2)斜坡型邊沿;(3)線性邊沿。如圖1所示。
圖1 圖像邊沿的三種類型
圖像的邊沿檢測具有巨大的實用價值,根據(jù)圖像的邊緣區(qū)域存在陡峭的灰度值或亮度變化這一特性,采取合適的數(shù)學(xué)方法,對目標(biāo)圖像進(jìn)行檢測運算操作,能夠提取出目標(biāo)圖的邊界線。
當(dāng)前的邊沿檢測方法大體可以歸納為三類:基于一階微分運算的梯度邊緣檢測方法,基于二階微分運算的邊緣檢測算子,以及運算復(fù)雜但是效果理想的Canny算子。
我們以基于一階微分運算的邊緣檢測算子為例。一幅圖像的灰度信息可以表示為f(x,y),x,y分別表示水平方向和垂直方向上的坐標(biāo),則該圖像在x和y方向上的偏導(dǎo)數(shù)可以表示為公式(1)[5]:
(1)
圖像中某一點p在α角度上的偏導(dǎo)數(shù)為fp,三者之間的關(guān)系為公式(2),如圖2所示。
fp=fxcosα+fysinα
(2)
圖2 關(guān)系圖
由此,圖像的梯度可以由公式3定義為:
(3)
其中:Gx和Gy代表灰度值在水平方向和垂直方向上的變化率,根據(jù)其值的大小可以確定圖像的大體邊緣信息,為了便于硬件實現(xiàn),對其以1為模進(jìn)行運算可得到公式4:
(4)
一般情況下,可以使用不同尺寸和數(shù)值的矩陣對圖像中的每一個像素點依次進(jìn)行卷積運算求出梯度值。該矩陣被稱為梯度算子,梯度算子通常由水平和垂直方向上的兩個算子組成。而由于梯度算子的尺寸和數(shù)值存在多樣性,由此可以創(chuàng)造出不同性能,同時適應(yīng)不同使用環(huán)境的梯度算子。
隨著數(shù)字圖像處理領(lǐng)域的不斷發(fā)展,具有高靈活度,強針對性,優(yōu)秀數(shù)據(jù)處理能力的嵌入式圖像處理系統(tǒng)逐漸成為了學(xué)界的研究熱潮,收到了產(chǎn)業(yè)界的高度青睞。FPGA(fieldprogrammablegateArray),即現(xiàn)場可編程門陣列是由眾多的可配置邏輯模塊,可編程存儲資源,內(nèi)部總線和I/O模塊組成的專用電路,根據(jù)不同的需求,可隨時根改器件的邏輯功能,燒錄簡單,具有無可比擬的靈活性。另一方面,它同時具有優(yōu)秀的并行計算能力而且提供一定的內(nèi)存帶寬?;谶@些優(yōu)勢,采用FPGA作為硬件平臺研究數(shù)字圖像處理成為了必然。
Sobel算子是一種基于一階微分運算的邊緣檢測算法,Sobel算子的大小為3×3,包括水平方向和垂直方向上的兩個子算子,通過計算每一個像素點水平方向和垂直方向上的亮度差分來實現(xiàn)邊緣檢測[6],該算子的數(shù)學(xué)表達(dá)式以及矩陣形式如下所示:
f(x+1,y-1)
f(x-1,y+1)
其中:A表示目標(biāo)圖像,f(x,y)表示圖像(x,y)點的灰度值。目標(biāo)圖像中每一點的梯度值可以由公式(5)算得:
(5)
通常為了在硬件中便于實現(xiàn)并且提高運算效率,使用模1運算替代模2運算:
(6)
將該計算所得的梯度值與預(yù)先選取的合適的閥值比較,若該像素點的梯度值大于閥值,則判定該點為圖像的邊沿點。緊接著我們可以根據(jù)公式計算該點的梯度方向:
(7)
綜上,我們可以總結(jié)出Sobel算法的主要步驟:
1)分別將橫向和縱向兩個梯度因子沿著圖像的每一個像素點移動,將梯度因子中心與圖像中的像素點位置重合。
2)將梯度因子內(nèi)的系數(shù)與圖像上與其對應(yīng)的像素值相乘并且相加。
3)將計算結(jié)果作為梯度因子中心位置像素的梯度值。
4)選取合適的閥值,若像素梯度值大于閥值,則判定該像素點為圖像的邊沿點。
5)計算圖像邊沿點的梯度方向。
圖3為Sobel算法邊沿檢測后的仿真效果圖,由仿真結(jié)果可以看出我們成功提取出了圖像中人物的邊沿輪廓信息。Sobel算法根據(jù)每個像素點的上、下、左、右鄰域的灰度加權(quán)算法,依據(jù)在邊沿點處達(dá)到極值這一特點進(jìn)行邊沿檢測。Sobel算法不但可以獲得很好地檢測效果,同時對于噪聲具有相當(dāng)?shù)钠交饔?,能夠獲得較為準(zhǔn)確的邊緣信息。但是,其也存在著會誤檢測到偽邊沿,精確度不夠高的缺點。在對精讀沒有苛刻要求的環(huán)境或場景,Sobel算法是一種非常有效而且常用的邊沿檢測方法。
圖3 Sobel算法邊沿檢測
設(shè)計的基于FPGA聯(lián)合Sobel算法的實時圖像邊沿檢測系統(tǒng)主要有以下幾個系統(tǒng)模塊組成:負(fù)責(zé)數(shù)據(jù)采集的圖像采集模塊,負(fù)責(zé)灰度轉(zhuǎn)換的灰度處理模塊,負(fù)責(zé)緩存數(shù)據(jù)的數(shù)據(jù)緩存模塊,負(fù)責(zé)圖像邊沿檢測的系統(tǒng)核心邊沿檢測模塊,以及顯示圖像的圖像顯示模塊。如圖4所示為系統(tǒng)框圖,其中圖像采集模塊實現(xiàn)圖像數(shù)據(jù)的采集;采集后的圖像數(shù)據(jù)經(jīng)過灰度處理模塊處理轉(zhuǎn)化為灰度圖像;處理后的灰度圖像存儲在數(shù)據(jù)緩存模塊;邊沿檢測模塊采用Sobel算法對緩存數(shù)據(jù)進(jìn)行處理提取出邊沿信息后通過圖像顯示模塊顯示。
圖4 圖像邊沿檢測系統(tǒng)設(shè)計圖
3.1 圖像采集模塊
視頻信號的采集實質(zhì)上就是將光信號轉(zhuǎn)變?yōu)殡娦盘?,即將攝像頭采集到的模擬視頻信號轉(zhuǎn)換為可以被數(shù)字系統(tǒng)處理的數(shù)字信號。在系統(tǒng)中,通過串行攝像機控制總線(SCCB)配置相機,使用三相寫數(shù)據(jù)的配置方法:首先寫入CMOS傳感器地址,隨后將需要配置的寄存器地址寫入,最后將數(shù)據(jù)寫入及配置完成了寄存器。依據(jù)上述方法,依序配置完成相應(yīng)的寄存器后,CMOS圖像傳感器就可以順利地采集圖像并且將所采集的數(shù)據(jù)傳輸?shù)紽PGA中的圖像模塊。FPGA圖像獲取模塊依據(jù)像素時鐘同步信號,確認(rèn)不同時段的有效數(shù)據(jù),產(chǎn)生有效信號,隨后預(yù)處理好的圖像數(shù)據(jù)被傳輸?shù)较乱粋€模塊進(jìn)行后續(xù)處理。
3.2 灰度處理模塊
圖像收集模塊獲取的圖像是RGB標(biāo)準(zhǔn)的彩色圖像,不可以直接用來進(jìn)行灰度梯度值計算,因此,我們需要對彩色圖像進(jìn)行灰度化處理,將其轉(zhuǎn)換為我們所需的灰度數(shù)據(jù)?;叶然幚砣コ藞D像的色彩信息,大大減少了圖像處理系統(tǒng)要處理的數(shù)據(jù)量因而提升了計算速率,而且不破壞圖像灰度信息,所以對邊沿檢測的效果沒有影響。在圖像的灰度化處理中加權(quán)平均法,最大值法和平均值法是最常用的三種。在該系統(tǒng)中采用加權(quán)平均值法,該方法符合人體視覺特征,將紅綠藍(lán)三種顏色分量進(jìn)行亮度加權(quán)平均,計算出合理的灰度值。該方法的數(shù)學(xué)表示為公式(8):
Gary=0.299R+0.587G+0.114B
(8)
由于浮點運算在實際工程中實現(xiàn)較為復(fù)雜,灰度運算在該系統(tǒng)中進(jìn)行了整數(shù)轉(zhuǎn)換,具體公式如下所示:
Gary=38R+75G+15B
(9)
該實現(xiàn)過程使用QuartusII中的乘加器實現(xiàn)。
3.3 數(shù)據(jù)緩存模塊
由于系統(tǒng)頻率與數(shù)據(jù)處理速度的影響,數(shù)據(jù)采集速率與數(shù)據(jù)處理速率不匹配,會影響系統(tǒng)的整體工作效能,因此,設(shè)計一個符合要求的大容量存儲器用來緩存待處理數(shù)據(jù)成為系統(tǒng)設(shè)計的一個關(guān)鍵步驟。SRAM和SDRAM可以適應(yīng)圖像數(shù)據(jù)數(shù)據(jù)量大等特點,因此經(jīng)常被用作圖像數(shù)據(jù)的緩存器緩存器。但是SRAM存在一些固有缺陷,其有限的容量以及昂貴的價格不利于將來對系統(tǒng)的進(jìn)一步擴(kuò)展。因此,SDRAM芯片成為了系統(tǒng)數(shù)據(jù)緩存模塊的不二之選。
緩沖模塊和控制模塊組成了數(shù)據(jù)緩存模塊的核心——SDRAM控制器。Wr_FIFO和Rd_FIFO兩個異步FIFO作為緩沖模塊中圖像數(shù)據(jù)的輸入和輸出緩存,可以將低頻數(shù)據(jù)輸入轉(zhuǎn)換為高頻數(shù)據(jù)輸出,將高頻數(shù)據(jù)輸入轉(zhuǎn)換為低頻數(shù)據(jù)輸出。雖然讀寫兩種操作不能在SDRAM中同時進(jìn)行,但是由于SDRAM控制模塊的工作頻率低于數(shù)據(jù)傳輸頻率的一半,即可以滿足數(shù)據(jù)的讀寫操作操作不沖突,因此從功能以及效果上看,SDRAM是可以滿足該系統(tǒng)同時讀寫的要求,到達(dá)了實時性的要求。系統(tǒng)中的FIFO控制模塊具有以下功能:(1)外部圖像數(shù)據(jù)請求輸入,將數(shù)據(jù)寫入WR_FIFO。(2)當(dāng)外部請求輸出圖像數(shù)據(jù),將Rd_FIFO中的數(shù)據(jù)輸出。(3)當(dāng)WR_FIFO中的數(shù)據(jù)多于256時,發(fā)送緩存請求,收到響應(yīng)后寫入到SDRAM。(4)當(dāng)RD_FIFO中的數(shù)據(jù)少于256時,發(fā)送讀取請求,收到響應(yīng)后讀取SDRAM數(shù)據(jù)。
control_interface,command,sdr_data_path是SDRAM控制模塊的3個子功能模塊。這3個子模塊負(fù)責(zé)不同的功能,其中,control_interface模塊根據(jù)command的命令對SDRAM進(jìn)行控制;command模塊與頂層交互信息,對收到的信息進(jìn)行譯碼后得到各項命令以及目標(biāo)地址等控制信息;sdr_data_path模塊根據(jù)外部DQM信號確定數(shù)據(jù)讀寫寬度。
3.4 邊沿檢測模塊
根據(jù)上一章的分析看出每一個像素點的梯度計算需要知道3×3大小區(qū)域內(nèi)各點的灰度值,同時必須將水平和垂直方向的兩個算子同對應(yīng)的灰度值進(jìn)行加法和乘法運算,將計算結(jié)果和選取好的閥值進(jìn)行比較,根據(jù)結(jié)果判定是否為圖像邊沿。系統(tǒng)采用QUARTUS中的IP模塊設(shè)計了Sobel邊沿檢測模塊,如圖5所示為其實現(xiàn)框圖,其中運算器為計算像素點梯度值的核心。每一個梯度運算由三個乘加運算以及一個加法運算構(gòu)成,該模塊設(shè)計如下圖所示。通過該模塊計算后所得的梯度值與閥值進(jìn)行比較,從而確定圖像的邊沿。
圖5 邊沿檢測模塊設(shè)計圖
3.5 實驗結(jié)果與分析
根據(jù)系統(tǒng)結(jié)構(gòu)設(shè)計,設(shè)置相應(yīng)的配置,編寫各個模塊所需的程序,編譯運行后,實驗結(jié)果如圖6所示,
圖6 Sobel邊沿檢測系統(tǒng)實驗結(jié)果圖
圖6顯示,經(jīng)圖像采集系統(tǒng)采集的原始圖像經(jīng)過Sobel邊沿檢測系統(tǒng)處理后提取出原始圖像的邊沿信息。通過圖6中原始圖像和檢測后的圖像比較,可以看出,設(shè)計的Sobel算法與FPGA結(jié)合的邊沿檢測系統(tǒng)很好的實現(xiàn)了目標(biāo)圖像邊沿信息提取的目的。其中圖像的邊沿部分根據(jù)每個像素點的梯度值與預(yù)設(shè)閥值的比較進(jìn)行判定,當(dāng)梯度值大于閥值時則判定為邊沿,并且將該點強度值設(shè)為0,其余判定為255,經(jīng)過篩查之后的結(jié)果圖顯示為右圖。由于邊沿檢測時的梯度值需要與預(yù)設(shè)閥值進(jìn)行對比,所以閥值的設(shè)定直接影響著檢測的結(jié)果。如果閥值過小會造成邊沿信息的誤判,反過來,如果閥值過大則會導(dǎo)致邊沿信息的丟失。因此選取合適的閥值在邊沿檢測系統(tǒng)的設(shè)計中顯得尤為重要。
為了實現(xiàn)圖像邊沿的實時檢測,采取Sobel算法作為邊沿檢測算法設(shè)計實現(xiàn)了基于FPGA硬件平臺的實時圖像邊沿檢測系統(tǒng)。通過實驗所得到的圖像可以看出,設(shè)計的系統(tǒng)可以在達(dá)成圖像邊沿檢測的設(shè)計目標(biāo)的同時,具備實時性強,檢測效果好的特點,實時檢測效果較為理想。設(shè)計方法不但達(dá)到了圖像邊沿檢測的實時性和準(zhǔn)確性的要求,同時避免了大量代碼編寫工作。在各個子功能模塊的構(gòu)建中都具備較好的移植性和擴(kuò)展性,便于系統(tǒng)的進(jìn)一步開發(fā)和應(yīng)用,同時占用系統(tǒng)資源少,還為后續(xù)在FPGA上進(jìn)行更過圖像處理操作留下了大量的系統(tǒng)空間。
[1] 程鴻亮. 基于FPGA的實時圖像邊緣檢測系統(tǒng)的研究[D]. 西安:長安大學(xué),2009.
[2] 溫 杰, 李錦明. 基于fpga的實時圖像邊沿檢測系統(tǒng)的實現(xiàn)[J]. 電子技術(shù)應(yīng)用, 2015,41(10):65-67.
[3] 富 爽, 許 杰, 邵一峰, 等. 基于fpga的實時圖像邊緣檢測器的設(shè)計[J]. 黑龍江八一農(nóng)墾大學(xué)學(xué)報, 2014,26(4): 76-79.
[4] 馮輝宗, 陳 葉, 徐 洋. 基于fpga的實時圖像采集與sobel邊緣檢測[J].傳感器與微系統(tǒng), 2011,30(6):116-118.
[5] 李 濤. 基于FPGA的Sobel算子實時圖像邊緣檢測系統(tǒng)的設(shè)計[D]. 北京:北京交通大學(xué),2013.
[6] 王 堃. 基于FPGA的實時Sobel邊緣檢測系統(tǒng)設(shè)計[D].合肥:安徽大學(xué),2015.
[7] 邵 莉.基于FPGA的圖像邊緣檢測系統(tǒng)的研究和實現(xiàn)[D].北京:北京大學(xué),2011.
[8] 張浩然. 基于fpga的sobel邊緣檢測實現(xiàn)[J]. 數(shù)字化用戶,2013,36.
[9] 王紹雷, 趙進(jìn)創(chuàng), 周 毅. 基于fpga的圖像邊緣檢測系統(tǒng)的設(shè)計. 電子技術(shù)應(yīng)用, 2007,33(6):40-42.
[10] 李正明, 劉春國, 安明建. 基于fpga的sobel圖像邊緣檢測的設(shè)計[J].現(xiàn)代科學(xué)儀器, 2012(4):88-90.
[11] 甘振華, 應(yīng) 駿. 基于fpga的嵌入式圖像邊緣檢測系統(tǒng)設(shè)計[J]. 電視技術(shù), 2010,34(8):43-45.
[12] 楊新華, 寇為剛. 基于fpga的sobel算子圖像邊緣檢測算法[J]. 儀表技術(shù)與傳感器, 2013(1):102-104.
[13] 張 偉. 基于fpga的圖像邊緣檢測sobel算法的研究與實現(xiàn)[J]. 電腦知識與技術(shù),2014(20): 4810-4812.
[14] 林建英, 陳廣明. 一種改進(jìn)的實時圖像邊緣檢測算法及其FPGA實現(xiàn)[A]. 全國信息獲取與處理學(xué)術(shù)會議[C].2010.
[15] 方惠蓉.基于fpga的prewitt邊緣檢測算子的實現(xiàn)[J].哈爾濱師范大學(xué)自然科學(xué)學(xué)報, 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。
國家自然科學(xué)基金項目(61335008)。
王曉娟(1989-),女,山西平遙人,碩士生,主要從事數(shù)據(jù)采集方向的研究。
1671-4598(2017)01-0034-04
10.16526/j.cnki.11-4762/tp.2017.01.010
文獻(xiàn)標(biāo)識碼:A
翟成瑞(1964-),教授,主要從事微系統(tǒng)及集成技術(shù),存儲測試技術(shù)、MEMS技術(shù)、設(shè)備和器件可靠性技術(shù)方向的研究。