孫海英,王曉云,張航
(沈陽理工大學,遼寧 沈陽 110159)
邊緣檢測的實質(zhì)是采用某一邊緣檢測算法來提取出清晰的邊緣細節(jié)信息。傳統(tǒng)的邊緣檢測算法大部分依靠于微分計算:首先通過平滑來濾除圖像中的椒鹽噪聲、高斯噪聲等噪聲干擾;其次通過一階微分(索貝爾邊緣算子、羅伯茨邊緣算子、普利維特邊緣算子)或二階微分(拉普拉斯邊緣算子、高斯-拉普拉斯邊緣算子、Canny邊緣算子)進行卷積運算,求得兩個最與眾不同的點中(一階導數(shù)為零或者二階導數(shù)為零的點)其一即可,再次選取合適的高低閾值以此來提取邊緣細節(jié)[1]。
齒輪零件邊緣不規(guī)則,使用傳統(tǒng)零件檢測工具,人工測量精度低,而使用精密儀器檢測,易受人工不熟練以及外界環(huán)境光照噪聲的影響,另外,采用傳統(tǒng)的Canny邊緣檢測算法不止受噪聲干擾,還受不均勻光照影響,很容易丟失許多邊緣細節(jié)。對此很多學者提出了對Canny算子的改進方法:李凌采用形態(tài)學濾波去噪,灰度均值和方差計算高低閾值[2];劉素行采用自適應中值濾波去噪,最大類間方差法計算高低閾值[3];段志達等人采用基于小波變換的同態(tài)濾波去噪,迭代法取高閾值,基于模擬退火粒子群法的最大類間方差法取低閾值[4];Tengyan Hu等[5]選擇合適的高斯濾波系數(shù)去噪,最大類間方差法計算高低閾值。但以上學者均未考慮光照的影響。本研究做了改進,首先使光照均衡化,運用多尺度高斯函數(shù)去除光照分量,再構(gòu)造二維伽馬函數(shù)對亮度分量進行亮度改變,提高圖像質(zhì)量[6];然后改進基于Canny算子的齒輪邊緣檢測方法,運用中值濾波對圖像進行模糊處理,Sobel算子從水平和豎直兩個方向分別計算梯度大小,插值法去除非極大值,獲取局部的極大值,雙閾值法人工確定高低閾值,確定圖像的邊緣細節(jié),抑制了噪聲的同時,提高了檢測精度。
Canny邊緣算子屬于先平滑后求導,既能過濾椒鹽噪聲、高斯噪聲等大部分噪聲,又能抑制虛假邊緣,使其保存較為完整的邊緣信息。其具體步驟如下:
(1)用高斯濾波器平滑圖像
二維為高斯函數(shù):
式中,σ為方差,其取值決定于圖像的平滑程度。
在其任意方向上的一階導數(shù)與原圖像像素做卷積。
(2)采用3*3模板的Sobel算子來計算梯度的幅值和方向;
水平梯度方向:
式中,f(x,y)為原始圖像。
豎直梯度方向:
圖像中每個像素梯度的大小:
梯度方向:
梯度方向通常垂直于邊緣方向。
(3)采用4個方向模板(0°、45°、90°、135°)對梯度幅值進行非極大值抑制。
其目的不是抑制非極大值的像素值,而是為了得到局部的極大值點,將它設置為0,使其邊緣得到細化,更為精確的提取出來。
(4)用雙閾值算法確定高低閾值。
假若設置兩個閾值tmin和tmax,分析全部像素值,梯度大小大于tmax的像素點被認為確定邊緣的像素,被保存下來;梯度小于tmin的像素點被認為一定不屬于邊緣,被放棄;對于梯度大小介于tmin和tmax之間的像素點,若與確定邊緣的像素點能夠與之相連接,則他們一定屬于邊緣的一部分,否則,它們也會被放棄。
傳統(tǒng)Canny邊緣檢測算子雖然很少誤認偽邊緣像素點,且抑制了虛假邊緣的產(chǎn)生,定位精度高,但易受噪聲、不均勻光照的影響,針對上述不足進行了的改進:先采用二維伽馬函數(shù)使光照均衡化,再通過中值濾波去噪平滑圖像,Sobel邊緣算子計算梯度的幅值和方向,插值法去除梯度的非極大值,雙閾值法確定高低閾值。
圖像采集后,光線強度過強,或者光線強度不足,很容易造成極其重要的邊緣細節(jié)信息輕則掩埋重則丟失,都會造成細節(jié)檢測失敗,這就需要光照均衡化,改善圖像質(zhì)量。
2.1.1 直方圖均衡化
把采集的圖像集中密集的某個灰度值賦予全部范圍的均值分布構(gòu)建的灰度直方圖。其具體步驟:
(1)統(tǒng)計采集圖像后的分布的各個灰度級,并計算其灰度分布概率hs。
其中圖像f總體的像素個數(shù):
(2)計算累計分布函數(shù)hp,由該函數(shù)求出新原兩者圖像之間的灰度值的映射關(guān)系。
傳統(tǒng)的直方圖均衡化雖然提高了圖像對比度,但是光照強的地方被曝光很嚴重,如圖1所示。
圖1 直方圖均衡化
2.1.2 二維伽馬函數(shù)均衡化
采用二維伽馬函數(shù)使光照均衡化,其步驟為:
(1)利用Retinex去霧算法中的多尺度高斯函數(shù)提取光照分量;
高斯函數(shù)G(x,y):
光照分量I(x,y):
(2)構(gòu)造一種二維伽馬函數(shù)O(x,y)針對原圖HSV空間的光照(V)分量進行亮度改變,并且自動調(diào)整其各個數(shù)值,使其在光線過強導致曝光的區(qū)域降低其光照分量的數(shù)值,同時也提升光線不足導致模糊區(qū)域的光照分量的數(shù)值。
式中γ為提升光照強度的指數(shù),m為光照亮度的平均值。
校正過后,亮度過低區(qū)域得到提升,亮度過強區(qū)域得到衰減,如圖2所示。
圖2 二維伽馬函數(shù)均衡化
在其光照均衡化的基礎(chǔ)上,圖像邊緣檢測必須滿足兩個先決條件:(1)非常有效地抑制甚至消除噪聲;(2)確定邊緣細節(jié),提取較為精確的邊緣信息。
傳統(tǒng)的Canny邊緣檢測算法因第一步高斯濾波平滑圖像,所以易受噪聲干擾,容易出現(xiàn)邊緣丟失和虛假邊緣,因此分別選取消除椒鹽噪聲非常有效的中值濾波和具有保存良好邊緣信息且消除噪聲良好的雙邊濾波平滑圖像。
精確定位取決于第三步對非極大值的選取進行抑制,確定好邊緣才會更為精確的定位提取,如若第一步去噪的同時就抑制了虛假邊緣,則第三步確定邊緣,提高檢測精度尤其重要,所以分別選取原方法即使用四個方向模板以及插值法分別對非極大值抑制。
其余兩步仍選用原來方法即Sobel邊緣算子計算梯度的幅值和方向(其余五種算子不及它平滑圖像效果好)和雙閾值法確定高低閾值,分別兩兩對應,共四種方案,擇其選取最優(yōu)。
2.2.1 濾波平滑圖像
(1)中值濾波
中值濾波指的是依次尋找原圖像中的各個像素點,將像素值從小到大進行排序,快速找到中值點,并將其賦值給全部的像素點。中值濾波的窗口容易造成噪聲和邊緣細節(jié)相矛盾,若窗口變小,邊緣信息很容易得以保存,但噪聲很多過濾不掉,圖像變得更為模糊,反之窗口變大,噪聲很容易過濾甚至消除掉,但平滑圖像效果差,很多邊緣細節(jié)丟失。
(2)雙邊濾波
雙邊濾波器是由高斯濾波器和阿爾法-截尾均值濾波器構(gòu)成,其前者因考慮二維空間中的兩點之間的絕對距離則具有保存邊緣細節(jié)功能,即空間域核,后者因考慮像素之間的灰度值差值大小問題則具有能夠過濾甚至消除噪聲的功能,即值域核。
雙邊濾波器的數(shù)據(jù)公式:
式中,(i,j)為鄰域內(nèi)某像素點坐標值,(k,l)為中心像素點坐標值,w為權(quán)重系數(shù)。
權(quán)重系數(shù):
空間域核:
值域核:
權(quán)重系數(shù)w分為空間域核權(quán)重系數(shù)wd和值域核權(quán)重系數(shù)wr兩部分,對于非邊緣區(qū)域,值域核權(quán)重系數(shù)wr約等于1,它不起作用,而空間域核權(quán)重系數(shù)wd平滑圖像;對于邊緣區(qū)域,值域核權(quán)重系數(shù)wr約等于0,保留原有清晰的邊緣細節(jié)。
2.2.2 Sobel邊緣算子計算梯度的幅值和方向
2*2模板的Roberts和3*3模板的Sobel邊緣算子都能對邊緣產(chǎn)生很強烈的響應,但相比Roberts來說,Sobel產(chǎn)生較寬而且更加強烈的邊緣響應,而且面對圓或者橢圓等具有彎曲特點的邊緣敏感度很高。求邊緣任一處梯度的大小和方向時,Sobel算子就是從水平和豎直兩個方向與像素點做卷積運算,與此同時很好地抑制了噪聲。
2.2.3 對非極大值抑制
(1)四個方向模板
非極大值抑制在從原本水平和豎直兩個方向增加到四個梯度方向(0°、45°、90°、135°)上進行的,0°代表左、右兩個方向相鄰的像素,45°代表右上、左下兩個方向相鄰的像素,90°代表上、下兩個方向的像素,135°代表左上、右下兩個方向的像素來尋找極大值點,沿著其梯度方向線上的兩個像素值比中心像素點的像素值小,則中心像素點為極大值點,將其設置為0。
(2)插值法
邊緣的梯度方向不一定完全沿著0°、45°、90°、135°四個方向,倘若梯度的極大值偏離這四個方向,就會找不到該極大值點,則尋找到的極大值點偏小,造成邊緣細節(jié)不完整,因此插值顯得尤為重要,能夠快速尋找到在該梯度方向上的最吻合的像素點對應的兩邊的像素值。
2.2.4 雙閾值法確定高低閾值
閾值的選取在圖像的邊緣檢測中起到極為重要的作用,直接決定邊緣圖像質(zhì)量的好壞。若選取單一閾值會因灰度不均、噪聲干擾等種種因素消除微弱細小的邊緣,導致邊緣不連貫。雙閾值取代單閾值需人為設置一個高閾值和一個低閾值區(qū)分邊緣強弱,不僅使圖像邊緣更為連續(xù),又能夠極大程度地消除噪聲,從而保證邊緣定位的準確性,同時多次調(diào)參,尋找最佳高低閾值。
為清楚明顯對比傳統(tǒng)與改進Canny邊緣檢測算法,給出其步驟,見表1。
表1 傳統(tǒng)與改進Canny邊緣檢測算法步驟
分別應用傳統(tǒng)及改進Canny算子的齒輪邊緣檢測算法進行實驗,運行結(jié)果如圖3、圖4所示。
圖3 高斯濾波
圖4 改進Canny邊緣檢測算子
從去噪角度看,圖3高斯濾波與圖4(b)中值濾波、圖4(d)雙邊濾波相比,圖4(b)和圖4(d)的邊緣輪廓更為清晰,由此可見去除噪聲,中值濾波和雙邊濾波效果都很好,但圖4(d)雙邊濾波有更為清楚的虛假邊緣的出現(xiàn),容易把非邊緣點視為邊緣點。
從確定好邊緣、精確定位角度看,在中值濾波中,圖4(b)四個方向模板(0°、45°、90°、135°)和圖4(a)插值法分別對非極大值抑制,效果都很好,雖然插值法篩選的邊緣像素點比原方法少,會丟失一部分細節(jié),但插值法產(chǎn)生的邊緣寬度大于1的可能性要小,因此檢測精度更高。同理雙邊濾波圖4(d)和圖4(c)相比也如此。
綜合可見,用中值濾波平滑圖像,去除椒鹽噪聲的同時,非邊緣點誤認為邊緣點的概率也逐漸減少;使用3*3模板的Sobel邊緣算子計算梯度的幅值和方向,抗噪性能強;利用插值法對非極大值抑制,可快速準確地保留極大值點;雙閾值法確定高低閾值,能快速檢測是否為邊緣像素點,使其連接成邊緣。此方法與傳統(tǒng)Canny方法相比,其得到邊緣輪廓清晰,虛假邊緣明顯減少,檢測精度更高。
對傳統(tǒng)Canny邊緣檢測算法進行描述,以齒輪為模型分析比較了其中的優(yōu)缺點,在其光照均衡化,提高齒輪圖像質(zhì)量的基礎(chǔ)上,改進基于Canny算子的齒輪邊緣檢測算法,通過不同濾波去噪以及不同方式對非極大值抑制確定邊緣實驗得出,運用中值濾波平滑圖像,Sobel算子計算梯度的大小和方向,插值法對非極大值抑制,雙閾值法連接和檢測邊緣,虛假邊緣少,抗噪能力強,檢測精度高。
初始時采集到的圖像只是二維的,而從三維到二維的投影成像受椒鹽噪聲、高斯噪聲等噪聲、不均勻光照的影響,導致一些邊緣細節(jié)的缺失。在往后研究中,在光照均衡化的基礎(chǔ)上,針對某一零件圖像需進一步改進原有邊緣檢測算法,使其抗噪性能和檢測精度之間的矛盾達到更好地平衡狀態(tài),邊緣輪廓更為清晰。與此同時,提高機器視覺尺寸檢測系統(tǒng)的智能化,將某一特定指定的零件改為任意零件檢測,避免不同對象采用不同邊緣檢測算法。