文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.03.020
中文引用格式: 李錦明,閆曉俊,江旭東,等. Sobel圖像邊沿檢測算法的優(yōu)化設計與實現(xiàn)[J].電子技術應用,2016,42(3):71-73,77.
英文引用格式: Li Jinming,Yan Xiaojun,Jiang Xudong,et al. The optimization design and implementation of Sobel image edge detection algorithm[J].Application of Electronic Technique,2016,42(3):71-73,77.
0 引言
圖像邊沿是圖像的基本特征,是圖像分割、特征提取等圖像分析的重要依據(jù),目前已廣泛應用于目標識別、機器視覺和運動目標跟蹤等領域?,F(xiàn)今已有多種邊沿檢測算法以及一些改進方式,但各種算法都有各自的優(yōu)缺點和適用領域。在實時圖像處理系統(tǒng)中,通常采用Sobel算子來實現(xiàn)圖像的邊沿檢測。然而傳統(tǒng)的Sobel邊沿檢測算法存在抗噪能力弱、邊沿信息較粗等問題,不能滿足實際工程應用的要求。如何實時地獲取清晰的圖像邊沿對工程實踐和科學研究都具有重大意義。
設計中,基于圖像處理的相關理論對Sobel邊沿檢測算法進行了改進,在傳統(tǒng)的Sobel算法的基礎上增加了快速中值濾波模塊,提高了系統(tǒng)的抗噪能力,并采用非極大值抑制的方式對圖像邊沿進行了細化,既有效地保留了圖像邊沿,又保證了圖像邊沿的清晰。
1 Sobel圖像邊沿檢測優(yōu)化設計
Sobel算法雖然在圖像邊沿檢測方面具有諸多優(yōu)勢,然而對于圖像實時處理還是存在抗噪能力弱、邊沿信息較粗等問題,所以需進一步改進。優(yōu)化后的邊沿檢測模塊主要由快速中值濾波模塊、邊沿檢測模塊和非極大值抑制模塊構成。檢測模塊總體設計如圖1所示。
當圖像數(shù)據(jù)輸入時,首先進行快速中值濾波處理,平滑圖像噪聲,然后通過Sobel算子得到圖像的梯度值,最后應用閾值比較和非極大值抑制的方式提取圖像邊沿,進行二值化處理,從而得到清晰的圖像邊沿。
1.1 快速中值濾波
在圖像采集傳輸過程中,不可避免地出現(xiàn)各種各樣的噪聲,這些噪聲不僅降低了圖像的質量,而且會影響后續(xù)圖像的處理。中值濾波能夠有效濾除椒鹽噪聲和脈沖噪聲,有效地保持圖像邊沿的細節(jié),是一種比較理想的圖像濾波算法。它通過對相鄰區(qū)域內的像素進行排序,取中間值作為輸出像素,以達到濾波的效果。基本的中值濾波算法運算量大,不利于實時圖像處理。設計采用快速中值濾波算法,提高了圖像處理的效率,實現(xiàn)方法如圖2所示,其中MAXi、MIDi、MINi分別代表每行數(shù)據(jù)的最大值、中間值與最小值。依據(jù)圖2所示,通過多次比較(CMP)就可以得到最終的濾波結果。
1.2 Sobel邊沿檢測
Sobel算子是一階導數(shù)的邊緣檢測算子,包含水平和垂直2組3×3的矩陣,將之與圖像中的每個像素點做卷積和運算,即得到圖像的水平和垂直梯度值,再根據(jù)梯度計算公式算出圖像梯度值,將此梯度值與設定的閾值進行比較,若大于閾值,則認為該像素點為邊緣部分,把3×3二維圖像中央的灰度值設為255,若小于閾值,就不是邊緣部分,相應的灰度值設為0。
圖3(a)為一幀圖像的3×3窗口,Pi為各點的灰度值,圖3(b)和圖3(c)分別為Sobel算子水平和垂直方向梯度算子。針對圖像中3×3的像素空間,Sobel算子采用式(1)和式(2)計算中間像素點P5處的水平梯度Px與垂直梯度Py。
Px=(P6+2P7+P8)-(P0+2P1+P2)(1)
1.3 非極大值抑制
Soble邊沿檢測算法通過選取合適的閾值能夠細化圖像邊沿,然而閾值的選取往往比較困難。如果閾值過低,則無法達到細化的效果,反之則會丟失部分圖像邊沿。通常Soble算法檢測得到的圖像邊沿會出現(xiàn)邊沿較粗的問題,從而影響圖像處理的效果。故優(yōu)化設計采用非極大值抑制的方式對圖像梯度幅值的屋脊帶進行了細化,只保留了幅值局部變化的最大的點。在非極大值抑制過程中,使用3×3的移動窗口對圖進行處理,中心像素梯度值與鄰域內的其他像素梯度值進行比較,如果中心像素值不是鄰域像素的極大值,則把該像素點賦值為0,反之則把該像素點視為圖像的邊緣。其具體的數(shù)學表達式如式(3):
非極大值抑制既有效保留了圖像邊緣的梯度,又達到了圖像細化的目的,有效地解決了Sobel算子出現(xiàn)的邊沿較粗的問題,有利于圖像分割和特征提取等圖像后期處理的實現(xiàn)。
2 圖像邊沿檢測硬件設計與實現(xiàn)
2.1 硬件系統(tǒng)結構設計
基于FPGA的實時圖像邊沿檢測系統(tǒng)主要由圖像采集單元、數(shù)據(jù)存儲單元、邊沿檢測單元和圖像顯示單元四部分組成。具體的硬件系統(tǒng)結構如圖4所示。
系統(tǒng)基于FPGA(EP3C40F484)開發(fā)平臺,選用500萬像素CMOS攝像頭進行圖像采集,圖像信息經采集、灰度化等處理,再經過優(yōu)化的基于Sobel圖像邊緣檢測處理,最后由液晶顯示器顯示。算法采用了可編程宏功能模塊與VHDL語言相結合的方法實現(xiàn)。
2.2 快速中值濾波算法硬件實現(xiàn)
中值濾波算法的核心是排序,算法的優(yōu)劣直接決定求取中間值的效率,從而決定濾波器的性能。快速中值濾波采用并行處理和流水線的設計,避免了大量的比較操作,相比于傳統(tǒng)的中值濾波算法,不僅運算量大大減少,在FPGA硬件實現(xiàn)上所占用的硬件資源也更少,因此它對圖像數(shù)據(jù)處理的速度比傳統(tǒng)的中值濾波更快。快速中值濾波硬件實現(xiàn)頂層原理圖如圖5所示,其中移位寄存器(linebuffer)模塊能夠依次輸出3行的圖像數(shù)據(jù)。Compare模塊帶有鎖存功能,能夠比較同一行像素的3個數(shù)據(jù)的大小,Compare3模塊比較不同行圖像像素的大小,并輸出相應的結果。
2.3 Soble邊沿檢測算法硬件實現(xiàn)
基于Soble算子的邊沿檢測算法不僅計算簡單,而且容易在硬件上實現(xiàn)。算法主要包括梯度計算和閾值比較兩個部分,用VHDL代碼實現(xiàn)閾值比較相對簡單,所以梯度計算算法的實現(xiàn)為本模塊的重點。
設計中梯度計算采用3-Line Buffer結構,相鄰3行3列的9個圖像像素點(P1,P2…P9)利用3個行緩沖器進行緩沖,然后再同步讀取3行數(shù)據(jù)進行分級寄存,利用乘法器實現(xiàn)寄存結果與Sobel算子Xn的相乘,再利用3個加法器實現(xiàn)式(1)或式(2),即得到水平方向或垂直方向的梯度值,最后再利用一個加法器實現(xiàn)梯度計算公式得到梯度值|G|。
2.4 非極大值抑制算法硬件實現(xiàn)
設計中在Soble邊沿檢測的基礎上增加了非極大值抑制功能,非極大值抑制算法RTL級結構如圖6所示。
為了實現(xiàn)非極大值抑制算法,需再次構建3×3的移動窗口并確定中心像素梯度值是否為鄰域內的最大值,設計中采用LineBuffer_3和sort3來構建3×3移動窗口。LineBuffer_3能夠緩存3行480列的像素梯度值,一個時鐘周期可以并行輸出1列像素梯度值。前兩個周期sort3模塊接收并緩存LineBuffer_3模塊輸出的兩列像素梯度值,在第三個周期得到第三列像素梯度值時,也同時構成了3×3的梯度窗口,輸出如圖中的data1~data9,最后在comper模塊內對9個像素梯度值進行比較,從而確定中心像素是否為鄰域內的最大值。若為最大值就保留并進入閾值模塊進行比較,否則將中心梯度值置零。
3 實驗結果與分析
為了驗證系統(tǒng)優(yōu)化設計后的性能,采用MT9M001相機對圖像進行采集,將優(yōu)化后得到行的邊沿圖像與優(yōu)化前的邊沿圖像進行比較,得到了不同的檢測結果,結果如圖7所示。圖7(a)為相機采集到的原始圖像,圖7(b)為傳統(tǒng)的Soble邊沿檢測算法得到的圖像,由于受室內日光燈的影響,采集到的圖像噪聲大且邊沿較粗。圖7(c)為通過濾波后得到的圖像邊沿,濾波效果明顯。圖7(d)為優(yōu)化后的邊沿檢測算法得到的圖像,圖像受噪聲影響小,且邊沿較細,能夠有效地識別圖像的邊沿。
4 結論
該系統(tǒng)針對Sobel算法用于圖像邊沿檢測時出現(xiàn)的噪聲大、邊沿較粗等問題,在傳統(tǒng)的Sobel算法的基礎上增加了快速中值濾波模塊和非極大值抑制模塊,提高了系統(tǒng)的抗噪能力,保證了圖像邊沿的清晰度,并在EP3C40F484 FPGA平臺上對硬件電路進行了驗證。實驗結果表明,優(yōu)化后的邊沿檢測方案不僅能夠有效地抑制噪聲,而且得到的圖像邊沿更細,增強了實時圖像處理的效果。
參考文獻
[1] 謝鳳英.數(shù)字圖像處理及應用[M].北京:電子工業(yè)出版社,2014.
[2] 朱秀昌,劉峰.數(shù)字圖像處理與圖像通信[M].北京:北京郵電大學出版社,2014.
[3] 孫敏.圖像處理并行算法研究與實現(xiàn)[D].綿陽:西南科技大學,2011.
[4] 張利平,潘宏俠,黃晉英.智能車輛視覺系統(tǒng)的障礙物邊緣檢測[J].測試與校準,2006,26(4):30-31.
[5] 尹業(yè)宏,王濤,陳穎.基于FPGA的圖像與處理濾波算法[J].光學與光電技術,2004,2(5):61-63.
[6] 楊新華,寇為剛.基于FPGA的Soble算子圖像邊緣檢測算法[J].儀表技術與傳感器,2013(1):102-104.
[7] 朱偉超,萬新軍,楊波,等.模糊圖像邊緣精確定位的濾波算法[J].光學儀器,2015,37(1):46-48.