于一深,蘇宇鋒,高建設(shè)
(鄭州大學機械與動力工程學院,鄭州 450000)
涂膠工藝在工業(yè)生產(chǎn)中有著極其重要的作用,涂膠質(zhì)量的好壞影響部分器件甚至整個系統(tǒng)的工作。隨著工業(yè)的發(fā)展,機器自動涂膠[1]已經(jīng)逐步取代了人工涂膠,生產(chǎn)效率取得顯著提高,然而在涂膠過程中由于機器本身的誤差和震動,環(huán)境的變化如溫度導致的膠槍出膠不穩(wěn)定,這些因素會造成涂膠軌跡的缺陷[2],如涂膠軌跡的偏移,斷膠以及膠條過寬和過窄。通過機器視覺進行檢測[3-5]已經(jīng)成為了工業(yè)自動化發(fā)展的必然趨勢[6]。
國內(nèi)外許多專家和學者對于基于視覺的缺陷檢測進行了研究。王亞運[7]通過神經(jīng)網(wǎng)絡(luò)建立了涂膠質(zhì)量標準信息庫并通過分析圖像中的標定物為在線監(jiān)測提供了較為精確的標定信息。廖勇[8]通過使用VisionPro視覺處理系統(tǒng)實現(xiàn)了發(fā)動機缸體的膠線分割和整體定位,并且通過標準點和實際圖片中的控制點計算了偏差。殷蘇民等[9]通過使用圖像差分法和模板匹配法對缺陷圖像進行分析制定了高效的電池涂膠缺陷檢測算法。王一等[10]通過使用3個組合線結(jié)構(gòu)光傳感器對膠體進行了三維測量,并搭建了檢測系統(tǒng)硬件平臺。朱立忠等[11]提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)Faster-RCNN的涂膠檢測算法,使其檢測準確率和檢測速度都有所提升。
上述方法都需要標定物或者標準圖片進行比對,基于此,本文提出了一種無需標準涂膠圖片,只需要獲取涂膠軌跡數(shù)據(jù)的涂膠檢測算法,該算法的輸入?yún)?shù)為標準軌跡位置信息,允許的偏移量以及最大最小膠條寬度,就可以獲知涂膠軌跡是否滿足要求。
本文以電池涂膠圖像為例,對涂膠軌跡進行檢測。涂膠系統(tǒng)主要由硬件模塊和軟件模塊兩部構(gòu)成,如圖1所示。
圖1 檢測系統(tǒng)總體設(shè)計圖
上位機接收到來自傳感器的圖像后,通常因為光照,誤差等因素的影響,工件的位置會發(fā)生變化,因此我們需要通過模板匹配找到工件在圖像中的實際位置,并通過透視變換將工件位置進行相應(yīng)的校正,常用的模板匹配方法有:①基于灰度的模板匹配算法;②基于金字塔的快速NCC匹配算法;③尺度不變特征變換SIFT[12]。
其中SIFT中的特征點對圖像尺度和旋轉(zhuǎn)是不變的,并且對仿射失真,視點以及光照的變化也具有魯棒性,因此選擇SIFT作為模板匹配的特征提取方法。
SIFT算法通過構(gòu)建多尺度高斯差分(DoG)金字塔以尋找同一圖像在不同尺度下的特征點。
采用SIFT算法定位圖像中的特征點和描述子之后,我們需要將這些特征點與標準圖像中的特征點一一對應(yīng)。之后對測試圖像通過透射變換便可以將測試圖像的工件位置進行糾正。
因為原始圖像I(x,y)中存在光照不均勻的,這對之后的閾值分割有較大影響,因此首先需要對圖像進行光照補償。首先使用尺寸較大的盒式濾波器B(x,y,w)對圖像進行濾波操作。再將原圖像與濾波后的圖像相減,即可得到補償后的圖像R(x,y),可以表示為:
R(x,y)=I(x,y)-B(x,y,w)*I
(1)
經(jīng)過光照補償后的圖像與原圖像相比光照不均勻的現(xiàn)象明顯減弱,邊緣和中心部分的亮度差距顯著縮小,如圖2所示。
圖2 光照補償對比
常見的基于二階導數(shù)的邊緣檢測算子有,Marr-Hildreth算子,Laplacian算子,Canny算子,本項目選擇更為成熟和先進的Canny算子進行邊緣檢測。
涂膠質(zhì)量檢測的主要是膠條的寬度和中心線的偏移量,要計算這些參數(shù)都需要首先提取膠條的骨架圖像,提取骨架在形態(tài)學中也稱為細化操作。細化操作只需要通過腐蝕和開運算就可以完成,即:
(2)
Sk(A)=(A?kB)-(A?kB)°B
(3)
式中:B為腐蝕和開運算所需的結(jié)構(gòu)元,A為原始圖像中膠條的集合,K為A被腐蝕為一個空集之前的最后一個迭代步驟。至此,如圖3所示我們便得到了涂膠軌跡以及軌跡的骨架(中心線)。
圖3 圖像處理最終結(jié)果
膠條常見的缺陷主要有:膠條過窄、膠條過寬、斷膠以及中心線偏移,因此可以明確需要檢測的是:
(1)膠條的中心線(骨架)與標準涂膠軌跡的中心線之間的距離是否超出規(guī)定值;
(2)膠條各個位置法線方向的寬度是否在公差范圍內(nèi);
在明確了需要檢測的參數(shù)后我們便可以進行相應(yīng)的算法設(shè)計。
計算中心線的偏移量可以得知膠條的整體走向是否在設(shè)定范圍內(nèi),電池芯組的涂膠軌跡通常為多段直線插補與圓弧插補的組合,因此我們只需計算之前得到的膠條骨架線上的點與標準軌跡中圓弧或者直線的最短距離,即為膠條中心線的偏移量。
將涂膠軌跡看作多段直線和圓弧的組合,需要計算的是膠條中的點與這些線段或者圓弧的最短距離。
2.2.1 中心線的點與線段的距離
點到線段的最短距離可以使用矢量算法,過程比較清晰而且數(shù)據(jù)量較大時優(yōu)勢明顯,如圖4所示,采用矢量算法計算時只需考慮以下3種情況,我們要找到AP在AB方向的投影,即:
圖4 點到線段的矢量計算法
(4)
(5)
2.2.2 中心線的點與圓弧的距離
點與圓弧的最短距離采用矢量算法時也需要考慮3種情況,如圖5所示。
圖5 點到圓弧的矢量算法
需要判斷的是點P在扇形所在的圓弧內(nèi)側(cè)還是外側(cè),當點P在外側(cè)時,點到圓弧的最短距離為min(CP,BP),當P在內(nèi)側(cè)時,距離為|PA+AD|。
對于向量AC,AB,AP,使用向量的叉乘公式有:
AP×AC=|AP||AC|sinθ
(6)
AP×AB=|AP||AB|sinα
(7)
當點P位于圓弧內(nèi)側(cè)時,sinα*sinθ<0,而當點P位于外側(cè)時,sinα*sinθ≥0,因此可以得到點P到圓弧的最短距離為:
(8)
2.2.3 計算骨架點的偏移量
需要計算的是涂膠的實際位置和標準涂膠軌跡的間距,對每一個像素點ci,需要計算它與集合A之間的最小距離Di,可以描述為:
Di=min(d(ci,A))
(9)
式中:
(10)
而
(11)
只需要設(shè)置合理的閾值T和標準距離L,就可以判斷每個像素點的偏移量Di是否在合理范圍內(nèi),其結(jié)果為:
(12)
要計算膠條的寬度,首先需要明確如何計算,對于不規(guī)則形狀的線條,其各個位置的寬度計算主要由以下幾步:
步驟1:將離散的骨架點C有序化,使得每個像素點ci的最近鄰點fi和bi為實際位置中與其最近的前后兩點;
步驟2:根據(jù)每個點和其最近的兩個點可以獲得ci位置的法線方向ni;
步驟3:沿法線方向ni的正負方向同時進行搜索,直到搜索到膠條的邊緣,膠條在像素點ci的長度為li=|ai|+|bi|,其中,ai,bi為法線方向上沿著正負半軸的膠條的長度;
步驟4:設(shè)標準寬度為w,公差為t,將li與wmin=w-t和wmax=w+t進行比較,判斷是否超出范圍。
2.3.1 法向量估計
為了將無序的像素點進行有序化排列,選擇使用kd-tree算法。在kd-tree構(gòu)建完成之后,通過最近鄰搜索對整個像素點的集合進行高維空間的范圍搜索,通過設(shè)置參數(shù)就可以找到每個像素點最相近的兩個像素點的位置和索引。通過kd-tree的構(gòu)建和檢索,就能夠得到每個像素點ci的最近鄰點fi和bi。
在得到每個點及其最近鄰點的位置后,就可以通過SVD(奇異值分解)的方法獲得該像素點的法向量,假設(shè)矩陣A是一個m×n的矩陣,那么定義矩陣A的SVD為:
A=UΣVT
(13)
2.3.2 寬度計算
計算膠條寬度的主要思想是將膠條的邊緣線仿射變換至以骨架線法向量ni為y軸的局部坐標系中,仿射變換表示為:
Ct=R×C
(14)
式中:C和Ct分別為仿射變換前后的邊緣線的位置,R為旋轉(zhuǎn)矩陣,在本例中為法向量和切向量組成的矩陣即:
R=[ti,ni]
(15)
仿射變換后的法向量和切向量以及邊緣點的位置如圖6所示。
(a) 變換前 (b) 變換后圖6 仿射變換
對于仿射變換后的圖像,可以設(shè)置左右范圍lbond和rbond,只搜索該范圍內(nèi)的邊緣點,忽略范圍之外的邊界點,這樣可以減少計算量,同時提高寬度的計算精度,如圖7所示。
圖7 設(shè)置左右邊界 圖8 設(shè)置上下邊界
然而大部分涂膠軌跡都是有大量的回轉(zhuǎn),某一位置的法向量可能同時經(jīng)過多個位置的軌跡,因此還需要設(shè)置ubond和bbond以控制軌跡的上下范圍,而軌跡的上下范圍取決于膠條的寬度,因此可以取下范圍為0~0.5w,上范圍取1.5~2w,同時因為軌跡分為上下兩部分,因此ubond和bbond也需要針對正半軸和負半軸分別設(shè)置,本項目取下范圍為0.25w,上范圍為2w。
因此,lbond和rbond和兩對ubond和bbond以及Y軸共同對圖像取點進行限制,將區(qū)域劃分為左上lub,左下lbb,右上rub,右下rbb四部分,如圖8所示。
在劃分區(qū)域之后,對4個區(qū)域分別進行搜索,可以搜尋區(qū)域中與X軸的最近點也可以求取區(qū)域內(nèi)的所有點與X軸距離的平均值,本項目選用最近點。設(shè)lub區(qū)域內(nèi)的最近點距離為dlub,rub區(qū)域內(nèi)的最近點距離為drub,那么如圖9所示可以求得上半邊緣與骨架點O的距離du為:
圖9 膠條寬度計算
(16)
同理可得:
(17)
因此可以得到點ci處的膠條寬度為li=du+db。
設(shè)膠條的標準寬度為w,公差為t,那么有wmin=w-t和wmax=w+t,將li與其進行比較,判斷膠條寬度是否在標準范圍內(nèi),有:
(18)
根據(jù)實際工作需要,對已涂膠電池進行等級規(guī)范,可以分為一級,二級,三級和次品4個類別,等級的劃分基于涂膠軌跡是否存在偏移,寬度是否符合規(guī)范,以及不合規(guī)軌跡的數(shù)量和長度來劃分。
實驗測試運行環(huán)境:大恒MER-301-125U3M面陣工業(yè)數(shù)字相機,KUKA KR16工業(yè)機器人,KUKA KRC4控制柜,中瑞ZRRT-608噴涂機器人,上位機。
為了便于區(qū)分和篩選,需要對加工完成的電池進行分類,共劃分為4個等級:一級,二級,三級和次品,其中等級的劃分主要基于涂膠軌跡的不合格部分的數(shù)量和長度,偏移片段的數(shù)量和總長度分別表示為NP,LP,寬度不合格片段的數(shù)量和總長度為NW,LW。
表1 膠條等級劃分
為了對檢測質(zhì)量進行測試,共設(shè)置了一,二,三以及次品各100個共400個,做好記錄后將其順序打亂,使用工業(yè)相機進行拍攝后將圖像傳輸給上位機,上位機檢測結(jié)果如下。
表2 膠條質(zhì)量檢測準確率
本文針對工業(yè)涂膠中經(jīng)常出現(xiàn)的斷膠,膠條過寬,過窄以及膠條偏移等缺陷,基于機器視覺模塊OpenCV設(shè)計了一種基于機器視覺的電池芯組涂膠缺陷檢測方法。實驗證明,該檢測方法的準確率在97.85%,證明了系統(tǒng)的可靠性和可信性,具有重要的參考價值,在檢測速度上,平均每個產(chǎn)品的檢測時間為98 ms,與傳統(tǒng)人工檢測相比,效率明顯提高。