?

鞋底噴膠軌跡自動生成算法研究

2023-09-21 15:48周棟鋒李俊峰
智能計算機與應用 2023年9期
關鍵詞:掩膜鞋底輪廓

周棟鋒, 李俊峰

(浙江理工大學信息科學與工程學院, 杭州 310018)

0 引 言

目前,國內外的鞋底噴膠系統都向智能化、自動化、可視化的多功能數控集成系統的方向發展,但很多鞋業的片底涂膠還采用人工的方式。 機器視覺可以代替人眼對目標進行檢測和分析,并做出相應的處理,現在的視覺噴膠技術大都集中在高幫鞋型,通過3D 點云的方式提取點[1]。 對點云進行處理不僅十分費時,且對片底來說,采用線激光或結構光提取輪廓精度不會很高。

在邊緣提取算法上,郭琳琴等[2]提出了基于分數階微分算子的圖像邊緣檢測方法,通過構造微分算子去計算x方向與y方向上的分數階算子,此方法的計算復雜度比較高,且只計算了兩個方向的梯度,在邊緣準確性上不太高;Feng Lin 等[3]提出了基于模糊徑向基數神經網絡的圖像邊緣檢測算法,黃勝等[4]提出了基于語義信息的精細化邊緣檢測方法,鄭恩壯等[5]提出了各向異性的多尺度邊緣檢測算法,這3 種方法均需要對目標圖片進行人工標注邊緣,對于工業生產來說既費時又不能保證穩定性;田貝樂等[6]提出一種改進的小波變換法替代高斯濾波,實現對圖像的降噪,采用改進的迭代算法對高低閾值進行計算,雖然增加了魯棒性,但邊緣的細化程度并不是很高;Hao[7]在普通Sobel 算法基礎上增加了其它方向上的梯度檢測,但這種只增加邊緣檢測,不做邊緣細化會產生邊緣斷開的情況;Orhei Ciprian 等[8]在圖像濾波上采用擴張濾波器,對邊緣會有比較好的保留效果,但對于背景復雜度不高的圖片來說會增加邊緣的寬度,導致精度有所下降;G.Domínguez-Rodríguez 等[9]提出了新的邊緣細化方法,計算x、y方向上的梯度并通過循環方式與原圖進行卷積,將卷積結果與設定閾值進行比較,在保留邊緣的情況下細化邊緣,整個處理過程中不僅要保證邊緣提取的準確性,還要保證處理速度不能過慢。

完成邊緣提取后,對邊緣進行進一步處理得到噴膠軌跡點,再通過標定的方式將圖像坐標轉變為機械坐標。 在標定上,Kenji Koide 等[10]都提出了手眼標定的方式,這些手眼標定的方式需要計算許多的轉換矩陣,計算復雜度比較高,且多次轉換計算有可能導致最終的誤差偏大。

為解決3D 相機成本過高且邊緣檢測精度不高的問題,本文提出采用2D 相機采集圖像并使用改進Sobel 算法提取片底邊緣輪廓的方式來代替3D相機進行邊緣提取。 為解決普通九點標定算法引入過多轉換矩陣導致轉換誤差過大問題,本文提出新的標定方式,直接對圖像坐標與機器人世界坐標系進行轉換,通過將得到的圖像坐標系的坐標數據與轉換矩陣相乘來得到世界坐標系實際數據。

本文首先使用自動掩膜生成算法去除背景干擾,再通過改進Sobel 算法提取邊緣,對提取的邊緣進行進一步處理得到噴膠點位,最后通過本文使用的新的標定算法對點位進行轉換,所有步驟結合即為本文鞋底噴膠軌跡自動生成算法。

最后,本文對改進Sobel 算法邊緣提取精度與普通Sobel 算法邊緣提取精度進行對比實驗,發現改進Sobel 算法邊緣提取精度高于普通Sobel 算法邊緣提取精度;此外,本文又對鞋底噴膠軌跡自動生成算法執行時間進行實驗,發現鞋底噴膠軌跡自動生成算法執行時間均小于1 s,符合生產節拍需求;實際噴膠測試,總體噴膠合格率在96%左右。 符合生產需求。

1 系統總體方案

本文所處理的片底樣式有兩種,分別是16Q328與16Q329,如圖1 所示。 每一種片底樣式存在35 ~39 四個鞋碼與左右腳,總共8 種不同的情況。

圖1 片底樣式Fig. 1 Sheet bottom style

2 邊緣提取算法

2.1 圖像預處理

圖像預處理過程流程如圖2 所示。

圖2 圖像預處理過程流程圖Fig. 2 Flow chart of the image preprocessing process

由于相機采集得到的圖像的背景比較復雜,對邊緣提取會產生很多的干擾。 本文提出自動掩膜生成,在覆蓋所需片底的情況下盡可能減少圖片的背景。 由于片底的顏色為黑色,與周圍環境的像素值有較大的差異,通過大量的測試數據發現片底區域的像素分布在0~150 范圍內,而背景區域的像素分布在151~255 的范圍內。 故通過像素分布的特征,設計自動掩膜生成特征區域,使得掩膜部分可以完全包括片底。

設原圖像為G,產生掩膜圖像M步驟如下:

Step 1設置一個篩選的最小與最大的像素閾值,本文選擇像素閾值范圍為(0<Pixel<150);

Step 2對滿足像素閾值范圍的點進行分析,計算出所有點行的最小值、列的最小值、行的最大值及列的最大值;

Step 3將行的最大值與行的最小值相減再除以2,將行的最大值與列的最小值相減再除以2,得到掩膜矩形的中心點坐標;

Step 4將行的最大值與行的最小值相減后的值加上60 作為矩形掩膜的長,將列的最大值與列的最小值相減后的值加上60 作為矩形掩膜的寬(加上60 是為了保證矩形掩膜可以覆蓋整個片底區域);

通過自動掩膜生成的方式產生一個矩形掩膜,將矩形掩膜圖像與原圖進行或運算,或運算得到結果圖記為O,或運算的計算,式(1):

為使片底區域與背景的對比度更大,方便后續的邊緣提取,先將或運算后圖像中鞋底的區域進行填充,將原先像素分布在0 ~150 范圍之內的像素點都填充為0。 填充步驟如下:

Step 1計算圖像中像素在0~150 的點;

Step 2將滿足Step1 的點的像素都變為0。

將填充后圖像記為F,填充后圖像如圖3 所示。

圖3 填充后圖像FFig. 3 Post-fill image F

2.2 邊緣提取

為得到準確的片底邊緣信息,本文對傳統的Sobel 算子做了改進,在邊緣提取之前增加濾波操作來平滑片底邊緣。 在邊緣提取過程中采用8 個不同的卷積算子對圖像8 個方向進行卷積操作,以防止圖像的邊緣出現斷裂情況。 完成邊緣提取后,增加邊緣細化操作,將多余的邊緣像素剔除掉,以便得到更加細致光滑的邊緣。

2.2.1 均值濾波

對預處理后的圖像F使用均值濾波器進行均值濾波,使得鞋底邊緣更加平滑,以便于后續邊緣提取的準確性。 采用以下3×3 卷積核對圖像進行濾波操作,將濾波后圖像記為G。 將目標矩陣與卷積核相乘得到新的矩陣卷積矩陣G(x,y),式(2):

其中,F(x,y) 是填充后圖像F中目標點與目標點周圍8 個點,共9 個點組成的目標矩陣。

將得到的G(x,y) 矩陣中的9 個元素取出相加后取平均值即為目標點像素值。 通過計算得到所有點濾波后像素值即可組成新的濾波后圖像G。 為了便于邊緣提取,將濾波后圖像中周圍黑色無關部分進行了剔除,濾波后圖像如圖4 所示。

圖4 濾波后圖像GFig. 4 Filtered image G

2.2.2 8 方向邊緣檢測

本文共使用8 個方向的邊緣檢測算子,從不同的方向進行數據提取,每個方向的卷積算子卷積核如式(3)~式(10)所示,8 方向邊緣檢測結果如圖5所示。

圖5 8 方向邊緣檢測結果Fig. 5 Eight-way edge detection results

因為整個圖像采用8 個方向的檢測值,用原有方法計算各個方向梯度的時間復雜度比較高。 為了減少計算量,本文采用式(11)計算某一個點的像素值S(x,y):

2.2.3 邊緣細化

為得到更加細致的邊緣,本文對Sobel 算子得到的邊緣進一步邊緣。 圖像像素點8 連通域如圖6所示。

圖6 8 連通域Fig. 6 Eight-linked domain

在完成邊緣提取后得到的圖像中,邊緣部分像素為255,其他地方像素均為0,對Sobel 算法所提取的所有邊緣點P0進行細化的步驟如下(E(P0) 表示P0周圍像素為0 的點的個數):

Step 1首先檢查邊緣點P0周圍8 個點像素是否全為0,若E(P0)=0,則判定這個點為離散點,直接剔除;

Step 2若滿足如下條件,則標記P0為待剔除邊緣點;

(1) 1 ≤E(P0) ≤7;

(2)P1+P7+P8≠0,P1+P2+P3≠0,P3+P4+P5≠0 且P5+P6+P7≠0;

Step 3一次循環遍歷后,將標記為待剔除點像素置0,將其剔除。

Step1 與Step2 兩步構成一次循環,多次循環執行Step1 與Step2 直到沒有滿足標記的條件為止。

在經過邊緣細化后的邊緣相比之前會變得更加細致,連續性也更高。

邊緣提取結果如圖7 所示,最終的邊緣細化結果如圖8 所示。

圖7 邊緣提取結果Fig. 7 Edge extraction results

圖8 邊緣細化結果Fig. 8 Edge refinement results

3 邊緣點提取與轉換

片底邊緣細化后,對邊緣特征點進行進一步的提取并轉換,并將邊緣點信息轉變為機器人循跡所需要的實際點位信息。 具體的邊緣點提取與轉換步驟流程如圖9 所示。

圖9 邊緣點提取與轉換流程圖Fig. 9 Edge point extraction and transformation flowchart

3.1 內縮輪廓

輪廓內縮需要將得到的輪廓以相同的距離往內側收縮,形成一個新的內縮輪廓。 以邊緣提取得到的輪廓中的每一個點為圓心,以自定義內縮半徑為圓半徑繪制圓形,將所有圓形區域所包含的所有點組成一張新的圖像。 圓形公式(12):

其中,(X0,Y0) 是圓心坐標,R為圓半徑。

由于圓具有8 分對稱性,圓心位于原點的圓有4 條對稱軸X=0、Y=0、X=Y和X=-Y,若已知圓弧上一點P(X,Y),就可以得到其關于4 條對稱軸的7 個對稱點:(X,-Y)、(-X,Y)、(-X,-Y)、(Y,X)、(Y,-X)、(-Y,X)、(-Y,-X),這種性質稱為8 分對稱性。 因此只要能畫出1/8 的圓弧,就可以利用對稱性的原理得到整個圓。

假設輪廓上某個點為(0,0),圓半徑大小為R,那么以這個(0,0) 點為圓心,R為半徑的圓上的1/8弧上的點可以通過以下方式求得,這里以(0,R) 點作為起始點,順時針計算1/8 圓弧。

圓函數如式(13)所示,將平面區域分成圓內和圓外,如圖10 所示。

圖10 圓內圓外示意圖Fig. 10 Schematic diagram of the inside and outside of the circle

假設圓弧的生成方向是從A到B方向,當某個點Pi被確定以后,Pi的下一個點Pi+1的取值就根據F(Xi,Yi) 的值進行判定,判定的原則:

(1)當F(Xi,Yi) ≤0 時,取Xi+1=Xi+1,Yi+1=Yi,從圓內走向圓外;

(2)當F(Xi,Yi)>0 時,取Xi+1=Xi,Yi+1=Yi-1,從圓外走向圓內。

對于判別式F(xi,yi) 的遞推公式,也要分兩種情況分別推算:

(1)當F(Xi,Yi) ≤0 時,Pi的下一個點Pi+1取Xi+1=Xi+1,Yi+1=Yi,判別式F(Xi+1,Yi+1) 的推算過程如式(14)所示;

(2)當F(Xi,Yi)>0 時,Pi的下一個點Pi+1取Xi+1=Xi,Yi+1=Yi- 1,判別式F(Xi+1,Yi+1) 的推算過程如式(15)所示。

在得到1/8 圓弧后,通過圓的8 分對稱性即可得到整個圓所包含的點的信息。

通過循環的方式多次繪制外接圓,將每一個外接圓都進行填充變為一個區域,再求取每一個外接圓,形成區域的并集形成新的區域,新的拼接區域如圖11 所示。 在得到新的拼接區域后,通過邊緣提取算子可以得到新區域的內外輪廓,內外輪廓如圖12所示。 通過比較兩個輪廓的實際長度,長度較小的輪廓即為所需要的內縮輪廓。

圖11 拼接區域Fig. 11 Splicing area

圖12 內外輪廓Fig. 12 Inner and outer contours

3.2 輪廓重組

每一個內縮輪廓由多個離散的點擬合而成,經過測試發現不同角度鞋底圖片得到的點的起始位置是不確定的,導致輪廓信息存在不確定性。 因為輪廓的起點無法確定,所以在執行后續處理算法前增加了將輪廓重組操作,輪廓重組以整個輪廓行最小值位置為起點,最小點基本處于鞋尖位置,故通過輪廓重組后的輪廓數組均可以鞋尖位置作為起點。

輪廓重組過程:假設原輪廓行數據數組為[TR0…TRend],通過輪廓重組后得到的行數據數組為[TRmin…TRend…TR0],其中[TRmin是行數據數組輪廓[TR0…TRend] 中最小值所在索引位置,同樣輪廓重組后得到列數據數組為[TCmin…TCend…TC0] 。

通過重組操作不管鞋底角度如何變化,原輪廓起點在什么位置,新的輪廓的起點都確定在鞋尖位置。

3.3 關鍵點提取

在每一次軌跡生成時,都需要知道鞋底、鞋跟兩個點的位置與鞋尖點的位置,這3 個點為整個輪廓的轉折點,需要提前取得。 通過繪制內縮輪廓外接圓的方式可以得到內縮輪廓的外接圓,再求取外接圓與內縮輪廓的交點,其中一個交點為鞋尖點,另一個交點為左側鞋跟交點。 由于在實際操作時確定了鞋底來料的大致方向,所以在圖像窗口中鞋底永遠在上方,可以保證鞋底點的行坐標永遠都是小于鞋尖點的行坐標,通過比較兩個交點的行坐標即可確定鞋尖點和鞋跟點。

通過大量測試輪廓總點數與鞋跟兩側所隔點數的關系可以獲得一個擬合方程,式(16):

其中,[Distance] 是取整后的距離,PointT是外輪廓點數。

通過計算得到鞋跟右側交點與左側交點所隔點的數量,從而在輪廓數組中找到右側交點。 得到的3 個關鍵點如圖13 所示。

圖13 3 個關鍵點Fig. 13 Three key points

3.4 獲取其他關鍵點

在得到了3 個關鍵點之后,通過其在輪廓數組中的索引的位置即可得到其它位置軌跡點的信息,將軌跡點進行組合就可以得到完整的軌跡信息,得到的軌跡如圖14 所示。

圖14 全部點與軌跡Fig. 14 All points and trajectories

3.5 坐標轉換

首先在鞋底中繪制9 個固定點,將鞋底放置在相機下進行圖像采集。 在圖像坐標中找到之前手動繪制的9 個固定點,并記錄下9 個點的行列坐標值,再將機器人移至9 個固定點,記錄實際機器人TCP(Tool Center Position)的X/Y值。

通過式(17)即可計算得到圖像坐標系中點位與實際機器人坐標系之間的轉換關系。 本文為了使得轉換矩陣更加的準確,在標定過程中選擇9 個點作為標定點。

通過計算式(17)即可得到轉換矩陣H,有了轉換矩陣H就可以把圖像坐標系上任意一個點坐標變為實際的機器人世界坐標系下的點坐標。

4 實驗

實驗所使用的計算機配置為:工控機CPU 為AMD Ryzen5 4600H,內存條為兩個Hynix 的8 GB內存條,頻率為4 600 MHz,軟件使用編譯器為VS2019,框架為NET 4.6.1。

4.1 改進Sobel 算子邊緣精度實驗

對普通Sobel 算法與本文所提出的改進Sobel算法的邊緣檢測準確性進行比較,將提取的邊緣點數據進行坐標轉換后轉為實際機器人可以使用的實際坐標,并通過移動機器人比較兩個算法的準確性。

本文做邊緣準確度實驗所取的邊緣點數均為40 個,每一次的誤差值是所有40 個點中每個點到真實邊緣距離的平均值。 測試方式為機器人走至算法給出的邊緣點,再通過人為操作機器人控制器將機器人TCP(Tool Center Position)移至實際邊緣記錄算法給出的Xf/ Yf值與控制器上實際邊緣的Xr/Yr值。 通過計算得出每一個點的誤差值,式(18):

本文總共進行了100 次對比實驗,普通Sobel算法邊緣提取與改進后Sobel 算法邊緣準確度對比如圖15 所示。

圖15 邊緣檢測準確度對比圖Fig. 15 Edge detection accuracy comparison chart

實驗結果表明,普通Sobel 算法的平均邊緣提取誤差為0.248 3,而改進后Sebel 算法的平均邊緣提取誤差為0.223 8,更加符合精度需求。

4.2 算法執行時間實驗

對不同鞋型鞋碼的片底進行隨意旋轉(旋轉角度控制在0°~180°之間),對不同位置與角度的片底進行軌跡提取。 本文總共對1 000 張不同樣式角度的鞋底進行軌跡提取,算法運行時間統計如圖16 所示,在1 000次算法執行實驗中算法執行最長耗時為0.990 s,最短耗時為0.416 s,大多數算法執行時間在0.4~0.8 s 之內,提取結果算法均十分理想,且所有算法執行時間都控制在1 s 之內,經計算1 000算法執行的平均時間為0.661 1 s,符合生產所需要速度要求。

圖16 算法運行時間結果Fig. 16 Algorithm runtime results

部分軌跡提取結果如圖17 所示。

圖17 部分軌跡提取結果Fig. 17 Partial trajectory extraction results

4.3 實際噴膠實驗

本文對片底進行了實際噴膠測試。 經過500 次噴膠測試,在500次的噴膠結果中合格樣品數量達到480 只,總體的合格率高達96%符合生產要求。

5 結束語

本文針對當前3D 相機處理片底價格昂貴且邊緣提取精度不高的問題,提出了通過使用2D 相機的方式來提取軌跡。 通過改進邊緣提取算法得到準確度更高的邊緣輪廓,并通過邊緣點提取算法從邊緣輪廓中獲取噴膠點位數據;最后,通過坐標轉換算法將圖像點位數據轉為實際機器人噴膠點位。

在不影響精度的情況下,如果可以找到更快速得到內縮輪廓的方式,可以使得軌跡生成的速度控制在0.5 s 之內。 目前的執行速度已經可以滿足生產的要求,從算法執行時間的測試數據來看,每一次的算法執行速度都控制在了1 s 之內,加上皮帶運行時間和機器人加工時間,全自動噴膠的總體速度也可以控制在5 s 之內,且最終的噴膠穩定性也符合生產要求,相比人工有很大的提升。

猜你喜歡
掩膜鞋底輪廓
利用掩膜和單應矩陣提高LK光流追蹤效果
一種結合圖像分割掩膜邊緣優化的B-PointRend網絡方法
OPENCV輪廓識別研究與實踐
畫與理
基于實時輪廓誤差估算的數控系統輪廓控制
“鞋底墊厚點,也能走得快”——貧困戶崔普選和他的“夢中夢”
光纖激光掩膜微細電解復合加工裝置研發
多層陰影掩膜結構及其制造和使用方法
在線學習機制下的Snake輪廓跟蹤
鞋底防滑
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合