南京郵電大學 張 澤
為了檢測工業零部件在加工使用過程中的所產生的缺陷,提出了基于點云邊緣特征缺陷檢測方法;方法首先將采集到的點云數據通過精簡、濾波、提取關鍵區域的方法進行預處理;然后將待處理的點云通過以點云邊緣為特征的方式來實現SAC-IA粗配準,通過ICP算法完成精配準;最后通過求取配準完成后的點云差異來實現缺陷檢測。通過實驗驗證了算法的可行性。
由于工業化進程的加速,工業自動化設備也越來越繁多復雜,這些設備上的零部件在加工使用過程中不可避免地存在一些劃痕和磨損,這些缺陷如果無法控制在合理安全的范圍,會對設備上的零部件造成無法預知的風險和損失。而對于傳統人工缺陷檢測方式的不穩定性,自動化缺陷檢測成為大多數廠商的選擇。
零部件表面缺陷檢測方法主要有超聲檢測、機械探頭接觸式檢測和光學檢測。對于超聲檢測,需要多次向待檢測零部件發送和接收信號才能完成檢測,檢測效率低。而機械探頭接觸式檢測不太適合表面較柔軟的零部件,檢測局限性比較大。基于光學的檢測方法是一種實時性好、非接觸、適用性強的檢測方法,因此,基于光學的視覺檢測方法也是大多數廠商選擇的方法。
本文提出的檢測方案是先對三維相機掃描形成的三維點云數據通過精簡、濾波、提取關鍵區域等操作進行預處理。然后對處理過的點云數據與標準點云數據做配準,再通過比對配準過的兩塊點云求異來實現缺陷的檢測。檢測流程如圖1所示。

圖1 缺陷檢測流程圖
采集出的點云數據因為各種因素,往往不太適宜直接對其處理,點云的數據量,點云的噪聲都對點云處理有很大影響,因此需要對點云數據進行精簡,濾波處理。
采集的初始點云數據通常密度比較大,需要對其簡化處理。圖2所示為一個長方體工件原始點云。

圖2 工件原始點云
本文采用下采樣濾波的方式簡化原點云數據。
體素化網格化簡化點云數據是常見的點云簡化方法,其原理是在一定區域內,選取該區域一定數據特征的點來代表所有點,可以在保證點云特征的情況下對點云精簡。該方法的主要步驟為:
(1)設置劃分柵格的尺寸,對所有數據進行柵格劃分。
(2)刪除不包含數據的柵格。
(3)處理每個柵格內的點云數據,按一定規則選擇代表點進行降采樣。
其中選擇代表點的規則多種多樣,本實驗將點云中柵格內重心點保留,柵格內其他點刪除。簡化后的點云如圖3所示。

圖3 簡化后點云
點云數據獲取的過程中,可能會存在與待檢測物體無關的噪聲和離群點,因此,預處理過程中需要包含點云噪的去除。對于噪聲的去除有下面三種方式:
(1)直通濾波法:通過設置點云坐標范圍來過濾無效點云,這種方法比較適合采圖過程中過濾一整塊無效的點云。
(2)半徑濾波法:以某點為中心畫一個圓計算落在該圓中點的數量,當數量大于給定值時,則保留該點,數量小于給定值則剔除該點。
(3)統計濾波法:其原理是計算每個點到其最近的k個臨近點的距離,如果其平均距離大于設定的值,則判定為噪聲。
本文根據采集到點云的特征,采用了直通濾波法去除一塊區域的點云,然后通過統計濾波器過濾掉剩余的離群點。點云去噪之前如圖4所示和去噪后的點云如圖5所示。

圖4 去噪之前點云

圖5 去噪之后點云
由于大部分物體的采集都是在平面上進行,所以點云數據不可避免地帶有傳送帶的點云信息的,將這部分點云數據過濾掉將極大地減少之后計算的計算量。傳送帶的特點是一個平面,平面的表達式是ax+by+cz+d=0,其中d設置為點到平面的距離,設置好d的范圍在點云數據中遍歷便可以確定點云中屬于平面的點,本文采用基于這一原理的采樣一致性算法中的SACSegmentation模塊來提取平面點云。提取出的點云如圖6所示,圖中綠色部分為提取出的平面,紅色部分為平面上待檢測物體的點云數據。

圖6 提取平面后的點云
本文的研究內容是根據三維點云數據找到待檢測物體上的缺陷,本文采用的是標準件與待檢測物體點云相比較的方法來找到缺陷,那么對于標準件和待檢測物體的點云之間就需要做到盡可能的對齊,因此需要將兩點云配準。
點云配準的本質是求剛體變換矩陣,將已知的一個物體在不同坐標系下的兩塊點云P和Q,經過旋轉變換R和平移矩陣T變換過后,歸一到統一的坐標系下,是的兩塊點云對應點的距離平方和F(R,T)最小,即:

配準過程主要分為兩個主要步驟:粗配準和精配準,粗配準主要通過計算兩塊點云的位資,得出粗略配準的結果,來加快精配準的速度。本文使用采樣一致性初始配準算法(SAC-IA)作為粗配準方法,ICP算法實現精配準方法。
點云在經過精簡和關鍵區域的提取后數據量已經只有三千左右的數據量,但是對于SAC-IA算法計算量依然非常巨大,因此針對點云數據的特點,采用點云提取的邊界數據作為粗配準的數據。
邊界信息的計算主要通過計算各點法線信息,通過各個法線方向之間的夾角來判斷該點是否為邊界點。確定表面一點法線的問題與估計表面的一個相切面法線的問題相似,因此就變成了最小二乘法平面擬合估計問題。估計表面法線這個解決方案就變成了分析一個協方差矩陣的特征矢量和特征值,對于每一個點Pi,對應的協方差矩陣C如下:

上式中k是Pi的臨近點數量,表示的是最近的臨近點的質心,λi是協方差矩陣的第j個特征值,是第j個特征向量。
當然法線還需要確定一個方向,只要知道視點Vp位置,就可以確定法線方向。一般情況下都取(0,0,0)為視點位置,對于法線,給它們定向只需要滿足以下公式即可統一法線方向。

一個點要想判斷是否為邊界點,判斷此點法線與相近k個點的法線的夾角大于指定閾值,就可以判斷此點為邊界點,本文所使用的閾值大小為。邊界點提取結果如圖7所示。

圖7 邊界點云數據
提取邊界點完成后就可以對點云進行粗配準,點云粗配準采用SAC-IA算法,該算法是按照兩塊點云上各點的特征,找到對應相似的特征點存在列表,然后計算對應點的變換矩陣來實現點云的粗配準。由于在計算特征之前,點云數據已將邊界作為點云的樣本點,所以只需計算兩塊點云邊界點的特征來計算變換矩陣即可。相比使用原點云配準,邊界點配準的計算速度明顯提升,表1統計了以邊界為特征方式下的點云配準時間和未經處理的配準時間。

表1 點云配準時間對比
圖8和圖10表示的是兩塊待配準點云數據,其中藍色是帶缺陷的點云數據,綠色是標準點云數據。圖9所示是以邊界為特征的粗配準后的點云數據,紅色為缺陷點云原本位置。圖11所示是未經處理的點云配準后的點云數據。

圖8 待配準點云

圖9 邊界特征粗配準點云

圖10 待配準點云

圖11 未處理粗配準點云
點云經過粗配準過后,需要更為精準的配準來保證檢測的準確性,通常采用ICP算法來實現。對于源點云p={pi,i=1,2,3...,m}和目標點云Q={qi,i=1,2,3...,m},ICP配準步驟如下:
(1)對源點云中的每一個點,在目標點云中找到其對應點,組成新的數據X={xi,i=1,2,3...,m},P和X形成對應點集。
(2)對于已經粗配準過的點云,設置初始的變換矩陣[R,T]’,這一步可大大減少迭代計算時間。
(3)根據對應點集和初始矩陣迭代計算新的變換矩陣[R,T]。
(4)旋轉變換源數據,計算旋轉后的點云和目標點云之間的均方誤差(MSE):

(5)考察MSE是否滿足給定的閾值,若不滿足則重復以上步驟,知道計算達到迭代次數或者滿足閾值。
精配準完成的點云如圖12所示。

圖12 精配準后的點云
點云的缺陷識別即將兩塊配準后的點云求異。本文識別待檢測物體的劃痕和磨損類缺陷,對待檢測點云Q每一個點q在標準點云P中遍歷尋找其最近點p,如果p和q之間的歐式距離小于指定閾值,那說明此點不屬于缺陷點,反之則屬于缺陷點。最后計算出的缺陷點位置如圖13所示,紅色部分為識別出的缺陷位置。

圖13 識別出的缺陷點云