盧文翔,熊瑞平,徐毅松,楊 康,李 華
(四川大學(xué)機械工程學(xué)院,成都 610065)
3D掃描儀用于捕獲現(xiàn)實世界物體的外形,用以在實際生產(chǎn)上生成3D仿真模型,在制造領(lǐng)域廣泛用于反求工程。攝像頭的成像局限性,形成完整3D模型的過程通常需要基于物理對象多個觀察角獲取對應(yīng)的3D數(shù)據(jù)(以點云的形式)。每個視圖以從特定方向覆蓋對象以捕獲整個對象,對齊這些視圖以產(chǎn)生一個合并的點云,然后可以將其重構(gòu)為3D表面,對齊的過程稱為點云的配準(zhǔn)[1]。目前國內(nèi)外研究人員已經(jīng)取得多種成果,BESL等[2]提出了最近點迭代(iterative closest point,ICP)算法以及基于ICP算法優(yōu)化的ICP衍生算法[3-6],REN等[7]提出一種基于新的距離誤差度量優(yōu)化ICP算法,在減少選取點對的錯誤率的同時提升了配準(zhǔn)收斂速度,HATTAB等[8]提出通過手動選擇特征平面進行對應(yīng)粗配準(zhǔn)減少ICP迭代次數(shù),優(yōu)化了ICP在制造業(yè)中的應(yīng)用,LI等[9]提出通過使用Kd-tree優(yōu)化數(shù)據(jù)的存儲和搜索方式,進一步在ICP迭代過程中優(yōu)化尋找配準(zhǔn)點對和配準(zhǔn)時間,提高效率。
目前制造加工中,工件由于尺寸差異大,難以通過一次連續(xù)的掃描去獲取完整的工件三維點云模型,于是對多個視角掃描獲取點云再進行點云配準(zhǔn)是解決工件識別的重要方式但是點云配準(zhǔn)并不容易,特別是對于制造加工工件,其尺寸形狀差別較大,點云數(shù)據(jù)量大,計算難度高,處理效率慢,精度要求高。
但是制造加工零件由于加工工藝(車銑刨磨)得到的加工面大多形成的為圓柱面、圓錐面與平面,所以機械模型外形可被看作是一系列平面與特征曲面的結(jié)合。將點云配準(zhǔn)的對象設(shè)置為配準(zhǔn)點云與待配準(zhǔn)點云,本文提出一種配準(zhǔn)方法,首先通過基于各個面的形狀特征將其分離分割,并進行形狀歸類,對同種形狀的子點云集基于其法線特征轉(zhuǎn)化為同形狀的子法線點云,并獲得其最佳對齊方式,完成點云粗配準(zhǔn)再應(yīng)用ICP最近點迭代進行精配準(zhǔn)。
該算法通過比較點云相鄰點特征參數(shù)例如法線之間角度,將滿足平滑約束的連續(xù)相鄰點輸出,并通過基于KD-Tree最近鄰搜索應(yīng)用歐式聚類設(shè)定歐式距離條件篩選出滿足某一形狀特征的子點云。
待配準(zhǔn)點云集Q{qi,1≤i≤n}與源點云集P{pi,1≤i≤n}是基于同一工業(yè)外殼的不同角度點云集。基于離散點云數(shù)據(jù)估計三維空間點云表面法線,使用三維數(shù)據(jù)擬合二維小平面,將三維點云法線求解轉(zhuǎn)化為該點局部相鄰點云的最小二乘法平面擬合問題,小平面的法線便是該點法線。本文主要使用主成分分析方法(principal components analysis,PCA)來完成[10],來獲取兩點云集的法線與曲率。
區(qū)域生長聚類算法本質(zhì)上是同類點云的分割,本文將法線與曲率作為分割的參考系數(shù),將表面法向量與曲率相似的局部點云簇合并成同一類以點云索引為印記保存為同一子點云,最后得到帶點云索引indices的子點云集。運用區(qū)域生長算法對點云集進行處理的核心是:在每一次聚類循環(huán)進行聚類預(yù)處理,基于點云各點由步驟1計算得到的曲率開始排序,選擇曲率最小的點作為初始種子點開始生長,選擇曲率最小的點作為初始種子點的意義在于曲率最小處能夠保證該局部的平滑,能夠減少分割區(qū)域的總數(shù),提高聚類效率。
點云索引indices偽代碼如表1所示。
表1 區(qū)域生長算法偽代碼
該混合算法本質(zhì)上也是一種區(qū)域生長算法,但是其聚類判斷標(biāo)準(zhǔn)是點之間的歐幾里得距離與其他能夠自行定義的條件,在聚類表現(xiàn)上更加靈活。對算法同樣通過設(shè)置初始種子點q,利用Kd-Tree鄰近點搜索k個距離q最近的點,基于特征匹配判斷標(biāo)準(zhǔn)決定是否聚類于目前特征點集,隨著種子點完全遍歷即輸入點云完全經(jīng)過聚類,產(chǎn)生一系列特定形狀的子點云比如平面子點云、柱面子點云,完成子點云集的篩選分類。
進行特征匹配判斷,基于子點云中點的形狀特征與所需匹配面的特性進行比對,驗證子點云是否為預(yù)設(shè)的形狀模型,從而進行聚類分割,轉(zhuǎn)化為待配準(zhǔn)特征子點云集與源特征子點云集。
預(yù)設(shè)識別模型為平面,基于條件歐式距離即通過對子點云中每個點與鄰域點的法線向量夾角與算法中預(yù)設(shè)偏差閾值進行比較驗證,可以識別該子點云是否滿足平面子點云,滿足則保存至平面子點云集中方面后續(xù)操作,不滿足加入剩余子點云集;如果該子點云部分符合預(yù)設(shè)平面模型,則通過判斷符合模型部分點數(shù)與總點數(shù)比較,滿足預(yù)設(shè)聚類點數(shù)條件,則將該部分點云聚類保存為一新子點云到平面子點云集,剩余點聚類保存為一子點云至剩余子點云集。
預(yù)設(shè)識別模型為圓柱面,只需更改算法中的評判依據(jù)為采樣一致性算法中的圓柱體模型作為評判依據(jù)[11],進一步進行遍歷,直到全部子點云完成特征匹配,不滿足任一預(yù)設(shè)模型的子點云刪除。
偽代碼如表2所示。
表2 混合聚類識別算法偽代碼
傳統(tǒng)ICP粗配準(zhǔn)中的選擇多個特征點對(特征點對指兩個需完成配準(zhǔn)的三維點云模型中擁有特殊標(biāo)志的一對點,例如法線曲線突變的特征點以及存在于點云邊界,常用手動的方式進行選擇)進行初始的點云粗配準(zhǔn),由于篩選的基數(shù)過大,計算量非常大,造成匹配時間很長且通常配準(zhǔn)精度不高。為了達到最后的配準(zhǔn)效果,精配準(zhǔn)ICP過程需要更大的迭代次數(shù)才能夠達到要求的配準(zhǔn)進度從而收斂。
本文的配準(zhǔn)算法通過優(yōu)化原本的ICP配準(zhǔn)的粗配準(zhǔn)過程,通過選擇兩個需配準(zhǔn)點云的特征面的法線作為特征法線對,在多個特征法線對的基礎(chǔ)上,去進行點云的特征配準(zhǔn),求得變換矩陣。在以法線作為配準(zhǔn)基礎(chǔ)上,點云的粗配準(zhǔn)能夠得到比較好的效果且為ICP精配準(zhǔn)提高效率。本文優(yōu)化傳統(tǒng)粗配準(zhǔn)特征點對配準(zhǔn)中始終對于大數(shù)據(jù)量的點云進行變換的方式,通過求取法線與坐標(biāo)系單位球的交點將多個特征法線對抽象成兩個法線特征點云,再對法線點云應(yīng)用奇異值分解法(singular value decomposition,SVD)解出法線之間的變換矩陣,再應(yīng)用ICP的驗證矩陣進行優(yōu)化迭代,法線點云數(shù)量較少,從而達到較好的粗配準(zhǔn)效果。
該算法通過輸入兩個基于不同視角的同一物體點云,輸出一個剛體變換矩陣,通過前文預(yù)處理的分割處理,基于特征進行配準(zhǔn),進一步得到待配準(zhǔn)點云與源點云的粗糙變換矩陣-旋轉(zhuǎn)矩陣與平移矩陣,再通過最近點迭代的方式進行精配準(zhǔn),得到最終結(jié)果。
步驟1:基于特征面幾何特性的分割算法-配準(zhǔn)預(yù)處理。
步驟2:獲取最優(yōu)的旋轉(zhuǎn)矩陣。
(1)
(2)
求解P2、Q2配準(zhǔn)的旋轉(zhuǎn)矩陣R與位移向量T,定義Q2經(jīng)旋轉(zhuǎn)位移變換之后的點云與P2之間N對最近點之間距離f(R,T)為:
(3)
運用奇異值分解的方法求解得法線點云最優(yōu)的旋轉(zhuǎn)矩陣R,平移矩陣T。用待配準(zhǔn)點云Q應(yīng)用R,T進行矩陣變換得到變換后的旋轉(zhuǎn)變換點云Q′[12]。
步驟3:獲取最優(yōu)的平移矩陣。
(4)
最優(yōu)的平移矩陣即為:
T′=p-q′
(5)
步驟4: ICP精配準(zhǔn)。
通過上文所求的最優(yōu)旋轉(zhuǎn)平移矩陣,完成待配準(zhǔn)點云Q與源點云P的粗配準(zhǔn),應(yīng)用文獻[2]中的ICP配準(zhǔn)方法對Q″與P進行迭代完成精配準(zhǔn)。
本文采用基于開源軟件cloudcompare開發(fā)的軟件進行實驗。通過加載工業(yè)實際零件(最大方向長度約9 m)的點云模型,經(jīng)處理得到的不同視角的源點云及待配準(zhǔn)點云進行仿真實驗得到如圖1a所示的實驗過程,紅色為源點云,白色為待配準(zhǔn)點云。圖1b為經(jīng)由上文方法配準(zhǔn)預(yù)處理得到的兩點云的分割處理結(jié)果,不同顏色代表不同的分割點云面,經(jīng)由特征提取得到兩法線點云如圖1c所示,求解法線點云的變換矩陣完成如圖1d所示的法線點云配準(zhǔn)。帶入法線點云的變換矩陣作為源點云與待配準(zhǔn)點云的旋轉(zhuǎn)矩陣完成粗配準(zhǔn)旋轉(zhuǎn)變換如圖1e所示,計算平移矩陣完成粗配準(zhǔn)平移變換如圖1f所示,最后使用ICP配準(zhǔn)實現(xiàn)ICP精配準(zhǔn)如圖1g所示,完成點云配準(zhǔn)過程。
(a) 原始點云狀態(tài) (b) 點云分割狀態(tài) (c) 法線點云配準(zhǔn)前 (d) 法線點云配準(zhǔn)后
(e) 粗配準(zhǔn)旋轉(zhuǎn)變換 (f) 粗配準(zhǔn)平移變換 (g) ICP配準(zhǔn)
點云ICP配準(zhǔn)過程如圖2所示,點云配準(zhǔn)結(jié)果如表3所示。
表3 本文算法與經(jīng)典ICP算法比較
(a) 原始點云 (b) ICP迭代5次 (c) ICP迭代10次 (d) ICP迭代15次
(e) ICP迭代 20次 (f) ICP迭代 30次 (g) ICP迭代 50次 (h) ICP迭代 70次
在針對工業(yè)應(yīng)用中含有較多平面、柱面的零件,本文的基于特征分割識別的點云配準(zhǔn)算法有著更好的精度。這是由于在粗配準(zhǔn)處理中本文通過聚類分割出點云特征并識別點云特征面并基于其法線進行配準(zhǔn),得到較好的粗配準(zhǔn)效果,減少精配準(zhǔn)迭代工作量。
本文提出了一種適用于工業(yè)加工零件的一種基于特征分割識別的點云配準(zhǔn)方法,通過配準(zhǔn)預(yù)處理分割出源點云和待配準(zhǔn)點云的各個基礎(chǔ)特征面(平面,圓柱等)提取其特征(法線、軸線)轉(zhuǎn)化為法線點云進行配準(zhǔn)得到粗配準(zhǔn)旋轉(zhuǎn)矩陣,代入源點云和待配準(zhǔn)點云后求其平移矩陣,變換后完成粗配準(zhǔn),使用ICP方法完成精配準(zhǔn),獲取變換方案。在配準(zhǔn)過程中,通過少量數(shù)據(jù)的法線點云代替冗雜的完整點云粗配準(zhǔn)或者手動選點配準(zhǔn)大量節(jié)約粗配準(zhǔn)時間,增加效率,通過RANSAC特征提取的特征信息與單位球求解法線點云減少了由對稱形狀帶來的旋轉(zhuǎn)錯誤,基于重心比對更正一定平移錯誤實現(xiàn)效率較高的粗配準(zhǔn)。該算法的效率較高、誤差較小,能夠滿足每分鐘1~2個工件的噴涂節(jié)拍要求,并可用于噴涂路徑優(yōu)化,滿足生產(chǎn)需要。不過由于本文方法依賴于特征面,可用特征面較少或者重合比例較高的點云,在法線點云生成時會產(chǎn)生大量重合點,使得某個點云特征方向?qū)ε錅?zhǔn)效果影響較大,從而導(dǎo)致最后配準(zhǔn)結(jié)果不理想。