,,,
(南京理工大學(xué) 機械工程學(xué)院,南京 210094)
軸類零件在機械設(shè)備中有傳遞動力的作用,機械設(shè)備的使用性能直接受到軸類零件幾何尺寸精度的影響[1]。因此,生產(chǎn)企業(yè)對軸類零件的加工制造和檢測精度提出了較高的要求。對于軸類零件,接觸式測量方法可能引起零件表面的損傷和工件變形。隨著數(shù)字圖像處理理論和方法的不斷發(fā)展和完善,利用機器視覺測量方法對軸類零件進行檢測已經(jīng)切實可行[2],并且該方法精度高、無接觸、實時性好。因為邊緣是圖像最基本的特征,包含了被測物體的尺寸和位置信息,所以圖像邊緣檢測是機器視覺測量的重要基礎(chǔ)。目前,傳統(tǒng)的像素級邊緣檢測算法已經(jīng)滿足不了檢測精度的需要。亞像素邊緣檢測算法一般分為3類:曲線擬合法[3]、插值法[4]和矩方法[5]。2011 年,陳靜等[6]提出了一種三次多項式擬合的圖像邊緣檢測算法,該算法的計算時間較少。2008年,HERMOSILLA等[7]將ENO(基本無振蕩)插值與梯度檢測算法結(jié)合起來進行邊緣檢測。Bin等利用低階徑向數(shù)及其矩量的旋轉(zhuǎn)不變性,提出了一種基于OFMM(正交傅里葉-梅林矩法)的方法。
2013年,TRUJILLO-PINO等[8]提出基于局部區(qū)域效應(yīng)的高精度邊緣檢測算法,該方法利用邊緣點所在鄰域的灰度信息計算邊緣的亞像素位置,在理想圖像的邊緣檢測中的精度非常高,可以完全地檢測出邊緣信息,包括位置、方向以及曲率等,并提出了對于低噪聲圖像的改進模型,但該方法對高噪聲工件圖像的邊緣檢測效果不佳。為此,對于高噪聲圖像,可以在基于鄰域的亞像素邊緣檢測算法的基礎(chǔ)上,通過迭代、復(fù)原算法來獲得更精確的亞像素邊緣。此外,采用文獻[8]的方法進行邊緣檢測時,需要人為反復(fù)設(shè)定并調(diào)整閾值,降低了工作效率。筆者對此進行了改進,利用大津閾值(Otsu)算法[9]自動檢測,得到最優(yōu)梯度閾值。文獻[8]在求取亞像素位置時,直接用曲線的截距有一定誤差,故采用改進算法。
一條邊緣將如圖1所示像素分為像素值為A和B的兩部分,為符合一般邊緣的性質(zhì),將這條邊緣近似為多項式y(tǒng)=a+bx+cx2,坐標(biāo)系的原點在像素(i,j)的中心,假設(shè)a,b,c和A,B的值未知。而在一幅真實的圖像中,像素(i,j)鄰域像素的灰度值是可以讀取的,可以根據(jù)實際像素值估算出A和B的值,從而求得邊緣參數(shù)a,b,c。
圖1 理想邊緣線示意
對于像素(i,j),基于最初的假設(shè),其像素值表達式為
(1)
式中:Pi,j為像素(i,j)在邊緣線下方的面積。
當(dāng)x=0處的曲線斜率在0~1之間時,為了準確獲得邊緣的亞像素位置、邊緣的方向、曲率以及邊緣兩側(cè)灰度值的變化,用以像素(i,j)為中心的5×3鄰域來計算各個參數(shù)的值。設(shè)SL,SM,SR為所選區(qū)域左列,中間列和右列像素值的總和,在一幅真實的圖像中,像素(i,j)鄰域像素的灰度值是可以讀取的,可以根據(jù)實際像素值估算出A和B的值以及SL,SM,SR的值,從而求得邊緣參數(shù)a,b,c。
由式(1)的原理可得
(2)
式中:L,M,R表示左列、中間列和右列邊緣下的面積。
(3)
聯(lián)立方程可解得邊緣曲線參數(shù)
(4)
用區(qū)域?qū)?個像素值來估計A和B的值,因為與中心像素的距離不同,所以取的3個像素值對中間像素的影響程度不同。需要根據(jù)實際圖像的品質(zhì)來設(shè)置合適的標(biāo)準差,從而建立高斯函數(shù),計算各像素所占的權(quán)重,設(shè)3個像素的權(quán)重分別為α,β,γ,則
A=βFi,j+2+γFi+1,j+2+αFi+1,j+1
(5)
B=βFi,j-2+γFi-1,j-2+αFi-1,j-1
(6)
若直接采用曲線的截距計算亞像素坐標(biāo)的位置,則在如圖2所示的情況下,S1位置已不在像素內(nèi),所以用S1作為亞像素位置已不合理。邊緣曲線方程已知,原點和S2的連線與曲線在S2位置的切線垂直,可以根據(jù)此關(guān)系求得S2的坐標(biāo)。
圖2 亞像素位置計算原理示意
當(dāng)邊緣斜率在-1~0之間時,分別用左下角和右上角的3個像素值估計A,B的值,所以邊緣斜率在-1~1范圍時,A,B的通用表達式為
A=βFi,j+2+γFi+m,j+2+αFi+m,j+1
(7)
B=βFi,j-2+γFi-m,j-2+αFi-m,j-1
(8)
式中:當(dāng)斜率不小于0時,m取1;當(dāng)斜率小于0時,m取-1。
Otsu法也稱為大津閾值法或最大類間方差法,該方法利用圖像的灰度值,以目標(biāo)和背景的類間方差為測度準則,取最佳閾值時,兩部分之間的差別應(yīng)該是最大的。前景和背景之間的類間方差如果越大,就說明構(gòu)成圖像的兩部分之間的差別越大。當(dāng)部分目標(biāo)被錯分為背景或部分背景被錯分為目標(biāo)時,都會導(dǎo)致兩部分差別變??;當(dāng)所取閾值的分割使類間方差最大時,就意味著錯分概率最小,則此時的閾值為最佳閾值。
記T為前景與背景的分割閾值,前景點數(shù)占圖像比例為w0,平均灰度為u0,背景點數(shù)占圖像比例為w1,平均灰度為u1,圖像的總平均灰度為u,g為前景和背景圖像的方差,則有
u=w0×u0+w1×u1
(9)
g=w0×(u0-u)2+w1×(u1-u)2
(10)
聯(lián)立上面兩式可得
g=w0×w1×(u0-u1)2
(11)
當(dāng)方差g最大時,可以認為前景和背景差異最大,此時的灰度T是最佳閾值。Otsu算法不需要其他先驗知識,且計算簡單快速,至今仍是最常用的自動閾值處理方法。
在亞像素邊緣檢測前,需要用sobel梯度算子檢測屬于邊緣的點。文獻[8]中的算法人為設(shè)定并反復(fù)調(diào)整梯度閾值,筆者將Ostu算法與sobel算法相結(jié)合得到梯度值,估計最佳全局梯度閾值。
當(dāng)對帶噪聲的圖像進行邊緣提取時,文獻[8]的方法是用模板和圖像卷積進行濾波處理。濾波對邊緣估計的影響如圖3所示。假設(shè)K為一個簡單的高斯核,G為原圖F和K卷積后的圖像,將會用G的信息來計算F中邊緣的信息。這時中間灰度的區(qū)域會變大,則用圖3(c)中的區(qū)域計算邊緣特征。
圖3 濾波對邊緣估計的影響
當(dāng)圖像的噪聲太大時,1.3節(jié)的算法將不能準確地檢測出亞像素邊緣。為此提出圖像重構(gòu)方案,該方案通過迭代,逐漸修改圖像去除噪聲,并且用保存在構(gòu)建的子圖像中的值計算圖像的邊緣特征。算法如下:首先,使用3×3模板平滑原始圖像G0;其次,將1.1節(jié)的邊緣檢測器應(yīng)用于該圖像G0。在檢測到邊緣的那些像素點鄰域后,使用獲得的邊緣特征值生成一個恢復(fù)的子圖像。然后,將所有子圖像組合起來生成一個完整的合成圖像F1。在F1圖像中計算的邊緣特征值對噪聲的敏感度低于在初始圖像F0中檢測到的值對噪聲的敏感度,因此邊緣特征更準確。
為了結(jié)合所有生成的子圖像的信息,創(chuàng)建了兩個新的完整圖像,邊緣圖像為C,其每個像素值表示包含該像素的子圖像的數(shù)目;強度圖像為I,每個像素值表示每個像素的累積強度。首先,將兩個圖像設(shè)置為0,并將圖像F0平滑以獲得圖像G0;其次,對于在G0中檢測到的每一個邊緣像素,創(chuàng)建一個子圖像,并且更新C和I中的值;最后,圖像C中的每個像素(i,j)都是按照如下方式處理的。
(1) 值為0的像素表示該像素遠離任何邊界的像素,在本例中,F(xiàn)1(i,j)=G0(i,j)。
當(dāng)噪聲很大時,圖像F1雖然比F0好,但噪聲可能還是太大。在這種情況下,可以將恢復(fù)算法的一個新的迭代應(yīng)用于F1來獲得F2。在n次迭代后,獲得了一個圖像Fn,在此基礎(chǔ)上對邊緣特征的估計更簡單。
原算法是對圖像平滑時采用均值濾波,筆者采用高斯加權(quán)濾波和迭代算法相結(jié)合的方法進行改進。
試驗采用如圖4所示測量系統(tǒng),使用大恒水星MER-500-14GM-P型工業(yè)相機拍攝,相機分辨率為2 594像素×1 944像素。由于待測工件為長軸類,采用型號為LTS-2PFT15756的條形平行背光源,對于齒輪軸輪廓,采用平行光可以減少虛邊現(xiàn)象,提高成像品質(zhì),系統(tǒng)用激光位移傳感器獲得攝像機到工件的距離。拍攝的齒輪傳動軸灰度圖如圖5所示,待測幾何量為齒輪軸的4段不同的軸徑。
圖4 硬件測量系統(tǒng)外觀
圖5 系統(tǒng)拍攝的齒輪傳動軸灰度圖
圖6 改進算法和像素鄰域亞像素邊緣檢測算法的檢測效果
圖6(a)和6(c)是用基于像素鄰域的噪聲邊緣檢測算法得到的亞像素邊緣,圖6(b)和6(d)是用文中改進算法得到的亞像素邊緣,截取兩個區(qū)域進行對比,可見圖6(b)和6(d)的邊緣更平滑和連貫,而圖6(a)和6(c)的邊緣不連續(xù)。初步可知,文中改進算法能得到更好的邊緣檢測效果。
在測量徑向尺寸時,先用前文提出的亞像素邊緣檢測算法得到齒輪軸的亞像素邊緣。文中的檢測目標(biāo)是階梯軸,為了簡化算法,在測每部分的軸徑時,選擇該軸徑所在的ROI(感興趣區(qū)域)范圍,則在截取的區(qū)域只存在測量軸徑時要用的兩條邊,并且這兩條邊緣關(guān)于齒輪軸的中軸線對稱。
ROI區(qū)域設(shè)定之后,測量算法如下所述。
(1) 根據(jù)選擇的ROI區(qū)域,以其中軸線為界,將ROI區(qū)域分為上下兩子ROI,待測邊緣分別存在于兩個子ROI中。
(2) 用最小二乘法原理,分別將兩子ROI中的邊緣點進行直線擬合。
(3) 求兩直線的距離。求兩條平行線A1x+B1y+C1=0(L1)和Ax+By+C=0(L2)間距離的公式,如式(12)所示。
(12)
式中:(x,y)為直線L2上的一點。
但是,在實際測量試驗中,擬合出來的直線總存在一定的夾角,很難得到理想狀態(tài)的平行線,因此用ROI區(qū)域與一條擬合直線的兩端點求出兩端點的中心坐標(biāo),再將該中心坐標(biāo)代入公式,得到兩直線的距離。改進算法和像素鄰域邊緣檢測算法軸徑測量結(jié)果分別如表1,2所示。
表1 改進算法齒輪軸徑測量結(jié)果
表2 像素鄰域邊緣檢測算法齒輪軸徑測量結(jié)果
對齒輪軸在同一位置拍攝3張圖片,對每個軸徑得到的3次測量結(jié)果求平均,兩種方法測量齒輪軸徑的相對誤差如圖7所示,圖7中帶圓圈的折線表示原始亞像素邊緣檢測算法的相對誤差,其值在0.2%~0.5%之間;帶*的折線表示改進算法測量結(jié)果的相對誤差,可以看出其測量結(jié)果比較穩(wěn)定,相對誤差控制在0.2%以內(nèi)。試驗驗證了改進算法具有更高的定位精度。
圖7 兩種方法測量齒輪軸徑的相對誤差
對于TRUJILLO-PINO等提出的基于鄰近區(qū)域像素灰度構(gòu)成模型的邊緣檢測算法,提出了不同于TRUJILLO-PINO算法的梯度閾值判斷方法。用Otsu算法自動求取最佳閾值,避免了人工設(shè)定和反復(fù)調(diào)節(jié)帶來的誤差,提高了工作效率。對于文中獲得的齒輪軸圖像,應(yīng)用改進的迭代重構(gòu)算法,使獲得的邊緣更加平滑和連貫,提高了定位精度。