魏東亮,周迪斌,張家瑜,馬建峰
1(杭州師范大學(xué) 杭州國(guó)際服務(wù)工程學(xué)院,杭州 311121)
2(杭州手表有限公司,杭州 310015)
在精密機(jī)械行業(yè),微型擺輪(圖1)是一種常見(jiàn)的部件,在生產(chǎn)過(guò)程中容易出現(xiàn)表面不平整,邊緣處弧度不達(dá)標(biāo)等缺陷.因此,在組裝設(shè)備之前必須進(jìn)行嚴(yán)格檢測(cè),剔除次品.傳統(tǒng)的檢測(cè)方法主要是人工檢測(cè),工人通過(guò)雙目顯微鏡放大零件圖像,并手動(dòng)吹氣來(lái)轉(zhuǎn)動(dòng)零件,肉眼觀察零件上下擺動(dòng)幅度,以確定零件是否合格.人工檢測(cè)依賴個(gè)人經(jīng)驗(yàn),主觀性強(qiáng),且易疲勞,導(dǎo)致產(chǎn)品質(zhì)量管理的不穩(wěn)定,難以量化評(píng)估.采用視覺(jué)技術(shù)進(jìn)行檢測(cè)是大勢(shì)所趨,其能有效保證產(chǎn)品檢測(cè)的準(zhǔn)確度和穩(wěn)定性.
一個(gè)優(yōu)質(zhì)的機(jī)器視覺(jué)系統(tǒng)必須具備以下幾點(diǎn):第一,所采用的光學(xué)系統(tǒng)必須成像清晰,對(duì)比度好,噪聲少;第二,算法必須精確的計(jì)算出零件的邊緣線;第三,算法必須具有一定的魯棒性,比如能夠自動(dòng)矯正傾斜的圖像.
圖1 擺輪
數(shù)字圖像的基本單位是像素.為了提高檢測(cè)的精度,需要進(jìn)行亞像素的定位.亞像素邊緣檢測(cè)是指將邊緣附近的像素進(jìn)行分解,從而精確定位邊緣[1].常用的亞像素檢測(cè)技術(shù)有矩法,最小二乘方差法,插值法,擬合法等[2,3].文獻(xiàn)[2,4–6]提出了基于二次曲線擬合的亞像素定位模型,該模型在理想條件下定位精準(zhǔn)度高.文獻(xiàn)[7]提出了對(duì)二次多項(xiàng)式的最小二乘擬合求梯度的亞像素插值算法,但模型比較復(fù)雜,求解速度慢.本文參考了以上文獻(xiàn)中的理論,使用一種基于局部區(qū)域特征的二次曲線模型來(lái)計(jì)算亞像素位置,這種模型考慮了局部的特征和邊緣梯度,精確度高,速度快,能夠滿足項(xiàng)目的需要.
由于零件本身微小,且檢測(cè)的是輪面的平整度,同時(shí)為了減少虛影提高圖像對(duì)比度,所以選擇平行背光源.鏡頭選擇高分辨低畸變的遠(yuǎn)心鏡頭.
系統(tǒng)采用視頻檢測(cè)方式,零件放置在專(zhuān)用的工作臺(tái)上,使用導(dǎo)氣管吹動(dòng)零件轉(zhuǎn)動(dòng).工作臺(tái)如圖2所示.
圖2 擺輪工作臺(tái)
擺輪檢測(cè)依次經(jīng)歷如下步驟:圖像采集與預(yù)處理,Canny邊緣檢測(cè),傾角矯正,ROI (感興趣區(qū)域)亞像素位置計(jì)算,ROI水平邊緣和垂直邊緣計(jì)算,計(jì)算極差,判定結(jié)果.圖3顯示了這個(gè)流程框架.
圖3 流程框架
圖像采集是將傳感器檢測(cè)到的圖像信息傳輸?shù)接?jì)算機(jī)的過(guò)程.擺輪圖像中背景為白色,目標(biāo)為黑色,目標(biāo)和背景的對(duì)比度明顯,使用常見(jiàn)幾種閾值分割方法進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖4所示.
圖4 常見(jiàn)閾值方法分割效果
從上面的實(shí)驗(yàn)結(jié)果來(lái)看,OTSU方法,迭代閾值法,p參數(shù)法效果都不錯(cuò).p參數(shù)法依賴于參數(shù)的設(shè)置,固定的參數(shù)會(huì)使得算法的魯棒性降低.OTSU在細(xì)節(jié)體現(xiàn)上比迭代閾值法更好一些,故選擇OTSU法.
圖像的邊緣檢測(cè)算法有很多,常見(jiàn)的有Robert,Sobel,Prewitt,Krisch,LOG,Canny等算子[8].使用Canny算子檢測(cè)的效果如圖5所示.
圖5 Canny邊緣檢測(cè)效果
Canny算法能夠滿足項(xiàng)目需要,且使得后面霍夫直線檢測(cè)時(shí)取得比較好的性能,所以選擇Canny算子.
零件在拍攝的過(guò)程中容易存在一定的傾斜,根據(jù)先驗(yàn)知識(shí),傾斜的角度一般在30度以內(nèi).目前常用的傾角矯正方法有:基于投影的方法、基于Hough變換、基于線性擬合等方法[9].使用霍夫變換的方法能夠矯正擺輪圖像的傾斜,滿足項(xiàng)目的需求.下面是常見(jiàn)的兩類(lèi)傾斜情況及其矯正結(jié)果,如圖6所示.
圖6 圖像矯正效果
從上面的實(shí)驗(yàn)結(jié)果可以看到,利用霍夫直線檢測(cè)算法能夠矯正常見(jiàn)的沿順時(shí)針或逆時(shí)針具有一定傾斜角度的圖像.
2.3.1 圖像矯正流程
1)基于Canny檢測(cè)后的圖像使用霍夫變換方法檢測(cè)圖像中的直線.霍夫變換本身比較耗時(shí),但根據(jù)擺輪圖像的特點(diǎn)只需要檢測(cè)出2到3條比較長(zhǎng)的水平直線,其余水平直線和垂直直線則全部忽略掉.當(dāng)設(shè)置直線檢測(cè)閾值為500像素點(diǎn)時(shí)即可達(dá)成上述目標(biāo).這樣能大大提高霍夫算法的效率.
2)對(duì)于每條檢測(cè)出的直線,獲取其傾角θ,如圖7所示.
圖7 圖像坐標(biāo)系
3)旋轉(zhuǎn)圖像至水平位置.設(shè)β為圖像需要旋轉(zhuǎn)的角度,則有:
圖像旋轉(zhuǎn)的步驟如下:
第1步,把圖像坐標(biāo)系的原點(diǎn)從左上角轉(zhuǎn)移到圖像中心.
第2步,旋轉(zhuǎn)所有像素點(diǎn).
第3步,把旋轉(zhuǎn)后的圖像平移到原來(lái)的圖像坐標(biāo)系中.
在該項(xiàng)目中我們使用了5×3的模板,考慮每個(gè)可能的邊緣像素,然后在模板區(qū)域內(nèi)計(jì)算一個(gè)二次曲線模型,利用此模型計(jì)算亞像素位置.二次函數(shù)模型是在一次函數(shù)模型的基礎(chǔ)上推導(dǎo)出來(lái)的,所以先介紹一次函數(shù)模型.
2.4.1 一次函數(shù)模型
如圖8所示,假設(shè)直線L:y=kx+b是圖像中的邊緣,且L將圖像區(qū)域分成上下兩部分,分別記做M,N.這兩部分的面積記做SM,SN,M,N也表示M,N兩部分的平均灰度值.直線L所在的坐標(biāo)系的中心點(diǎn)為(i,j).設(shè) (i,j)處 像素的灰度值為F(i,j),它也代表整個(gè)模板區(qū)域的平均灰度值.設(shè)圖像區(qū)域總面積為S[2,5].則有:
圖8 一次函數(shù)模型
我們考慮中間像素 (i,j)的5×3鄰域模板,以L2、M2和R2來(lái)表示模板中直線L下側(cè)左、中、右列的像素面積,如圖9所示.直線L坐標(biāo)系中心的位置依然是O(i,j),l列中心的橫坐標(biāo)是i–1,r列中心的橫坐標(biāo)是i+1;最上一行的中心縱坐標(biāo)是j+2,最下一行中心位置的縱坐標(biāo)是j–2;設(shè)每個(gè)像素格的邊長(zhǎng)為w[2,5].
圖9 5×3模板
設(shè)5×3模板中左邊一列的像素灰度值之和為T(mén)l,中間一列為T(mén)m,右邊一列為T(mén)r,則有:
代入式(3),可得:
同理,可知:
2.4.2 二次函數(shù)模型
一次函數(shù)可以看做是二次函數(shù)當(dāng)二次項(xiàng)系數(shù)為0時(shí)的特例,所以使用二次函數(shù)模型來(lái)預(yù)測(cè)亞像素的位置會(huì)比一次函數(shù)模型更普遍一些.在二次函數(shù)模型中我們還可以求得邊緣的曲率,這樣對(duì)邊緣的描述會(huì)更準(zhǔn)確.二次函數(shù)模型預(yù)測(cè)亞像素位置如圖10所示.各數(shù)學(xué)符號(hào)還保持前面的定義,假設(shè)拋物線f:y=ax2+bx+c為圖像中的邊緣.
圖10 二次函數(shù)模型
邊緣下側(cè)左、中、右部分面積計(jì)算[2,4–6]:
由前面的推導(dǎo)過(guò)程可知,式(8),(9),(10)在二次函數(shù)模型中依然成立.將式(11),(12),(13)代入式(8),(9),(10)中,可以得到包含了a,b,c三個(gè)變量的三個(gè)方程,解之,可得a,b,c的值.
由式(16)可知,二次函數(shù)模型下真實(shí)的像素點(diǎn)(i,j)對(duì)應(yīng)的亞像素位置為(i,j–c).
在上面的公式中,M,N代表了邊緣兩側(cè)平均灰度值,|M–N|則代表了邊緣兩側(cè)的梯度幅值,其方向?yàn)檫吘壍奶荻确较?
如圖11所示,設(shè)點(diǎn)O(i,j)處沿x方向的偏導(dǎo)數(shù)為fx,沿y方向的偏導(dǎo)數(shù)為fy,當(dāng)fx·fy>0 時(shí),設(shè)?x=1;當(dāng)fx·fy≤0 時(shí),?x=?1.
圖11 圖像強(qiáng)度
將式(17),式(18)代入前面的公式,即可求得二次函數(shù)模型下的亞像素位置.
在使用上述模型之前必須先粗略定位出邊緣的位置.對(duì)于每個(gè)邊緣點(diǎn),使用上述模型求解亞像素位置.
如圖12所示,我們需要描繪出ROI中擺輪邊緣的直線.此處ROI就是方框的區(qū)域.可以使用投影法來(lái)生成直線.投影法是通過(guò)計(jì)算圖像在水平和垂直邊緣上的像素點(diǎn)的個(gè)數(shù)來(lái)確定邊緣的位置[10].
圖12 ROI擺輪邊緣直線
計(jì)算水平直線的方法如下.ROI中以行為單位,每行的像素?cái)?shù)累計(jì)起來(lái),相當(dāng)于往y軸上投影,按照式(19)的方式進(jìn)行統(tǒng)計(jì).f(i,j)為 (i,j)處的像素值.為了利用計(jì)算前面得到的亞像素位置,i,j的增量都設(shè)置為0.5像素,即將1個(gè)像素點(diǎn)分解為4個(gè)亞像素點(diǎn),這樣就可以將邊緣精確到0.5像素.
其中,當(dāng)f(i,j)>100 時(shí),f(i,j)=1 ,當(dāng)f(i,j)≤100時(shí),f(i,j)=0,Δx是ROI在x軸方向的長(zhǎng)度.
在圖12中,從上往下依次是白色區(qū)域,黑色區(qū)域,白色區(qū)域,所以生成的Hi數(shù)組從上往下會(huì)依次出現(xiàn)峰,谷,峰,取靠上的峰值處的縱坐標(biāo)y0為生成的水平線段L1的起點(diǎn)P1的縱坐標(biāo),L1的終點(diǎn)P2的縱坐標(biāo)也取y0,P1,P2的橫坐標(biāo)取ROI的沿x軸方向的起點(diǎn)和終點(diǎn)的橫坐標(biāo),連接P1,P2即得到水平線段L1.如圖13所 示.
圖13 邊緣直線
生成邊緣垂直線的方法與上面生成水平線的方法類(lèi)似.只是在計(jì)算ROI投影時(shí),以列為單位,統(tǒng)計(jì)每列的像素?cái)?shù),相當(dāng)于往x軸投影,如式(20)所示.
其中,當(dāng)f(i,j)>100 時(shí),f(i,j)=1 ,當(dāng)f(i,j)≤100時(shí),f(i,j)=0,Δy是ROI在y軸方向的長(zhǎng)度.
在圖12中,從左往右依次是包含黑色區(qū)域,純白色區(qū)域,所以生成的Vi數(shù)組從左往右必然是谷,峰,取峰值處的橫坐標(biāo)x0為生成的垂直線段L2的起點(diǎn)P3的橫坐標(biāo),L2的終點(diǎn)P4的橫坐標(biāo)也取x0,P3,P4縱坐標(biāo)取ROI沿y軸方向的起點(diǎn)和終點(diǎn)的縱坐標(biāo),連接P3,P4即得到圖13中的垂直線段L2.
視頻檢測(cè)時(shí)軟件連續(xù)的采集幀.對(duì)于每一幀,進(jìn)行上述的處理,生成擺輪的水平邊緣線和垂直邊緣線.擺輪的平面是否平整反映在數(shù)據(jù)上就是生成的水平線的位置的偏差大小.統(tǒng)計(jì)同一個(gè)零件的一定數(shù)量的幀的水平線位置的極差,依據(jù)極差判斷出擺輪表面平整度是否合格.另外,工廠還需檢測(cè)擺輪的邊緣處弧度是否標(biāo)準(zhǔn),這可以通過(guò)圖13中一定數(shù)量幀的垂直線的極差來(lái)判斷.
按照機(jī)械手表行業(yè)的規(guī)定,2 g微型擺輪產(chǎn)品合格的標(biāo)準(zhǔn)是端跳、徑跳最大偏差都不大于2絲.端跳對(duì)應(yīng)圖13中垂直邊緣,徑跳則對(duì)應(yīng)水平邊緣.系統(tǒng)計(jì)量的單位是像素,擺輪的度量單位是絲.
如圖14所示,獲取到擺輪上下邊緣直線的縱坐標(biāo)y1,y2,經(jīng)檢測(cè)?y=y2?y1=908?814=94像素,已知擺輪設(shè)計(jì)的厚度為47絲,所以得到下面的換算關(guān)系:
圖14 擺輪厚度計(jì)算
這樣,在統(tǒng)計(jì)動(dòng)態(tài)極差的時(shí)候以不大于4像素作為合格的標(biāo)準(zhǔn).
為了檢測(cè)算法的穩(wěn)定性,對(duì)400個(gè)擺輪零件進(jìn)行了測(cè)試,其中200個(gè)合格品,200個(gè)不合格品.對(duì)于每一個(gè)零件的檢測(cè)結(jié)果,都與人工檢測(cè)結(jié)果進(jìn)行比對(duì).軟件檢測(cè)結(jié)果如表1所示.
表1 檢測(cè)結(jié)果
經(jīng)分析,出錯(cuò)的原因在于ROI位置設(shè)置的有些遠(yuǎn)離擺輪末端,重新設(shè)置至擺輪末端后,這類(lèi)誤檢情況沒(méi)有再出現(xiàn).
分析表明,ROI的標(biāo)記位置是一個(gè)影響因素.正確的標(biāo)記方法是將此區(qū)域標(biāo)記在擺輪的末端,如圖12所示.如果標(biāo)記在遠(yuǎn)離末端位置,零件旋轉(zhuǎn)時(shí)靠中間的位置其擺動(dòng)幅度較小導(dǎo)致統(tǒng)計(jì)的極差較小,這樣可能會(huì)導(dǎo)致誤判.檢測(cè)系統(tǒng)使用背光源,所以必須在周?chē)诠獾臈l件下進(jìn)行,如果周?chē)辛凉馍淙雽?shí)驗(yàn)臺(tái)就可能干擾實(shí)驗(yàn)結(jié)果.
選取有代表性的7個(gè)合格品和7個(gè)缺陷品,其測(cè)試數(shù)據(jù)見(jiàn)表2.表中偏差值的單位是像素.
表2 對(duì)比實(shí)驗(yàn)
系統(tǒng)檢測(cè)實(shí)況如圖15所示.OK表示合格品,NG表示缺陷品.
系統(tǒng)通過(guò)亞像素算法得到的像素點(diǎn)的位置是浮點(diǎn)型數(shù)據(jù),根據(jù)式(22)將亞像素位置精確到0.5像素的整數(shù)倍.
其中,x表示偏差值,x≥0.
表2中,產(chǎn)品序號(hào)為2、6、7的零件徑跳最大偏差值都是4像素,屬于合格品.產(chǎn)品序號(hào)為12、13的零件徑跳最大偏差為4.5像素,屬于缺陷品.系統(tǒng)在工廠進(jìn)行了6個(gè)月的試運(yùn)行,具有4、4.5這樣偏差數(shù)據(jù)的擺輪普遍存在,系統(tǒng)檢測(cè)的結(jié)論得到了充分的驗(yàn)證.
由實(shí)驗(yàn)中人工和軟件檢測(cè)結(jié)論的一致性可以進(jìn)一步確定,4像素小于等于2絲,4.5像素大于2絲.
圖15 系統(tǒng)工作實(shí)況
由此可知,使用0.5像素代表0.25絲的誤差小于0.03絲.
在上述算法中,亞像素位置的計(jì)算對(duì)于準(zhǔn)確度起著重要作用.項(xiàng)目中偏差值的精確度為0.5像素,在實(shí)驗(yàn)條件下,對(duì)應(yīng)0.25絲的實(shí)際長(zhǎng)度,這一對(duì)應(yīng)關(guān)系誤差小于0.03絲.這能夠滿足工廠對(duì)擺輪的檢測(cè)要求.
目前微型零件檢測(cè)技術(shù)逐步向非接觸式檢測(cè)、數(shù)字化檢測(cè)等方向發(fā)展[11],引入機(jī)器視覺(jué)檢測(cè)技術(shù),既能保證檢測(cè)的結(jié)果更加精確,可解釋,又能彌補(bǔ)工人數(shù)量不足的問(wèn)題,深受企業(yè)的歡迎.本文提出一種微型擺輪的機(jī)器視覺(jué)檢測(cè)算法,算法的平均準(zhǔn)確率為99.5%,單幀檢測(cè)時(shí)間平均27 ms,一個(gè)零件可以在2秒鐘之內(nèi)檢測(cè)出結(jié)果.實(shí)驗(yàn)結(jié)果表明:該算法能夠?qū)崟r(shí)和準(zhǔn)確的檢測(cè)擺輪的表面平整度和邊緣整齊情況,能夠滿足工業(yè)檢測(cè)的要求.
目前工廠仍在使用人工上料,如果未來(lái)能夠使用精密機(jī)械成批的上料,那么整體檢測(cè)的效率會(huì)更高.