任永強(qiáng) 杜 瑞 李 軍
(合肥工業(yè)大學(xué)機(jī)械工程學(xué)院,安徽 合肥 230009)
在自動化裝配線中,關(guān)于零部件錯(cuò)裝漏裝的檢測技術(shù)已經(jīng)成為影響自動化程度和智能制造水平的關(guān)鍵因素[1]。差速器總成作為變速箱裝配中的重要部件,其裝配質(zhì)量嚴(yán)重影響著整條變速箱裝配生產(chǎn)線的生產(chǎn)效率[2]。如圖1所示,差速器總成的軸用卡簧由于結(jié)構(gòu)尺寸較小,通常使用卡簧鉗手動裝配在一字軸上,然后將差速器總成放入托盤中。通過視覺檢測代替人工檢測卡簧是否錯(cuò)裝漏裝,可以有效地降低誤檢率,適應(yīng)生產(chǎn)節(jié)拍要求,從而進(jìn)一步提高變速箱裝配線的自動化水平[3]。
差速器總成由人工裝配完成后,置于圖2所示旋轉(zhuǎn)檢測臺的定位座上。伺服電動機(jī)轉(zhuǎn)動檢測臺至工業(yè)相機(jī)拍照位置停止,檢測卡簧裝配合格后,定位座由檢測臺內(nèi)的旋轉(zhuǎn)氣缸轉(zhuǎn)動180°檢測一字軸另一端卡簧。檢測不合格,旋轉(zhuǎn)檢測臺返回原位報(bào)錯(cuò)。兩次檢測均合格后,差速器總成被夾緊氣缸和伺服機(jī)械手吊至裝配線體的托盤上,整個(gè)檢測流程結(jié)束。
視覺檢測系統(tǒng)的控制原理如圖3所示,工業(yè)相機(jī)通過網(wǎng)口與工控一體機(jī)連接,相機(jī)接收檢測軟件觸發(fā)后拍照回傳,軟件檢測合格后通過以太網(wǎng)將結(jié)果發(fā)送給PLC,PLC控制伺服電動機(jī)等執(zhí)行機(jī)構(gòu)完成動作。檢測過程中LED光源由PLC控制開關(guān)。
考慮到卡簧的檢測視野范圍較小,如圖4所示,選用某品牌CMOS面陣工業(yè)相機(jī)、配50 mm焦距鏡頭,工作距離300 mm,視野范圍40 mm×30 mm。光源選擇環(huán)形無影白色LED光源,配雙路控制器。
設(shè)置相機(jī)的拍攝大小為540×480像素,格式為彩色24位圖像。先對彩色源圖像進(jìn)行灰度化處理,以提取卡簧輪廓。由于差速器殼體的加工表面粗糙度差,導(dǎo)致干擾信息過多,需要在保留卡簧輪廓特征的條件下對目標(biāo)圖像進(jìn)行濾波降噪。而且卡簧金屬表面經(jīng)圖像處理后可能會有邊緣模糊和間斷的情況出現(xiàn),還需要膨脹處理使得輪廓連續(xù)。經(jīng)過以上一系列預(yù)處理之后再提取輪廓,設(shè)計(jì)算法檢測出卡簧雙耳的圓孔,計(jì)算圓孔中心距離從而判斷卡簧是否裝配合格。詳細(xì)處理流程如圖5所示。
相機(jī)采集到的彩色24位圖像每個(gè)像素用3個(gè)字節(jié)表示,每個(gè)字節(jié)對應(yīng)著R、G、B分量的亮度(紅、綠、藍(lán)),由于圖像處理的大多數(shù)算法都是在灰度圖像上進(jìn)行的,所以必須將彩色圖像灰度化才能進(jìn)一步處理?;叶绒D(zhuǎn)換公式為:
其中,Gray(x,y)為轉(zhuǎn)換后得圖像在(x,y)點(diǎn)的灰度值(540×480圖像中x540,y480)。 灰度值的范圍是0~255,需要對灰度圖像進(jìn)行閾值分割使得黑色(0)與白色(255)區(qū)分更為明顯。設(shè)定閾值為thresh,像素灰度最大值為maxval,分割后(x,y)點(diǎn)灰度值:
經(jīng)過灰度化和閾值分割的卡簧圖像如圖6所示,其中閾值分割參數(shù)thresh=152,maxval=255。
為了盡量保留卡簧圖像的細(xì)節(jié)特征條件下對圖中的斑點(diǎn)噪聲進(jìn)行抑制,必須要使用濾波降噪,濾波效果的好壞直接影響到后續(xù)處理的有效性和可靠性。中值濾波是一種基于排序統(tǒng)計(jì)理論的非線性平滑算法,基本原理就是把像素點(diǎn)的灰度值用該點(diǎn)領(lǐng)域中各點(diǎn)的中值代替,從而消除孤立的噪點(diǎn)。
取3×3的像素矩陣為例,中值濾波算法先將元素值進(jìn)行排序得(0,13,24,75,86,149,171,213,255),中間點(diǎn)經(jīng)過中值濾波后取值86。由于排序取中值,中值濾波矩陣階數(shù)必須為奇數(shù)。調(diào)整階數(shù)為5×5、7×7或者9×9將得到不同的濾波效果。圖7是將上述閾值分割處理所得圖像分別經(jīng)過5×5和9×9中值濾波得到的卡簧圖像。隨著濾波矩陣階數(shù)的增加,卡簧雙耳圓孔的輪廓邊緣特征愈加明顯,噪點(diǎn)也相應(yīng)大幅減少,但階數(shù)過高會導(dǎo)致邊緣特征丟失,所以需要根據(jù)實(shí)際選取最佳濾波階數(shù)。
Canny邊緣檢測算子由于不丟失重要邊緣,檢測到的邊緣與實(shí)際偏差較小的特性被廣泛應(yīng)用,其原理是將上述處理的圖像f(x,y)與高斯平滑算子G(x,y)作卷積,其中:
再求出局部邊緣的法向:
根據(jù)二階導(dǎo)數(shù)過零點(diǎn)的邊緣檢測原理找出邊緣位置:
從而保留了每個(gè)像素點(diǎn)上梯度強(qiáng)度極大值,刪掉其他值。此時(shí)的圖像仍然有很多噪點(diǎn)。Canny算法應(yīng)用雙閾值以篩選邊緣。設(shè)定一個(gè)閾值上界和閾值下界,像素點(diǎn)超出閾值上界必然是邊緣。低于閾值下界不是邊緣。通常閾值上界設(shè)定為閾值下界的3倍效果最佳。最后通過滯后閾值處理,消除紋狀的斷開邊緣響應(yīng),得到連續(xù)的邊緣,如圖8左側(cè)所示。
為了防止邊緣仍然存在微小的斷點(diǎn),影響卡簧圓孔邊緣檢測,再使用膨脹優(yōu)化。膨脹就是求圖像局部最大值,將圖像src(x,y)與帶有錨點(diǎn)的正方形核(x′,y′)進(jìn)行卷積,計(jì)算出核覆蓋區(qū)域的像素點(diǎn)最大值,并將最大值賦給錨點(diǎn)所在的像素點(diǎn),數(shù)學(xué)表達(dá)式如下:
膨脹后圖像的高亮區(qū)逐漸增長,達(dá)到擴(kuò)大邊緣使其連續(xù)的目的,處理效果如圖8右側(cè)所示。
經(jīng)過上述預(yù)處理后的圖像dst(x,y)輪廓分明。傳統(tǒng)的霍夫變換檢測圓形輪廓需要較大內(nèi)存且速度緩慢。這里采用一種基于面積周長比值的快速提取圓形輪廓方法。首先獲取圖像中各個(gè)輪廓的面積A和周長C,圓形的面積與周長平方的比值為:
而圖像dst(x,y)得到的卡簧圓孔輪廓通常不是標(biāo)準(zhǔn)的圓形,其比值小于0.079 6,而且其他閉合輪廓的比值也小于0.079 6,這里給出篩選比值的范圍:
0.063 這樣既能檢測出接近于圓的卡簧圓孔輪廓,也能屏蔽其他異形輪廓的干擾。然而還有一些很小的輪廓會被誤判成卡簧圓孔,再使用面積與周長比值: 上式可以得到圓形輪廓的半徑,根據(jù)像素距離限制半徑范圍12pixel 再分別取圓孔輪廓的外接矩形,將矩形的中心作為卡簧雙耳圓孔的圓心,利用兩點(diǎn)間直線距離公式計(jì)算出圓孔像素距離: 由于卡簧錯(cuò)裝時(shí)雙耳圓心距離較大,所以根據(jù)實(shí)際限定圓孔距離d的范圍(例如120pixel EmguCV是.NET平臺下對計(jì)算機(jī)視覺庫OpenCV圖像處理庫的封裝,能夠用.NET兼容的編程語言C#調(diào)用OpenCV的函數(shù)。C#程序在調(diào)用EmguCV的函數(shù)前先引用EmguCV幾個(gè)基本動態(tài)鏈接庫: using Emgu.CV; using Emgu.CV.Util; using Emgu.CV.Structure; using Emgu.CV.CvEnum; using Emgu.Util; 以上動態(tài)鏈接庫包含了常用的圖像處理算法和類庫。針對卡簧圖像的預(yù)處理流程如下: Image img =img.SmoothMedian(par.MedianSize); //中值濾波(參數(shù)MedianSize) CvInvoke.Threshold(img, img, par.Thresh, par.MaxVal, ThresholdType.Binary); //閾值分割(參數(shù)Thresh,MaxVal) img = img.Canny(par.CannyThresh, par.CannyThresh * 3); //Canny邊緣檢測,參數(shù)閾值上界是下界值3倍 img = img.Dilate(par.Interations); imgout = img; //結(jié)果輸出 其中par是卡簧檢測參數(shù)類RingPars的對象。RingPars將參數(shù)封裝成屬性,配置這些參數(shù)的窗口界面如圖10所示。參數(shù)配置過程中圖像實(shí)時(shí)處理并顯示,用戶可根據(jù)實(shí)際采集的照片質(zhì)量,保存預(yù)處理效果最佳的一組參數(shù)用于下一步檢測。右下方的卡簧距離限定可設(shè)置卡簧雙耳圓孔圓心距離限定范圍。 其中img為預(yù)處理得到的卡簧圖像,vvp為存儲所有輪廓的對象。篩選圓孔輪廓的代碼: for (int i = 0; i < vvp.Size; i++) //遍歷所有輪廓 { double area =CvInvoke.ContourArea(vvp[i]); //獲取當(dāng)前輪廓的面積; double length = CvInvoke.ArcLength(vvp[i], true); //獲取當(dāng)前輪廓的周長 double r = (area / length) * 2; //當(dāng)前輪廓半徑 doublep = (area / (length * length)); //面積與周長平方比值p if (p > 0.063&& p < 0.0796) //通過p篩選 { if (12< r && r < 15) //通過半徑篩選 { circle_vvp.Push(vvp[i]); //提取篩選后的圓輪廓 } } } 經(jīng)過篩選后circle_vvp中存儲著卡簧圓孔輪廓,再繪制外接矩形和兩圓心連接線段。部分代碼如下: for (int i = 0; i < circle_vvp.Size; i++) { //獲取圓孔輪廓的外接矩形 Rectangle rect = CvInvoke.BoundingRectangle(circle_vvp[i]); imgSrc.Draw(rect, new Bgr(230, 255,230), 2); //繪制矩形 pList.Add(new Point(rect.X + rect.Width / 2, rect.Y + rect.Height / 2)); // 獲取兩圓心 } Point[] p = new Point[2]; p[0] = ListPoint[0]; p[1] = ListPoint[1]; LineSegment2D line = new LineSegment2D(p[0], p[1]); // 創(chuàng)建線段 imgMeas.Draw(line, new Bgr(230, 255, 230), 2, LineType.AntiAlias, 0); // 繪制線段 length = line.Length; // 得到圓心距離 imageBox1.Image = imgMeas;// 主界面顯示圖像 軟件檢測主界面如圖11所示,檢測結(jié)果列表中顯示了當(dāng)前檢測詳細(xì)信息。 準(zhǔn)備多個(gè)差速器總成樣件,放入旋轉(zhuǎn)檢測臺進(jìn)行試驗(yàn),記錄視覺檢測軟件的結(jié)果并驗(yàn)證軟件檢測數(shù)據(jù)是否準(zhǔn)確,如表1所示。 表1 檢測試驗(yàn)數(shù)據(jù) 試驗(yàn)序號檢測卡簧有無圓孔間距/pixel裝配是否合格檢測用時(shí)/ms檢測準(zhǔn)確驗(yàn)證1有130合格33√2無/漏裝31√3有132合格34√4有157錯(cuò)裝34√5有131合格31√6有130合格33√7無/漏裝245×8有154錯(cuò)裝37√9有131合格34√10有131合格31√ 通過驗(yàn)證可以說明軟件檢測準(zhǔn)確性較高,多次試驗(yàn)準(zhǔn)確率可達(dá)95%以上,且檢測用時(shí)較短,滿足實(shí)時(shí)性要求。試驗(yàn)過程中影響檢測準(zhǔn)確性的因素主要有: (1)差速器加工表面粗糙度。 (2)差速器定位座定位精度。 (3)相機(jī)與光源支架穩(wěn)定性。 (4)外界環(huán)境光的干擾。 利用機(jī)器視覺相關(guān)理論及算法,通過檢測卡簧雙耳的輪廓圓判斷卡簧是否漏裝,計(jì)算輪廓圓心像素距離判斷卡簧是否錯(cuò)裝,從而完成了對差速器卡簧的裝配防錯(cuò)檢測。設(shè)計(jì)視覺檢測平臺及軟件,對軟件的實(shí)時(shí)性和準(zhǔn)確性做了試驗(yàn)驗(yàn)證,系統(tǒng)滿足實(shí)際生產(chǎn)需求,提高了裝配線的自動化水平。 [1]陳向偉,王海月.基于計(jì)算機(jī)視覺的軸套零件尺寸測量 [J] .制造技術(shù)與機(jī)床,2014(10):85-88. [2]韓冰.基于機(jī)器視覺的發(fā)動機(jī)活塞裝配防錯(cuò)檢測技術(shù)研究[D].濟(jì)南:山東大學(xué),2009. [3]劉霞.工業(yè)零件形狀尺寸的機(jī)器視覺檢測系統(tǒng)的研究[D].哈爾濱:哈爾濱理工大學(xué),2009. [4]韓思奇,王蕾.圖像分割的閾值法綜述[J].系統(tǒng)工程與電子技術(shù),2002(6):91-102. [5]Canny J.A computational approach to edge detection [J] .Pattern Analysis & Machine Intelligence IEEE Transactions on, 1986, PAMI-8(6):679-698. [6]王曉東, 宋洪俠, 劉超,等.基于機(jī)器視覺的微小型零件測量與裝配控制 [J].哈爾濱工程大學(xué)報(bào),2011,32(9):1117-1122. [7]張少偉.基于機(jī)器視覺的邊緣檢測算法研究與應(yīng)用[D].上海:上海交通大學(xué), 2013. [8]Duchene J, Leclercq S.An optimal transformation for discriminant and principle component analysis, [J].Pattern Analysis and Machine Intelligence, IEEE Transactions on, 1988, 10(6): 978-983. [9]王化楠.Hough變換在視覺檢測系統(tǒng)中的應(yīng)用研究 [D].大連:大連理工大學(xué),2006. [10]趙春江.C#數(shù)字圖像處理算法典型實(shí)例 [M].北京:人民郵電出版社,2009. [11]Milan Sonka,Vaclav Hlavac,Roger Boyle.Image processing, analysis and machine vision[M].北京:清華大學(xué)出版社,2011.3 視覺檢測軟件設(shè)計(jì)
4 試驗(yàn)與分析
5 結(jié)語