摘 要: 提出了一種基于數(shù)字圖像處理的邊緣檢測算法,分別利用Sobel算子和Canny算子對預處理后的圖像進行邊緣檢測,將所得圖像進行圖像相加,并用Matlab進行仿真。結果表明,該算法比單一邊緣檢測算子檢測效果要好,并具有良好的檢測精度。
關鍵詞: 數(shù)字圖像處理;橡膠圈;自適應中值濾波;Sobel算子;Canny算子
圖像的邊緣是指圖像灰度值的不連續(xù)點或變化劇烈的點的集合,橡膠圈邊緣檢測是要提取缺陷和背景的邊界線。工業(yè)用橡膠圈在生產(chǎn)過程中不可避免地會出現(xiàn)各種各樣的缺陷,例如切割不平、厚度不均、毛邊和氣泡等。本文以橡膠圈的氣泡缺陷為例,提出了一種基于數(shù)字圖像處理的混合邊緣檢測算法,并給出了分析過程與實驗結果[1]。
1 算法研究
目標圖像一般都含有噪聲,所以在邊緣檢測前必須進行圖像預處理以消除噪聲,然后再對其分別用Sobel算子和Canny算子進行邊緣檢測,最后把兩者結果相加,即得到較好的檢測效果。算法框圖如圖1所示。
1.1 圖像預處理
橡膠圈圖像在拍攝、存儲、傳送的過程中會受到噪聲的污染,從而導致圖像出現(xiàn)失真、模糊等退化現(xiàn)象。常用的濾波算法有均值濾波、維納濾波、自適應中值濾波等。實驗證明,自適應中值濾波能有效去除橡膠圈圖像噪聲,更為重要的是,在去除噪聲的同時,自適應中值濾波還能保護圖像細節(jié)[2]。所以本文采用自適應中值濾波來進行圖像預處理。實驗效果如圖2所示。
1.2 邊緣檢測
1.2.1 Sobel算子邊緣檢測
基于微分方法的邊緣檢測算子包括Roberts算子、Prewitt算子、Sobel算子、Laplacian算子、LoG算子等,其中前三者是基于一階導數(shù)的邊緣檢測算子,后兩者是基于二階導數(shù)的邊緣檢測算子。在算法實現(xiàn)過程中,通過模板與圖像中的每個像素點做卷積和運算,然后選取合適的閾值以提取邊緣。一階導數(shù)和二階導數(shù)的不同在于,一階導數(shù)認為最大值對應邊緣位置,而二階導數(shù)則以過零點對應邊緣位置。
基于微分方法的邊緣檢測算子中,Roberts算子采用對角線方向相鄰兩像素之差近似梯度幅值檢測邊緣,檢測水平和垂直邊緣效果好于斜向邊緣,定位精度較高,但對噪聲敏感。Prewitt算子和Sobel算子是實踐中最常用的兩種算子,兩者都是利用像素點上下、左右鄰點的灰度加權算法,根據(jù)在邊緣點處達到極值這一原理來檢測邊緣。Prewitt算子實現(xiàn)起來更為簡單,但在抑制噪聲方面不如Sobel算子。Sobel算子能夠較為精確地檢測出邊緣點,對噪聲具有平滑作用,但檢測出的邊緣較寬。
Laplacian算子是一種線性二階微分算子,對噪聲非常敏感,一般不直接用于邊緣檢測。LoG算子是Laplacian算子的改進方式,它選用Gaussian函數(shù)對圖像進行平滑濾波,然后對平滑后的圖像進行Laplacian運算。使用Laplacian算子是為了提供一幅能確定邊緣位置的圖像。
Sobel算子是一組方向算子,從不同的方向檢測邊緣。方向算子是利用一組模板對圖像中的同一像素求卷積,選取其中最大的值作為邊緣強度,而將與之對應的方向作為邊緣方向。
其梯度為:
一幅圖像的3×3區(qū)域如圖3所示,其中z是圖像的灰度值,則Sobel算子模板如圖4所示,用以實現(xiàn)上述梯度公式。
Prewitt算子是平均濾波,而Sobel算子是加權平均濾波。在Prewitt算子中像素鄰域與當前像素產(chǎn)生的影響是等價的,而Sobel算子中鄰域像素與當前像素的距離有不同的權值,一般距離越小,權值越大。Sobel算子的權值2意味著通過增加中心點的重要性來達到一些平滑效果,由于引入了平均因素,因而對圖像中的隨機噪聲有一定的平滑作用。Sobel算子是相隔兩行或兩列之差分,所以邊緣兩側元素得到了增強,邊緣顯得粗而亮[3]。
實驗證明,當閾值設為0.017時,用Sobel算子對橡膠圈缺陷檢測效果最好。而上述其他算子均不能有效檢測出橡膠圈圖像的缺陷邊緣。
1.2.2 Canny算子邊緣檢測
在圖像邊緣檢測中,抑制噪聲和邊緣精確定位是無法同時滿足的,邊緣檢測算法通過平滑濾波去除圖像噪聲的同時,也增加了邊緣定位的不確定性;反之,提高邊緣檢測算子對邊緣的敏感性的同時,也提高了對噪聲的敏感性。Canny算子在抗噪聲干擾和精確定位之間尋求最佳折中方案[4]。
Canny算子邊緣檢測的原理與上述幾個不同,它不是通過微分算子檢測邊緣,而是在滿足一定約束條件下推導出邊緣檢測最優(yōu)化算子。
Canny算子邊緣檢測的基本原理是:采用二維高斯函數(shù)的任意方向上的一階導數(shù)為噪聲濾波器,通過與圖像卷積進行濾波;然后對濾波后的圖像尋找圖像梯度的局部極大值,以確定圖像邊緣。Canny算子是一種最優(yōu)邊緣檢測算子,其實現(xiàn)檢測圖像邊緣的步驟與方法如下:(1)選擇一定的高斯濾波器平滑圖像,抑制圖像噪聲,然后計算濾波后圖像梯度的幅值和方向;(2)對梯度幅值應用非極值抑制,尋找圖像梯度中的局部極值點,把其他非局部極值點置零以得到細化的邊緣,再用雙閾值算法檢測和連接邊緣,實現(xiàn)邊緣提取。
Canny算子邊緣檢測的三條準則是[5]:
(1)低誤判率,既要盡可能地檢查出真實的邊緣,同時又要盡量避免檢測中出現(xiàn)的虛假邊緣;
(2)高定位精度,即檢測出的邊緣位置要盡量接近真正的邊緣位置;
(3)對同一邊緣要有低的響應次數(shù),即同一邊緣產(chǎn)生多個響應的概率要低[6]。
實驗證明,當閾值設為0.08時,用Canny算子對橡膠圈缺陷檢測效果最好。
1.2.3 圖像相加
Sobel算子對灰度漸變的圖像處理較好,這點在橡膠圈缺陷檢測中得到了驗證。Sobel算子對垂直和水平方向上的邊緣有較好的檢測結果,但對其他方向的檢測效果一般,且對邊緣的定位不是很準確,圖像的邊界寬度要大于或等于2個像素。
Canny算子雖然是基于最優(yōu)化思想推出的邊緣檢測算子,但實際效果并不一定最優(yōu)。Canny算子也會將一些高頻邊緣平滑掉,造成邊緣丟失[4]。
橡膠圈缺陷的灰度和橡膠圈的灰度非常接近,對比度較低,邊緣兩側的灰度變化不明顯。經(jīng)過大量實驗,發(fā)現(xiàn)Sobel算子和Canny算子對橡膠圈的缺陷檢測有較好的效果,但又有些瑕疵,如果把二者檢測結果相加,可以使兩者的優(yōu)勢互補,能大大提高邊緣檢測的效果,取得令人滿意的結果。
2 實驗結果與分析
圖5(a)為Sobel算子的邊緣檢測結果,圖5(b)為Canny算子的邊緣檢測結果,圖6為兩者相加的結果??梢钥闯?,由于橡膠圈缺陷部分和背景部分灰度非常相近,邊緣檢測難度較大,因此盡管分別采用了對灰度漸變處理效果較好的Sobel算子和最優(yōu)邊緣檢測算子——Canny算子,但邊緣檢測的結果仍不是很理想。而圖6所示的混合邊緣檢測結果要明顯優(yōu)于圖5,缺陷邊緣被清晰地分割出來,并且沒有出現(xiàn)受到噪聲干擾的偽邊緣。
本文討論了橡膠圈缺陷檢測算法,分析了幾種常用算法的優(yōu)缺點,提出了一種基于Sobel算子和Canny算子的混合邊緣檢測算法,并用Matlab軟件進行了實驗仿真,證明了其檢測精度要高于傳統(tǒng)的邊緣檢測算子。
參考文獻
[1] 劉春,利新琴,魯昌華,等. 密封橡膠圈凸點缺陷檢測的研究[J]. 電子測量與儀器學報,2008(增刊):178-181.
[2] GONZALEZ R C, WOODS R E. 數(shù)字圖像處理 [M]. 阮秒琦,阮寧智,譯.北京:電子工業(yè)出版社,2007.
[3] 蔡立晶,蔡立娟,楊立.基于指紋圖像邊緣檢測算法的比較研究[J]. 中國新技術新產(chǎn)品,2009(1):3-4.
[4] 姚敏.數(shù)字圖像處理[M].北京:機械工業(yè)出版社,2006.
[5] 秦襄培.Matlab圖像處理與界面編程寶典[M].北京:電子工業(yè)出版社,2009.
[6] 田巖,彭復原. 數(shù)字圖像處理與分析[M].武漢:華中科技大學出版社,2009.