【摘 要】Sobel邊緣檢測(cè)是圖像分割處理中的一種常用方法,經(jīng)常用于各種圖像處理當(dāng)中。但是傳統(tǒng)的圖像處理工具由于大多數(shù)都是順序處理的,圖像處理速度偏慢。在要求實(shí)時(shí)的圖像處理中會(huì)顯得力不從心。而FPGA由于其并行的處理特點(diǎn),可以并行處理大量的數(shù)據(jù)。在實(shí)時(shí)圖像處理中可以發(fā)揮出巨大的優(yōu)勢(shì)。所以用FPGA研究圖像處理是很有必要的。本文主要工作是利用FPGA,選擇Verilog語言實(shí)現(xiàn)了Sobel邊緣檢測(cè)。
【關(guān)鍵詞】FPGA,Sobel,Verilog;
在圖像處理中邊緣蘊(yùn)含了豐富的信息,是圖像的基本特征之一。邊緣檢測(cè)不僅能減少圖像處理的工作量,還能保留圖像中物體的形狀特性。所以研究邊緣檢測(cè)是非常有必要的。FPGA是利用硬件編程語言對(duì)圖像進(jìn)行處理,可以同一時(shí)間處理大量的數(shù)據(jù),在此利用FPGA的并行結(jié)構(gòu)特性和流水線技巧,快速實(shí)現(xiàn)了Sobel邊緣檢測(cè)算法 。為圖像的后續(xù)處理打下了基礎(chǔ)。
一、Sobel邊緣檢測(cè)算法
邊緣檢測(cè)算法都是通過梯度算子來實(shí)現(xiàn)的。經(jīng)典的梯度算子有Sobel、Kirsch、Roberts等。在求邊緣的梯度時(shí)需要對(duì)每個(gè)像素點(diǎn)進(jìn)行計(jì)算,工作量是比較大的。在這些算法中Sobel具有計(jì)算簡單、檢測(cè)效果好的特點(diǎn),是一種被廣泛應(yīng)用的算法。Sobel算子是一階導(dǎo)數(shù)的邊緣算子。是利用水平和垂直方向上3X3的Sobel算子模版,與選定圖像中同樣大小的窗口中的每個(gè)像素點(diǎn)做卷積求和運(yùn)算,窗口中心點(diǎn)為待求的像素點(diǎn)。計(jì)算出圖像水平和垂直方向的梯度值,然后對(duì)水平和垂直方向的梯度值的平方求和,再開方。與設(shè)定的閾值進(jìn)行比較,如果結(jié)果大于閾值邊視為邊緣點(diǎn),否者就不是邊緣點(diǎn)。
圖1為水平方向的Sobel矩陣算子,圖2為垂直方向的Sobel矩陣算子。圖3為3X3模版的像素灰度值。
利用Sobel算子對(duì)圖3中的3X3模版做卷積和計(jì)算。就可以得到p5像素處水平和垂直方向的梯度值Gx和Gy。最后利用
(1)
算出p5處的灰度值,再與設(shè)定的閾值進(jìn)行比較。若大于閾值就視為邊緣點(diǎn),不然就是普通點(diǎn)。
二、Sobel邊緣檢測(cè)算法的硬件系統(tǒng)實(shí)現(xiàn)
(一)Sobel實(shí)現(xiàn)方法選擇
由于Quartus II 9.0自帶有很多的IP核,可以調(diào)用IP核進(jìn)行乘法、并行相加來實(shí)現(xiàn)Sobel邊緣檢測(cè)。但是這樣就會(huì)涉及到補(bǔ)碼、負(fù)數(shù)等。實(shí)現(xiàn)方法較為復(fù)雜。在本文中提出一種簡單的算法實(shí)現(xiàn)邊緣檢測(cè),把復(fù)雜的問題簡單化。
對(duì)于水平模版,把圖3中的第1列和第3列像素點(diǎn)分別與其相應(yīng)的位置做卷積和,并且分別取第1列和第3列的卷積和的絕對(duì)值比較大小,把較大值認(rèn)為Gx。
Gx=max{(p1+2p4+p7),(p3+2p6+p9)}(2)
對(duì)于垂直模版,把圖2中的第1行和第3行像素點(diǎn)分別與其對(duì)應(yīng)的位置做卷積和,并分別取第1行和第3行的卷積和的絕對(duì)值比較大小,把較大值認(rèn)為Gy。
Gy=max{(p1+2p2+p3),(p7+2p8+p9)}(3)
(二)Sobel的硬件實(shí)現(xiàn)
由于Sobel的實(shí)現(xiàn)需要3X3的像素模版與水平方向和垂直方向的卷積因子進(jìn)行卷積求和,所以這里利用Quartus II 9.0自帶的IP核Shift Register(RAM-based)構(gòu)建三行以此為基礎(chǔ)獲得3X3的像素模版。如圖4所示
圖4 移位寄存器
在得到3X3模版后利用(2)、(3)進(jìn)行硬件實(shí)現(xiàn),關(guān)鍵代碼如下
begin
Gy1<=p11+(p12<<1)+p13;
Gy2<=p31+(p32<<1)+p33;
Gy <=Gy1>Gy2? Gy1-Gy2 : Gy2-Gy1;
end
begin
Gx1<=p11+(p21<<1)+p31;
Gx2<=p13+(p23<<1)+p33;
Gx <=Gx1>Gx2?Gx1-Gx2 : Gx2-Gx1;
end
經(jīng)過一系列運(yùn)算就得到Gx與Gy,再根據(jù)公式(1)與自己設(shè)置的閾值,就能實(shí)現(xiàn)Sobel邊緣檢測(cè)。
三、實(shí)驗(yàn)結(jié)果
在視頻采集系統(tǒng)里面加入Sobel邊緣檢測(cè)模塊,編譯并下載程序,運(yùn)行系統(tǒng),實(shí)驗(yàn)結(jié)果如圖5所示。
實(shí)驗(yàn)效果顯示可以很好的進(jìn)行邊緣檢測(cè),經(jīng)過邊緣檢測(cè)處理后也為后續(xù)更復(fù)雜的圖像處理打下了基礎(chǔ)。
四、結(jié)束語
通過利用FPGA的并行特性,完成了3X3模版像素的提取和Sobel邊緣檢測(cè)算子的處理。通過FPGA的流水線結(jié)構(gòu)和并行特點(diǎn)處理了大量的數(shù)據(jù),最終實(shí)現(xiàn)了Sobel邊緣檢測(cè)。為更加復(fù)雜的圖像處理進(jìn)行了鋪墊。
參考文獻(xiàn):
[1]岡撒雷斯.數(shù)字圖像處理.北京:電子工業(yè)出版社.
[2]王濤,全書海.基于改進(jìn)Sobel算子的車牌定位方法.微計(jì)算機(jī)信息,2008,24(5):63—65.
[3]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2003.
[4]Ahera Corporation.Embedded Design Handbook,2009.
[5]段瑞玲,李慶祥,李玉和.圖像邊緣檢測(cè)方法研究綜述[J].光學(xué)技術(shù),2005,31(3):415—419.