摘 要:針對(duì)傳統(tǒng)Canny邊緣檢查算法容易被噪聲影響,文中采用了Canny算法與形態(tài)學(xué)膨脹的方法結(jié)合來(lái)檢測(cè)目標(biāo)的邊緣,選用MATLAB R2018a平臺(tái)將該改進(jìn)算法與Canny算子和圖像形態(tài)學(xué)融合并且引入灰度值來(lái)確定高低閾值,在充分保證抗噪能力的基礎(chǔ)上,又增加了高低閾值的可靠性,改進(jìn)的Canny算法與傳統(tǒng)Canny算法的實(shí)驗(yàn)結(jié)果相比較,表明經(jīng)過(guò)改進(jìn)后的Canny算法在噪聲下的邊緣檢測(cè)的精度和準(zhǔn)確率大大地提升了,更好地保留了圖像原始特征,提高了目標(biāo)圖像識(shí)別的效率。
關(guān)鍵詞:機(jī)器視覺(jué);Canny算法;形態(tài)學(xué)膨脹法;邊緣檢測(cè);圖像處理
中圖分類(lèi)號(hào):TP391" 文獻(xiàn)標(biāo)識(shí)碼:A
邊緣檢測(cè)的目的是檢測(cè)圖像中具有較為獨(dú)特的像素點(diǎn),尋找出周?chē)袼攸c(diǎn)與自身像素點(diǎn)所對(duì)應(yīng)的灰度值不同的點(diǎn)的集合,這些點(diǎn)就構(gòu)成了所需要的圖像邊緣[1]。邊緣的獲取在視覺(jué)系統(tǒng)中至關(guān)重要[2],對(duì)一幅圖片邊緣提取的效果直接影響到后續(xù)圖像處理中的擬合、分類(lèi)和識(shí)別過(guò)程,邊緣檢測(cè)算法主要有Sobel、Robert、Canny等[3]。Sobel算法是機(jī)器人視覺(jué)和圖像處理中常用的一種邊緣檢測(cè)算法,此外,它還是在計(jì)算圖像的亮度函數(shù)灰度近似值常用到的離散差分算子[4]。Sobel算法具有平滑和低噪聲等特點(diǎn),并且可以給出比較精準(zhǔn)的有關(guān)邊緣定位的數(shù)據(jù),但是其邊緣定位的準(zhǔn)確性相對(duì)較低,Sobel算法是基于對(duì)上下相鄰像素點(diǎn)之間灰度級(jí)進(jìn)行加權(quán)檢測(cè)邊緣,在邊緣達(dá)到極值。在檢測(cè)邊緣時(shí),Robert算法是利用對(duì)角線上相鄰兩個(gè)像素差值來(lái)近似梯度幅度,以達(dá)到檢測(cè)目的局部差分算子[4]。與檢測(cè)圖像的傾斜邊緣相比,檢測(cè)圖像的垂直邊緣定位效果和更高定位精度具備更高的優(yōu)勢(shì),但難以抑制對(duì)噪聲的影響。因此,當(dāng)圖像中存在大量噪聲時(shí),定位精度降低。Canny邊緣檢測(cè)算子是于1986年John f.Canny提出的一個(gè)多級(jí)邊緣檢測(cè)算子[5],他認(rèn)為好的邊緣算法應(yīng)該具備以下幾個(gè)方面特點(diǎn):檢測(cè)要可靠、定位要精準(zhǔn)、邊緣響應(yīng)次數(shù)要降到最少。此算法的目標(biāo)就是盡可能地去噪和降低噪聲對(duì)圖像檢測(cè)結(jié)果的影響得到平滑精準(zhǔn)的邊緣輪廓。Sobel算法精度不夠高,Robert算法和Canny算法受噪聲干擾大,本文采用Canny算法和圖像形態(tài)學(xué)方法改進(jìn)邊緣檢測(cè),增加高低閾值的自適應(yīng)性,提升檢測(cè)的準(zhǔn)確度。
1 傳統(tǒng)的Canny算法
1.1 Canny算法簡(jiǎn)介
此算法的目標(biāo)就是盡可能地去噪和降低噪聲對(duì)圖像檢測(cè)結(jié)果的影響,消除噪聲采用二階高斯濾波器,利用其一階導(dǎo)數(shù)與原圖像進(jìn)行卷積,便可得到平滑的圖像。高斯函數(shù)公式如下所示:
G(x,y)=12πσ2exp(-x2+y22σ2)(1)
f′(x,y)=G(x,y)*f(x,y)(2)
其中,G(x,y)為高斯濾波器,f(x,y)為原圖像,f′(x,y)為平滑后的圖像。在圖像平滑處理后需要計(jì)算其梯度幅值M和梯度方向θ。
M=G2x+G2y(3)
θ=arctanGyGx(4)
在梯度計(jì)算完成時(shí),就可以基本上確定了提取的邊緣,但是邊緣存在模糊不清的現(xiàn)象,不能保證有一個(gè)準(zhǔn)確的響應(yīng),所以要利用非最值抑制點(diǎn)對(duì)圖像進(jìn)行處理,再利用雙閾值法,把檢測(cè)得到的圖像邊緣相互連接起來(lái),雙閾值的方法就是使用高低閾值T1、T2,對(duì)產(chǎn)生的圖像進(jìn)行分割,利用高閾值先得到一個(gè)邊緣圖像[6],由于該區(qū)域采用的是高閾值,所以就有可出現(xiàn)圖像不連貫的問(wèn)題,在此情況下,就要采用改進(jìn)算法來(lái)獲得最符合要求的邊緣圖像。
1.2 Canny算法的缺陷
(1)Canny算法是一種基于高斯濾波的線性平滑濾波算法[8],平滑參數(shù)δ的選取決定圖像的平滑程度。δ參數(shù)較大時(shí),降噪效果提高,但圖像的邊緣也會(huì)隨之變得模糊,增加錯(cuò)檢率。δ參數(shù)變小時(shí),對(duì)噪聲的抑制效果降低,同時(shí)也會(huì)降低邊緣的定位精度在最后得到的邊緣圖像中,可能會(huì)損失掉一些重要的邊緣[89]。
(2)由于圖像噪聲和顏色的變化,依然留存著一些邊緣像素。為了處理這些雜亂響應(yīng),有必要保留具有高梯度值的邊緣像素,對(duì)邊緣像素通過(guò)弱梯度值進(jìn)行濾波也是有必要的[10]。該步驟可以通過(guò)雙閾值檢測(cè)(即選擇高低閾值)來(lái)實(shí)現(xiàn)[1112]。假設(shè)將邊界的像素梯度的值設(shè)置的比高閾值更大,高閾值為強(qiáng)邊界像素;邊緣像素的梯度值介于高低閾值之間,為弱邊緣像素;邊緣像素梯度值比低閾值更小,則該像素被抑制。也就是說(shuō)高閾值設(shè)置得較低,無(wú)法有效地去除虛假邊緣,過(guò)高雖然可以濾除多數(shù)的假邊緣,但也會(huì)使邊緣丟失更多的信息。低閾值設(shè)置得較低雖然能夠連接較多的邊緣,但也會(huì)產(chǎn)生較多的虛假邊緣,過(guò)高則會(huì)使圖像包含的邊緣信息減少,造成圖像邊緣的不連續(xù),同時(shí)一組固定的參數(shù)也很難滿足所有的圖像,這也是傳統(tǒng)Canny算子中的一種不足。
2 改進(jìn)的Canny算法
2.1 形態(tài)學(xué)膨脹法
圖像的形態(tài)學(xué)操作是根據(jù)數(shù)學(xué)形態(tài)學(xué)(Mathematical Morphology)的集合理論方法為二值圖像開(kāi)發(fā)的一種處理圖像的方法。通常圖像形態(tài)學(xué)處理作為相鄰域操作的一種形式出現(xiàn),圖像的形態(tài)學(xué)操作是基于通過(guò)將結(jié)構(gòu)元素應(yīng)用于輸入圖像而產(chǎn)生輸出圖像形狀的一系列處理圖像的操作。
為了彌補(bǔ)Canny固有缺陷,本文中Canny算法結(jié)合形態(tài)學(xué)膨脹方法,求解局部最大值,膨脹運(yùn)算對(duì)圖像進(jìn)行卷積,來(lái)填補(bǔ)目標(biāo)區(qū)域中的空洞和小顆粒噪聲。
dst(x,y)=max(x',y'):element(x',y')≠0src(x+x',y+y')(5)
使用“核”B膨脹A,B為模板,A為圖像中的一個(gè)區(qū)域,將B的原點(diǎn)轉(zhuǎn)換為圖像的位置(x,y)。如果B在圖像像素(x,y)和A的交點(diǎn)處不為空,這意味著圖像A中元素在B中的位置對(duì)應(yīng)的值中至少有一個(gè)值為1,則輸出圖像中對(duì)應(yīng)的像素(x,y)的值為1;否則,將為其分配值0。
2.2 優(yōu)化Canny算法
傳統(tǒng)的Canny算法中,使用2×2梯度計(jì)算模式來(lái)計(jì)算環(huán)境中最終差異的梯度大小。此方法以精細(xì)像素為目標(biāo),并具有減少低雜色的能力。但是當(dāng)圖像變得復(fù)雜時(shí),會(huì)出現(xiàn)明顯的錯(cuò)誤,因?yàn)樗褂玫膱D案旨在生成近似值。當(dāng)使用這些模式的效率降低時(shí),生成的梯度幅度將出現(xiàn)重大誤差,不會(huì)有較好的效果。由于原算法在梯度計(jì)算存在缺陷,本文采用了Sobel相似算法的模版如下:
Gx=+10-1
+20-2
+10-1*A(6)
Gy=+1+2+1
000
-1-2-1*A(7)
所對(duì)應(yīng)的具體計(jì)算過(guò)程:
Gx=[f(x+1,y-1)+2*f(x+1,y)+f(x+1,y+1)]-
[f(x-1,y-1)+2*f(x-1,y)+f(x-1,y+1)](8)
Gy=f(x-1,y-1)
+2*f(x,y-1)
+f(x+1,y-1)-f(x-1,y+1)
+2*f(x,y+1)
+2*f(x,y+1)
+f(x+1,y+1)(9)
其中,G=G2x+G2y,θ=arctanGyGx,Gx為水平方向一階偏導(dǎo)數(shù),Gy為垂直方向一階偏導(dǎo)數(shù),G為該像素點(diǎn)的梯度值,θ為梯度方向。該模板較傳統(tǒng)模板的抗噪性能更優(yōu)。
2.3 結(jié)合膨脹算法的優(yōu)化Canny邊緣檢測(cè)
基于前面對(duì)膨脹算法的分析,本文提出先用圖像形態(tài)學(xué)膨脹法增強(qiáng)圖像邊緣,再結(jié)合優(yōu)化的Canny算法進(jìn)行邊緣檢測(cè)。改進(jìn)的Canny算法流程圖如圖3所示。
其中對(duì)Canny算法做出了部分改進(jìn),在原算法的基礎(chǔ)上結(jié)合了形態(tài)學(xué)膨脹運(yùn)算,充分保留了目標(biāo)的邊緣部分,從而可提高原Canny算法邊緣提取的精度。
3 實(shí)驗(yàn)與分析
為驗(yàn)證文中采用改進(jìn)算法的實(shí)際效果,體現(xiàn)該算法良好的抗噪能力,選用MATLAB R2018a平臺(tái)將該改進(jìn)算法與Canny算子和圖像形態(tài)學(xué)融合(以下簡(jiǎn)稱(chēng)“融合法”)的邊緣檢測(cè)方法以及傳統(tǒng)的Canny算法模型進(jìn)行對(duì)比。圖4是對(duì)蘋(píng)果加入0.03高斯噪聲、標(biāo)準(zhǔn)差值為0.5的椒鹽噪聲和0.01高斯噪聲的傳統(tǒng)Canny算法、膨脹效果圖和文中經(jīng)過(guò)改進(jìn)的Canny邊緣檢測(cè)數(shù)據(jù)對(duì)比的示意圖。
從圖4的仿真結(jié)果,文中算法的改進(jìn)具有更好的抗噪性,在低噪聲環(huán)境下融合算法能較完整提取輪廓和細(xì)節(jié),但在混合高噪聲環(huán)境下融合算法對(duì)局部噪聲和局部模糊圖像的融合效果會(huì)出現(xiàn)重邊和殘影。傳統(tǒng)的Canny算法雖然在高斯噪聲下也能識(shí)別出蘋(píng)果的輪廓,但是該算法識(shí)別出的蘋(píng)果輪廓有少許重邊緣,而改進(jìn)后的Canny算法得到的邊緣檢測(cè)圖像輪廓完整而且在混合噪聲下也更加清晰,證明了改進(jìn)后的算法具有良好的抗噪性。
4 結(jié)論
本文從理論角度入手,在深入研究傳統(tǒng)Canny邊緣檢測(cè)算子的基礎(chǔ)上,結(jié)合形態(tài)學(xué)膨脹方法檢測(cè)目標(biāo)邊緣,為了驗(yàn)證改進(jìn)的Canny算法良好的抗噪性,在噪聲環(huán)境下進(jìn)行實(shí)驗(yàn)和仿真,通過(guò)與融合算法和經(jīng)典Canny算法的實(shí)驗(yàn)效果對(duì)比,改進(jìn)的Canny算法取得了良好的抗噪表現(xiàn),在自適應(yīng)的基礎(chǔ)上抗噪性更優(yōu),可以應(yīng)用于工業(yè)機(jī)器人視覺(jué)中,具有良好的使用價(jià)值。
參考文獻(xiàn):
[1]鄭子華,陳家禎,葉鋒.基于曲率估計(jì)的Canny邊緣檢測(cè)算法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(12):148154.
[2]童勝杰,江明,焦傳佳.一種改進(jìn)工件邊緣檢測(cè)方法的研究[J].電子測(cè)量與儀器學(xué)報(bào),2021,35(1):128134.
[3]徐武,張強(qiáng),王欣達(dá),等.基于改進(jìn)Canny算子的圖像邊緣檢測(cè)方法[J].激光雜志,2022,43(4):103108.
[4]杜緒偉,陳東,馬兆昆,等.基于Canny算子的改進(jìn)圖像邊緣檢測(cè)算法[J].計(jì)算機(jī)與數(shù)字工程,2022,50(2):410413+457.
[5]王鑫剛,田軍委,于亞琳,等.改進(jìn)Canny算法的紅外人臉圖像邊緣輪廓提取[J].應(yīng)用光學(xué),2023,44(1):6170.
[6]唐守鋒,翟少奇,仝光明,等.改進(jìn)Canny算子與形態(tài)學(xué)融合的邊緣檢測(cè)[J].計(jì)算機(jī)工程與設(shè)計(jì),2023,44(1):224231.
[7]LV Dong,PAN Shenghui.ImprovedCannyedgedetection algorithmbasedondeeplearning[J].ScientificJournal ofIntelligentSystemsResearch,2021,3(2):114115.
[8]張潔玉.基于圖像分塊的局部閾值二值化方法[J].計(jì)算機(jī)應(yīng)用,2017,37(03):827831.
[9]王詩(shī)宇,林滸,孫一蘭,等.一種改進(jìn)的Canny算子在機(jī)器人視覺(jué)系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(3):144149.
[10]胡松,黃致遠(yuǎn),鄧?yán)?,?Canny算子在圖像優(yōu)化處理中的優(yōu)化研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2020,30(10):0611.
[11]WOO S,PARK J,LEE J Y,et al.CBAM:convolutional block attention module[C]∥European Conference on Computer Vision.Cham:Springer,2018:319.
[12]RONG W,LI Z,ZHANG W,et al.An improved Canny edge detection algorithm[C].2014 IEEE international conference on mechatronics and automation.Beijing:IEEE,2014:577582.
[13]李慶忠,劉洋.基于改進(jìn)Canny算子的圖像弱邊緣檢測(cè)算法[J].計(jì)算機(jī)應(yīng)用研究,2020,37(S1):361363.
作者簡(jiǎn)介:朱林楠(1995— ),女,漢族,遼寧葫蘆島人,碩士研究生,助教,研究方向:人工智能、圖像處理。