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