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