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