邱國清
(閩南師范大學(xué)計算機學(xué)院,福建漳州 363000)
機器視覺是指利用相機、攝像機等傳感器,配合機器視覺算法賦予智能設(shè)備人眼的功能,從而進行物體的識別、檢測、測量等功能。在產(chǎn)業(yè)成熟度上,工業(yè)視覺已經(jīng)相對較為成熟,在半導(dǎo)體、包裝等行業(yè)的測量檢測已有較為廣泛的應(yīng)用。瑕疵檢測是視覺技術(shù)最難的部分,傳統(tǒng)的瑕疵檢測,基于模板和特定的過程學(xué)習(xí)后,對產(chǎn)品進行判斷,但是產(chǎn)品的瑕疵不確定因素很多,這種傳統(tǒng)的做法,很難真正意義上實現(xiàn)瑕疵檢測。以消費類電子產(chǎn)品為例,許多廠商最終的產(chǎn)品出廠檢測,往往耗費大量人力。所以,視覺技術(shù)借助人工智能,通過深度學(xué)習(xí)的算法,為瑕疵檢測賦能,并在多個行業(yè)得到應(yīng)用。傳統(tǒng)的成像系統(tǒng)都會有少量的畸變,造成圖像邊緣輪廓失真。柵格數(shù)據(jù)用一定的分解力把制圖表像按行、列進行劃分,從而得到離散的基本像元,與制圖物體的空間分布特征有著嚴(yán)格而直觀的對應(yīng)關(guān)系,對物體的可探性強,為機器視覺的應(yīng)用提供了可能性[1]。常用的哈夫變換法是利用三維空間參數(shù)聚類提取圓,最小二乘法[2]是先選擇曲線的數(shù)學(xué)模型,再通過采樣點的Y值與f(x)之差的平方和最小值來確定f(x)的系數(shù),但這兩種方法運算量大,速度慢。
通過從圓心反向繪制平行弦,計算每條弦與圓的交點坐標(biāo)值,即代表工件輪廓點。第一條弦是圓的直徑,相鄰兩條弦間距為d,則第k對弦與直徑的距離為dk,位于直徑上下相同距離且平行于x軸的兩條弦與工件輪廓的交點利用勾股定理求解,即os=sqrt(r*r-dk*dk),如圖1。

圖1 等間距平行線示意圖
若圓心坐標(biāo)為(x,y),半徑為r,弦心距為dk,則兩條弦的端點坐標(biāo)如公式1和2。
公式2中,工件半徑等于弦的兩個端點之間距離與弦心距為dk求平方根,工件圓心坐標(biāo)是依據(jù)弦的端點坐標(biāo)值、弦心距和兩個端點之間距離分別求解。
等間距平行線算法[3-4]用于離散的特征點的求解,而工件輪廓特征點提取是連續(xù)解空間的搜索[5]。因此,應(yīng)用等間距平行線算法求解工件輪廓特征點,首先要進行工件輪廓特征點的編碼與解碼問題。因此,通過2 ×n的矩陣表示第i條平行線上第j個特征點的位置。
其中:i是第i條平行線;j是第i條平行線上的特征點。提取到工件輪廓特征點所在柵格單元獲取行列值,為了方便傳輸和保存,柵格數(shù)據(jù)必須以一定的格式存儲到各種存儲介質(zhì)中。將像素單元所在行列值轉(zhuǎn)換為二進制編碼,依次交叉重新排列成新的二進制編碼,再轉(zhuǎn)換為十進制的Morton 編碼。例如第11 行第9 列,十進制Morton 編碼按指定順序排列:十進制11 和9 分別對應(yīng)二進制1011 和1001,按交叉方式排列的二進制串10101101,對應(yīng)的十進制Morton 編碼為172,按此編碼方式,圖1中等間距平行線與工件輪廓交點對應(yīng)的十進制Morton編碼如表1。

表1 編碼矩陣示例
從表1 可以看出,隨著平行線條數(shù)的增加,交點坐標(biāo)的行列值變大,對應(yīng)的Morton值長度也增大。
設(shè)定坐標(biāo)系,使得坐標(biāo)軸y 與平行線平行,在工件輪廓上沿著圓周取若干個點,構(gòu)成一個內(nèi)接任意多邊形,在已知多邊形輪廓各節(jié)點,求坐標(biāo)系下的x橫坐標(biāo)最小值和最大值,設(shè)置平行線的間距值,判斷平行線與輪廓是否有交點,如存在交點則保存在數(shù)據(jù)集合中,如圖2。

圖2 原始工件示意圖
從A 點開始,按順時針方向,依次計算排列等間距平行線與工件輪廓交點的坐標(biāo)值,根據(jù)數(shù)據(jù)集合的索引從偶數(shù)號讀取交點值,重新排列成有序的數(shù)據(jù)集合。
柵格數(shù)據(jù)模型是把空間分割成規(guī)則的網(wǎng)格,在各個網(wǎng)格上給出相應(yīng)的屬性值來表示地理實體的一種數(shù)據(jù)組織形式。柵格數(shù)據(jù)結(jié)構(gòu)是最簡單、直觀的空間數(shù)據(jù)結(jié)構(gòu),是把二維平面劃分成大小均勻、緊密相鄰的網(wǎng)格陣列,每個網(wǎng)格作為一個像元或像素,每個像元由行列號確定它的位置,且具有表示實體屬性類型或值的編碼值。工件輪廓可以看成一個實體模型,提取輪廓所在的柵格單元的像素值來判斷該像元的行列值,即表示輪廓的坐標(biāo)值。采用逐行掃描方式,讀取工件輪廓特征點所在的像素單元,構(gòu)成一個像素集合。此時像素集合中的元素是離散狀態(tài),缺乏關(guān)聯(lián)性,無法重構(gòu)工件輪廓,所以要對集合中的所有元素建立拓?fù)潢P(guān)系,把像素集合分成左集合和右集合兩個部分。從第一行柵格開始,按從左到右的順序,讀取工件輪廓所在柵格單元,依次存入左集合,在掃描過程中當(dāng)該行出現(xiàn)空白像素單元時,表明后續(xù)搜索到的像素單元將要存入右集合,依此類推,直到逐行掃描完畢,最后,按順時針或逆時針方向把左右兩個集合中的像素構(gòu)成一個完整的工件輪廓,如圖3。

圖3 工件輪廓柵格化示意圖
根據(jù)圖3,可以計算出特征點的行列值,如表2。

表2 工件輪廓特征點行列值
在工件輪廓檢測的過程中,由于受到外界物理量因素以及機器本身誤差的影響,容易產(chǎn)生工件輪廓變形而造成尺寸偏差,如果大于精度誤差,則需要擬合,如圖4。

圖4 工件擬合示意圖
根據(jù)公式計算出待檢測工件輪廓的特征值,通過與標(biāo)準(zhǔn)值比較,如果兩者的差距大于精度要求,再進一步比較兩者的大小,如果待檢測值大于標(biāo)準(zhǔn)值,則需要向內(nèi)縮減,否則向外增大。識別工件輪廓形變部位是測量形變尺寸的前提,由于形變是不規(guī)則的且柔性密封圈內(nèi)外圈形變方式和大小均不一樣,這給測量形變區(qū)域尺寸帶來較大困難,為此根據(jù)柵格原理,首先提取標(biāo)準(zhǔn)工件輪廓所經(jīng)過的柵格單元,其次讀取形變的工件輪廓所在像素單元,兩者進行比較,從而確定出形變區(qū)域并進一步計算工件輪廓特征點,如圖5。

圖5 柵格化示意圖
密封圈常應(yīng)用于結(jié)構(gòu)裝配之間的密封,密封圈的密封性能取決于密封圈和接觸構(gòu)件之間的接觸壓力,當(dāng)密封圈周圍的液體壓力差超過接觸所提供的抵抗力時,密封圈失效。剛性密封圈一般是金屬材質(zhì),發(fā)生形變幾率較小,測量時可以采用傳統(tǒng)的接觸式方法,如圖6。

圖6 剛性密封圈示意圖
對工件輪廓區(qū)域柵格化,計算工件形變部位所在柵格單元,如表3。

表3 剛性密封圈測量值
從表3 可以看出,工件形變部位采集5 個特征點,假設(shè)精度誤差范圍小于1,則第2、3、4 點需要擬合,由于網(wǎng)格間距為2 個單位,所以第2、4 兩點分別移動1 個單元,第3 點移動兩個單元,擬合后第2、3、4點與標(biāo)準(zhǔn)值誤差為-0.08、0.68、0.28,符合精度要求。
隨著電子工業(yè)的發(fā)展,橡膠產(chǎn)品廣泛地應(yīng)用在更高要求的工業(yè)領(lǐng)域。橡膠密封圈、橡膠按鍵等都是常見的配件,但橡膠零件的品質(zhì)很難掌控,因為橡膠產(chǎn)品本身是彈性的、容易形變。橡膠密封圈橫截面是圓形,輪廓是內(nèi)/外圓且容易因為形變造成尺寸發(fā)生改變。橡膠密封圈橫斷面通常是圓形,橫斷面的長度等于內(nèi)外圓半徑之差,在對密封圈進行參數(shù)測量時,應(yīng)當(dāng)依次提取內(nèi)外圓輪廓邊緣特征點,分別存入數(shù)據(jù)序列。在圖7 中,標(biāo)準(zhǔn)的外圈半徑值為100個像素單位,內(nèi)圈半徑值為105 個像素單位,橫斷面寬度為5 個像素單位,根據(jù)勾股定理計算前5 條弦結(jié)果如表4。

表4 柔性密封圈內(nèi)外徑與橫斷面的測量值/(PPI)

圖7 柔性密封圈示意圖
柔性密封圈橫斷面通常是圓形,由于形變造成很難準(zhǔn)確測量橫斷面的值。此外,傳統(tǒng)的成像系統(tǒng)也會帶來少量的畸變。為了提高測量精度,可以對工件輪廓區(qū)域柵格細(xì)化,提高測量精度,但隨著柵格細(xì)化,采集到的數(shù)據(jù)量越大。為了減少計算量同時控制誤差率,可以同時擬合內(nèi)外徑以提高橫斷面的精度。以表3 為例,在5 條平行線與輪廓的交點參數(shù)值,其中第2、3、4 條橫斷面誤差偏大,此時可以把第2、3、4 個點的外徑擬合為106.00、106.30、106.16,內(nèi)徑保持不變。此時橫斷面誤差為0.70%、-0.50%、0.40%。
基于柵格擬合是以柵格為單位,由于柵格單元是有一定長度大小,所以在擬合時,移動若干個單元后,擬合后的數(shù)值與原數(shù)值會有一定的誤差。為了減少誤差,需要對柵格進一步細(xì)化以提高精度值。
復(fù)雜度計算包括空間和時間復(fù)雜度。空間復(fù)雜度一般指存儲量的問題,時間復(fù)雜度則是指計算的工作量問題[6]。為了提高擬合測量精度以及較少誤差,需要對柵格細(xì)化,必然存儲量也會隨著增大。時間復(fù)雜度是基于算法的設(shè)計,并不會隨著柵格的細(xì)化而增大。
采用等間距平行線算法計算工件輪廓特征值,通過合理的編碼矩陣建立了工件輪廓特征點與平行線的對應(yīng)關(guān)系。為了擬合特征點,采用了柵格原理把工件輪廓區(qū)域平面轉(zhuǎn)換為二維柵格單元。針對剛性和柔性密封圈驗證了算法的有效性,實驗結(jié)果表明該算法在誤差精度取得了理想的結(jié)果。