李紅衛,魏澤勇
(1.中航西安飛機工業集團股份有限公司,西安 710089;2.南京航空航天大學計算機科學與技術學院/人工智能學院,南京 211106)
隨著數字化制造模式的全面推廣應用,飛機制造中小應力、無余量裝配已成為常態,零部件的制造精度直接關系到飛機產品的質量和壽命。如何保證每個零部件的制造精度越來越受到重視[1?2]。目前國內對于復雜零部件的檢測,大多采用三坐標測量機,這種方法檢測精度高,但是由于采用了接觸式測頭,存在測端半徑補償誤差,尤其對于結構復雜且體積較大的零部件,不但檢測效率更低,而且定位困難[3],難以快速準確地測量。實際中,部組件或一些超大型零件甚至因幾何尺寸超出測量機的有效工作范圍而無法使用測量機測量。隨著三維掃描技術和計算機技術的發展[4?6],點云數據處理技術越來越受到幾何測量領域的關注,基于點云數據的模型構建與數字化分析模式日益成為機械零部件檢測技術的研究方向。該模式利用激光等波束的掃描,通過對發射波束和回波接收的時間差、方位角度差值的采集以及對距離、方位的計算分析,可以獲得高精度、高密度的三維掃描點云數據,繼而在對點云數據進行分析處理的基礎上,提取零部件幾何特征,以實現零部件實際幾何形位的定量分析及特征的逆向重構。
點云數據的特征可以反映模型的外形和基本結構[7?8],并且包含了模型很多重要信息,因此提取模型的特征在幾何分析、曲面重建與編輯以及孔洞修補等方面有著廣泛的應用。如何準確、快速檢測出點云模型的特征點,國內外專家開展了大量深入的研究。目前針對點云特征點提取的方法一般分為3 類:(1)基于點云法向量,曲率及投影等幾何特征的方法[9?11];(2)基于主成分分析(Principal com?ponents analysis,PCA)的方法[12?14];(3)基于映像和模型構建的特征點提取方法[15?16]。
對于基于曲率、法向量以及投影等幾何特征的方法,Liu 和Jin[17]構建多尺度算子,在每個點的多個鄰域范圍內計算法線的差來識別位于特征區域的點。Kim[18]利用近似移動最小二乘法來擬合局部平面,通過擬合的多項式方程及其導數來估計給定鄰域范圍內的曲率,然后構建Voronoi 圖來獲取鄰域點的信息,從而提取出谷脊點,但是這種方法不適用于只包含少量鄰域點的尖銳點處,并且算法耗時長。
針對基于主成分分析的方法,Gumhold 等[19]首先構建泰森多邊形獲取鄰域信息,再采用PCA方法,根據求解協方差矩陣的特征值之間比例關系將點分為面點、邊點和角點,進而判斷點云中各點是否屬于特征線。上官寧和劉斌[20]通過主成分分析的方法獲得主軸方向,沿著特征點的生長方向尋找后續特征點,從而實現特征線的提取。Pauly等[21]引入多尺度分析,首先使用基于局部鄰域的協方差分析方法標記出潛在的特征點,再變換鄰域半徑,從而可以多尺度地處理含有噪聲的模型。該類方法利用協方差分析點歸屬不同特征的概率,但是無法實現對目標物突兀區域特征線的判斷。
對于基于映像和模型構建的特征點提取方法,龐旭芳等[22]首先擬合曲面多項式,并計算點云每個點的主曲率,將主曲率絕對值較大的點標記為潛在谷脊特征點,通過協方差分析計算谷脊特征點在一定鄰域范圍內的主軸方向,再將潛在谷脊點投影得到平滑的谷脊線。Weber 等[23]首先在鄰域范圍內構建高斯圖,根據鄰域范圍內法線變化度來進行高斯映射聚類,依據每個點所屬類別的個數判別特征點。但是該方法對于平緩過渡的特征信息不夠敏感,無法提取強度漸變的特征信息。
由上述分析可知,第1 類及第3 類方法大多采用了局部曲面擬合或重建的策略,這類方法對噪聲敏感,魯棒性差并且計算復雜度較高。此外,由于模型中多尺度特征的曲率、法向量變化多樣,采用此類方法檢測是不準確的或者很難區分開非特征點與特征點。同時第2 類基于PCA 方法主要依靠協方差分析,然而協方差分析對模型微分性質的敏感度有限,無法提取細小的特征。綜上所述,現有算法對于點云模型的輪廓線、棱線等(大尺度特征)提取效果較好,但是不能處理模型多尺度特征的情況。
為此,本文提出了基于鄰域波動的點云多尺度特征提取方法。首先利用PCA 的原理計算法線,并對法線進行L1中值法向量濾波,再根據濾波后的法線計算局部坐標系,基于局部坐標系計算各點的鄰域波動,統計分析模型的波動性分布情況,提取初始特征點,最后對初始特征點進行收縮優化,得到清晰完整的特征點。該算法較之已有算法有以下優點:(1)利用L1中值原理,在去除噪聲的同時,保持模型的多尺度特征;(2)針對初始特征點冗余問題,提出了一種迭代收縮優化策略,可以得到清晰完整的特征點;(3)算法計算復雜度小,處理效率高,對噪聲魯棒。
三維模型的特征點是指視覺上體現模型形狀特性的點集,主要包含多尺度尖銳棱邊點、谷脊點。多尺度在于特征的曲率范圍和幾何尺寸范圍。給定的一個不含有法向信息的點云模型,n為點云中數據點的個數。本文算法旨在檢測輸入模型P的多尺度特征,提取清晰完整的特征點。
本文針對飛機零部件的點云模型提出一種多尺度特征檢測算法,首先對點云模型進行L1中值法向量濾波,得到特征明顯的法向量場;然后計算各點的鄰域波動情況,統計分析整體模型的波動性分布,提取初始特征點集;最后對初始特征點進行收縮優化,得到最終的清晰完整的特征點。
在獲取點云數據的過程中,受到周圍環境因素的影響,例如物體遮擋,被測物體的細微震動等,或人為因素的影響,例如不正確的測量方法,都會給測量獲取的點云數據帶入噪聲。這些噪聲會使得點云模型的幾何特征變得不明顯。而法線是點云模型的一個重要的幾何特征,準確的法線可以更精準地描繪模型的特征。因此,在進行特征提取前,本文算法首先對輸入點云的法向量場進行濾波,使其恢復出不受噪聲干擾、特征清晰的法向量場。
確定點云每個點的法線問題可以簡化為估計過該點與點云表面相切的平面法線問題,因此估計點云每個點的法線問題就變成在一定鄰域范圍內估計最小二乘平面擬合的問題,Hoppe 等[24]首先在表面重建中提出了這種方法——PCA 法。主成分分析法將n維特征映射到k維上,就是從原始空間中順序地找出一組相互正交的坐標軸,最終化簡為對一個協方差矩陣的特征向量和特征值的分析。給定一組點云數據P={p1,p2,…,pn},對于每個點pi,其協方差矩陣為

但由于PCA 算法的低通特性,計算出的法線在尖銳特征處過于光滑,不能保持模型的尖銳特征,從而增加了模型的特征提取難度。如圖1 所示,雙邊濾波雖然在保持邊緣尖銳特征方面有一定效果,但是對多尺度特征卻表現不佳,而L1中值濾波卻可以很好地保持多尺度特征。因此,本文在計算局部波動性前,先使用L1中值對模型進行法向量濾波。

圖1 PCA、雙邊濾波與L1中值濾波法向量對比圖Fig.1 Comparison of normal results computed by PCA, bi?lateral filtering, and L1 median filtering

為得到在特征區域有明顯區分的法向量場,本章算法將L1中值原理應用于本文算法的法向量濾波任務中,通過衡量點pi以及其鄰點pj之間的法線差異,L1中值法向量濾波可表示為

式中:Ωi為點pi的r半徑鄰域,w(?)為高斯權重函數,θij表示點pi與點pj的法線夾角,σs表示目標點pi到鄰點pj的距離對點pi的影響因子,σs越大,點云越光順,但保持特征的能力越差;σr表示ni與nj之間的夾角對ni的影響,σr越小,保持特征能力越好。
由于式(2)是非線性的,進行優化求解會比較困難,于是本文提出了一種優化的迭代形式。將式(2)對ni進行求導,并令其等于零,可得到

基于濾波后的法線,本文將對每個點局部波動性Δ={δ1,δ2,…,δn}的計算方法進行詳細介紹。首先,將目標點以及其r鄰域點投影到目標點的法向量上,即將目標點的法線作為基準向量,得到目標點及其鄰域點在其基準向量上的局部坐標值,然后將目標點與其鄰點的局部坐標值作差,得到兩點之間的差異

式中δij表示點pi與pj在基準向量n′iT上的距離。波動性計算如圖2 所示。

圖2 波動性計算示意圖Fig.2 Illustration of local surface variation
其次,找出δij的最大值,即找出點pi與其r半徑鄰域內所有點中波動性最大的值;最后,將最大差異值作為目標點的局部波動性值,即

遍歷所有點,得到每個點的局部波動性。
與傳統的提取特征方法如計算曲率、法線夾角等相比,本文選擇通過在法向量上度量各點的波動性,其原因如下。
多尺度特征中的小尺度特征相比于整個模型的尺度非常小,而曲率計算的思路一般是對點pi與其鄰域點pj組成的局部點云做最小二乘擬合,解得系數后根據空間曲面曲線的性質計算數據點的高斯曲率、平均曲率。局部鄰域中某些點計算出的曲率可能會比較大,這些點會被認為是特征點。但是在整體模型的視角,一個目標點的r鄰域相對整個模型是非常小的,這些被誤判的特征點的變化可能只是零件表面不光滑導致的,而并非是特征點。因此,通過計算曲率提取特征點的方法是不可行的。對于小尺度特征,因PCA 算法不能捕捉細小的特征,所以通過該方法計算出來的法線并不準確,也就不能夠通過法線的變化準確地判斷出特征點的位置。在得到所有點的局部波動性Δ后,統計分析波動性的分布區間,設定波動性閾值ω,若δi大于ω,則認為點pi為初始特征點;反之,則為非特征點。波動性閾值的取值與點云數據要提取的特征尺度密切相關,對于大尺度特征可以將波動性閾值取得大一些,這樣保證能夠很好地區分出初始特征點與非特征點;然而對于小尺度特征應該將波動性閾值取得小一些,確保能夠識別細微特征處的特征點。而波動性閾值的取值需要綜合考慮這兩方面的因素。
由于通過設定閾值得到的初始特征點存在一定冗余數據(圖3(a)),無法精準定位到特征位置,為了得到沒有冗余數據并且能夠準確表達特征位置的特征點集,本文對初始特征點進行收縮優化,提出下列優化函數

式中p′i為優化后的特征點。式(3)第1 項為數據項,保證優化后的點位置與優化前盡可能相近,第2 項為法向量約束項,將p′i投影到由鄰點pi及其法線nj定義的平面上。由于初始特征點靠近邊緣位置,位于一個平面上的點的鄰域點內很容易包含位于另一平面上的點,因此,會受到另一平面上點的吸附作用,逐漸移動靠近聚集在邊緣處(圖3(b)),最終形成清晰完整的特征點集。

圖3 收縮優化結果圖Fig.3 Feature points optimization
通過上述分析,本文的參數主要是鄰域半徑r、波動性閾值ω、影響因子σs、σr。對于鄰域半徑r,與模型特征尺度大小成正比,對于初始鄰域半徑r的選擇以1.0%的模型包圍盒對角線長度為初始值,根據具體提取效果再進行調整。影響因子σs、σr大小對結果的影響已在1.1 節進行敘述,這里不再贅述。σs是距離影響因子,根據經驗通常設置為和鄰域大小r相同;σr是表征鄰域內點的法線相似性,一般設置為15°。對于波動性閾值ω,既要保證能夠去除非特征點,又要保證不會去除特征點,為了生動地展示ω對結果的影響,實驗中ω分別取0.005,0.008,0.012,0.015 和0.017,并統計了提取的特征點數量,實驗結果如圖4 所示。從圖4 中可以看出,ω越小,提取的特征點越多,卻也參雜了許多非特征點;ω越大,提取的特征點越少,但過大之后,特征點出現明顯不連續,容易使特征變模糊。因此,需要根據具體模型和特征尺度大小,進行閾值的設定。確保設定的閾值能夠識別模型中的細微特征。

圖4 不同閾值下的特征點提取效果及特征點數統計Fig.4 Feature extraction results and feature point statistics with different thresholds
為驗證本文算法的可行性、有效性和優越性,在Intel Core i7?8700K、3.70 GHz,RAM 16 GB 的PC 機上,VS2013 的開發平臺下實現本文的多尺度特征提取方法,并引入了對比試驗,實驗結果如圖5~7 所示。圖5 為某機械模型的實驗結果,圖5(a)為其點云模型,該模型輪廓特征明顯,包含各種直線與曲線特征,同時也包含尖銳與非尖銳特征,可以非常有力地驗證本文算法的有效性。圖5(c)基于曲率的方法和圖5(d)基于法向量的方法對于變化稍小的特征不敏感,不能檢測出這種小尺度特征。同時,從圖5(e)不難看出,基于光順收縮(Smooth shrink index,SSI)的方法不僅無法提取尺度較小的特征,而且會將很多非特征點誤識別為特征點。從圖5(f)可以看出,本文算法檢測出的邊界完整度高,可以清晰地識別模型的特征與基本輪廓,圖6 中模型具有淺特征(尺寸較?。?,基于法向量的方法雖然可以檢測出一些小尺度特征點,但是不連續,且雜點較多,特征不清晰;對比而言,本文算法適用于各種尺度的特征,提取出的特征點清晰連續,可以較好地反映模型的結構特征。

圖5 機械模型不同算法特征點提取結果Fig.5 Feature point detection results on mechanical part by different methods

圖6 帶有淺特征機械模型不同算法特征點提取結果Fig.6 Feature point detection results on a mechanical part with shallow features by different methods
為了進一步驗證該算法的通用性,本文加入了真實掃描數據的實驗,圖7 是飛機蒙皮的原始點云模型,該模型采用HandySCAN 700 激光掃描儀獲得,掃描分辨率為0.050 mm,掃描得到的點未經任何處理,含有實際噪聲,點數為150×104,此模型數據量較大,且蒙皮修邊線相對于模型整體而言非常小,因此非??简炈惴ㄐ阅?。從圖7(b)不難看出,基于法線的方法對于這種法線變化不明顯的點云模型特征已經完全不起作用;而圖7(c)基于曲率的方法雖然能夠在一定程度上檢測出少量的特征點,但包含很多噪聲點。從圖7(d~e)可以看出,基于協方差分析的方法和基于光順收縮的方法無法識別點云模型中細微特征處的特征點。相比于上述方法,本文算法可以明確區分特征點與非特征點,提取出清晰準確的特征點。

圖7 飛機蒙皮實際掃描模型不同算法特征點檢測結果Fig.7 Feature point detection results on a real?scanned aircraft skin by different methods
除了上文的定性可視化分析,本文還進行了特征點檢測的量化分析。量化分析主要是對特征點檢測結果進行量化的評估,包括特征點提取精度分析、算法效率分析和算法的抗噪性能分析。特征點提取精度通常定義為檢測的特征點到真實特征點的平均距離。其中真實特征點是通過專業軟件人工標注的結果,精度分析結果如表1 所示。從表1可知,本文算法特征提取精度明顯高于其余算法,首先基于鄰域波動性分析的初始特征點檢測方法能夠無差別地檢測點云模型中各種尺度的特征點,保證特征點檢測的完整性;其次本文算法有收縮優化策略,能夠將提取的初始特征點收縮優化到模型特征位置,因而特征點提取的精度要高于其他算法。

表1 特征點提取誤差分析Table 1 Error statistics of feature detectionmm
為討論算法的時間效率,本文基于圖5~7 中的3 個實驗模型,對所有對比算法的運行時間進行了統計,如表2 所示。由于本文算法涉及多個步驟,并且收縮優化過程存在迭代計算,算法運行的總時間與迭代次數有密切關系,故而總時間消耗多于其他方法。

表2 不同算法運行效率統計分析Table 2 Time statistics of different methodss
為測試算法的抗噪性,本文對3 個模型分別加入不同尺度的噪聲。具體的噪聲尺度是指原始模型采樣點相對于模型包圍盒對角線長隨機偏移百分比。在實驗中,分別對模型施加1%,2%,3%的噪聲。如圖8 所示,每個模型的第1 行為噪聲示意圖,第2 行是對應的特征提取結果。從圖8 中可以看出,當噪聲尺度逐漸變大時,經算法處理得到的特征點集依舊較為理想。同時,計算了不同噪聲下本文算法結果的誤差,結果如表3 所示。具體地,隨著噪聲尺度越高,算法所提取的特征點精度越低。在1%和2%的噪聲尺度下,算法結果誤差相差不明顯,在3%的噪聲下,算法結果明顯變差。綜上,本文算法抗噪性強,在處理含有噪聲的模型時,可以提取出清晰準確的特征點。

圖8 不同噪聲下的特征點提取效果Fig.8 Feature extraction results with different noise levels

表3 不同噪聲下本文算法特征檢測誤差分析Table 3 Error statistics of our method with different noise levelmm
本文提出了一種針對飛機零部件散亂點云多特征的提取方法。首先,通過PCA 計算、L1中值濾波這一系列處理,提高點云模型質量,突出模型特征;然后,基于濾波后的法線對各點的鄰域波動性進行計算,再通過統計分析整個模型的波動性分布,設置波動性閾值,得到初始特征點;最后對得到的初始特征點進行收縮優化,生成清晰完整的特征點。實驗結果表明,本文方法處理過程簡單有效,且沒有過多的參數需要調整,特征點提取較為完整,對噪聲魯棒,對飛機零部件的數字化檢測以及特征的逆向重構具有重要意義,便捷了零件原始掃描點云的處理過程,提高了點云處理質量。
盡管本文方法可以處理具有不同特征的點云模型,但是也存在需要改進的地方。對于比較復雜的模型,在兩個面之間距離很小的情況下,由于該算法是對半徑鄰域內的點進行波動性計算的,該方法不能夠很好地區別兩個面并提取其中的特征,因此,這也將是下一步的研究重點。