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