杜緒偉 陳 東 馬兆昆 劉方全
(1.青島科技大學(xué)機(jī)電工程學(xué)院 青島 266061)(2.中車青島四方機(jī)車車輛股份有限公司 青島 266111)
視覺分揀的本質(zhì)就是通過機(jī)器視覺來替代人眼來進(jìn)行判斷和測量,圖像邊緣檢測作為數(shù)字圖像處理技術(shù)的重要組成部分,已廣泛應(yīng)用于機(jī)器人、目標(biāo)定位和視覺導(dǎo)航等領(lǐng)域[1]。在工業(yè)化中為了實(shí)現(xiàn)對工件的判斷,通常需要對工件進(jìn)行邊緣檢測來獲取其具體信息。邊緣保存了圖像大量的重要信息,而且邊緣檢測也是最近機(jī)器視覺領(lǐng)域的重要課題,運(yùn)用也越來越廣泛。傳統(tǒng)的邊緣檢測算法,如Sobel 算子[2]、Roberts 算子[3]、Prewitt 算子[4]、Kirsch 算子[5]等雖然實(shí)施起來比較方便,但是這些算子檢測的結(jié)果都達(dá)不到既定要求。Laplacian 算子[6]雖然在精度方面做出了很大的改進(jìn),但是對于噪聲還是比較敏感,因此在處理圖像的實(shí)際效果中并不明顯。John Canny[7]在1986年提出最佳邊緣檢測算子的三個(gè)準(zhǔn)則并在此基礎(chǔ)上提出了Canny 算法,有效平衡了定位精度、最小響應(yīng)、檢測時(shí)間的邊緣檢測最優(yōu)標(biāo)準(zhǔn)。傳統(tǒng)的Canny 算法雖然被普遍的運(yùn)用,但是算法在濾波部分采用傳統(tǒng)的高斯濾波來進(jìn)行預(yù)處理,在清除噪聲的過程中會(huì)過度清除掉圖像的邊緣信息,造成部分邊緣信息丟失進(jìn)而降低邊緣檢測的精度,而且固定的雙閾值也導(dǎo)致了該算法的適應(yīng)性較差[8]。所以傳統(tǒng)的Canny算法還需要進(jìn)一步的改進(jìn)才能得到更好的運(yùn)用。
Canny 基于邊緣檢測提出了三個(gè)判斷準(zhǔn)則[9],而他也在此基礎(chǔ)上進(jìn)一步發(fā)展創(chuàng)造出了Canny 算法。Canny 算法采用二維零均值高斯函數(shù),并對圖像矩陣執(zhí)行卷積運(yùn)算,實(shí)現(xiàn)圖像的消除噪聲和平滑處理。選取的高斯函數(shù)的表達(dá)式為
Canny算法采用2×2的模板來計(jì)算灰度圖像梯度[10]。通過其在X方向、Y方向的像素的一階導(dǎo)數(shù),可以確定像素的梯度幅值。
雖然傳統(tǒng)的Canny 算法得到了廣泛的運(yùn)用,但是其仍然存在很大的問題[11]。
1)基于2×2 的鄰域進(jìn)行計(jì)算,對噪音比較敏感,而且容易丟失邊緣信息并且易檢測出大量干擾信息,影響檢測精度;
2)采用固定的雙閾值,致使算法處理邊緣分布不同的圖像時(shí)不能自主改變,適應(yīng)性不強(qiáng)。
傳統(tǒng)的Canny 算法在濾波部分采用高斯濾波來進(jìn)行預(yù)處理,在清除噪聲的過程中會(huì)過度清除掉了圖像的邊緣信息,導(dǎo)致部分邊緣信息丟失[12]。針對這一問題本文運(yùn)用雙邊濾波來代替高斯濾波進(jìn)行圖像預(yù)處理,這樣不僅可以有效地去除噪聲還可以保留更多有用的邊緣信息。運(yùn)用Ostu 法來進(jìn)行閾值分割,而后融合形態(tài)學(xué)梯度思想進(jìn)行Canny 算子邊緣檢測,來獲得邊緣圖像。
雙邊濾波[13]是Tomasi在1998 年提出的一種非線性濾波方法。它不僅可以保持邊緣信息還可以達(dá)到降噪平滑的效果。與高斯濾波相似,雙邊濾波對每個(gè)像素及其領(lǐng)域內(nèi)的像素進(jìn)行加權(quán)平均。雙邊濾波是兩個(gè)高斯濾波的結(jié)合:一個(gè)計(jì)算圖像空間鄰近度的權(quán)值[14];另一個(gè)計(jì)算圖像像素值相似度的權(quán)值。雙邊濾波由空間權(quán)重與相似權(quán)重組成。
空間權(quán)重:與像素的位置有關(guān)系,為像素之間的距離,定義為
最大類間方差法將兩類的類間方差作為判別準(zhǔn)則,即σ2的最大值便為最佳選擇的閾值T。
形態(tài)學(xué)一般表示生物學(xué)的一個(gè)分支,數(shù)學(xué)形態(tài)學(xué)便是從生物形態(tài)學(xué)發(fā)展而來。數(shù)學(xué)形態(tài)學(xué)作為從圖像中提取表達(dá)和描繪區(qū)域形狀的有用圖像分量的工具,是由一組形態(tài)學(xué)代數(shù)運(yùn)算組成[16]。最基本的形態(tài)學(xué)算子有膨脹、腐蝕、開運(yùn)算和閉運(yùn)算四種。
一般二值圖像中的形態(tài)學(xué):
作為Z2中的集合A和B,B對A的腐蝕定義為
運(yùn)用這些算子或者組合可以進(jìn)行圖象形狀和結(jié)構(gòu)的分析及處理[19]。融合了形態(tài)學(xué)梯度思想,通過腐蝕和膨脹處理閾值分割后的圖像,而后將這兩幅二值圖像取差集,進(jìn)而得到形態(tài)學(xué)梯度圖[20]。如圖1 所示形態(tài)學(xué)梯度處理不僅清除了圖像中的小的噪聲干擾,還可以填補(bǔ)物體中的空洞進(jìn)而提高檢測精度。將差值圖像和原始濾波圖像求交集圖像便可以得到具有更精確邊緣的灰度圖。
圖1 形態(tài)學(xué)處理
為得到改進(jìn)后的Canny 算法的效果,本文用Visual Studio2015 軟件利用C#語言編程配置0pencvsharp 在Windows 操作系統(tǒng)里進(jìn)行驗(yàn)證。分別用兩個(gè)不同零件進(jìn)行實(shí)驗(yàn)得到兩組實(shí)驗(yàn)結(jié)果如圖2、圖3所示。
圖2 第一組實(shí)驗(yàn)圖像
圖3 第二組實(shí)驗(yàn)圖像
總體來說,本文所采用的改進(jìn)的Canny 邊緣檢測算法與傳統(tǒng)的算法相比在清除噪聲和保留更多的邊緣信息上做的更突出。由于傳統(tǒng)的算法對于噪聲的比較敏感,造成圖像上會(huì)有各種干擾因素的出現(xiàn),影響到邊緣信息的精確度進(jìn)而導(dǎo)致檢測的結(jié)果不理想。而改進(jìn)后的算法可以盡量避免噪聲并精確地得到最優(yōu)化的邊緣信息。由于新算法只須要處理圖像中的一小部分區(qū)域,所以處理效率得到提升。
邊緣檢測一直是視覺領(lǐng)域的研究熱點(diǎn),研究方法也有很多。本文在研究傳統(tǒng)Canny 算法的基礎(chǔ)之上,對其噪聲干擾比較大、閾值適應(yīng)性比較差等方面做出了改進(jìn)。
1)通過利用雙邊濾波替代了高斯濾波,避免了高斯濾波使其即保持邊緣信息也可以達(dá)到降噪平滑的效果,增強(qiáng)了抑制噪聲能力。
2)利用最大類間方差法進(jìn)行閾值分割,使目標(biāo)和背景分離更加準(zhǔn)確,減小了因背景因素影響而產(chǎn)生的誤差。
3)用融合形態(tài)學(xué)梯度來進(jìn)一步使邊緣信息更加完善來改進(jìn)Canny 算法,使圖像邊緣提取的精確度更高。