胡少乾,周來水,閆杰瓊,文思揚,穆冬梅
(南京航空航天大學 機電學院,江蘇 南京 210016)
隨著數字化測量技術的發展,通過三維激光掃描儀獲取的實物外形點云數據在逆向工程[1]領域有著廣泛的應用。但由于掃描過程中光線遮擋、實物外表反射率不一致、實物殘缺等原因,獲取的點云數據表面難免存在著孔洞,殘缺的點云數據直接用于模型重建會丟失模型原有幾何信息,因此需要先修復殘缺點云數據,為后續逆向工程中點云數據的模型重建提供基礎。
相關學者對殘缺點云數據的修復算法進行了大量研究。該方法主要分為兩類:一類基于三角網格[2-4]對點云殘缺孔洞進行修補,該方法是在點云三角化過程中對出現的孔洞進行填補,該算法的復雜度較高,當點云數據量較大時,運算量較大,難以取得理想的效果。另一類直接對點云模型進行殘缺孔洞修復。晏海平等[5]以殘缺孔洞邊界點和邊界周圍的散亂點為依據在殘缺區域擬合曲面片,并在曲面片上采樣相應的點,從而完成點云殘缺孔洞的修復,孔洞修復結果很大程度上受擬合曲面片的函數影響。YUMER M E等[6]基于前饋神經網絡完成對殘缺孔洞的修補,該方法的效果受限于神經網絡的訓練集,且訓練集的制作是極為復雜的工作。上述現有算法適合對曲率變化小、殘缺孔洞面積較小的點云數據修復,但對缺失面積較大、曲率變化大的點云表面修復效果較差。
針對上述問題,提出了一種通過迭代修復殘缺點云數據的算法,能對缺失十分嚴重且曲率變化較大的殘缺點云進行有效修復。本文以三維激光掃描儀獲取的航空發動機外形點云數據為對象,進行了相關實驗,驗證了該方法的有效性。


圖1 本文算法流程圖
該算法采取迭代的方式自適應修復殘缺孔洞區域,最終得到殘缺數據修復的點集P′。在上述算法中對整個點集P和稀疏點集X重復應用下采樣和上采樣,然而通過實驗發現,在將點集X推向數據殘缺區域時,只有臨近殘缺區域邊界的點被推向了殘缺孔洞,對整個點集進行上述處理增加了算法的復雜度。因此,為了減少冗余計算,除第一次迭代對整個點集進行處理外,之后每次迭代只對新增區域的點集進行處理,后續章節中介紹了自適應選擇新增點集的辦法。該算法偽代碼如下所示。

偽代碼:殘缺點云數據的迭代修復算法1:輸入原始點云P,令i=0,p?pi2:對點云pi下采樣m個粒子,得到點集X,令X?X0;3:while未達殘缺修復條件do;4:令X?X∪Xi;5:使用WLOP算子使X均勻分布;6:基于APSS曲面,將點集Xi中的點推向數據殘缺區域;7:基于Voronoi圖對點集Xi進行點插值得到上采樣點集γi;8:選擇點集γi中新增區域的點為活動點集,令其為pi+1;9:令i?i+1,p?p∪pi;10:對點集pi下采樣mi個粒子,得到點集Xi(其中mi=2m |pi|/|p0|,|…|表示點集中點的數量);11:end while12:return輸出修復點云P′,結束。

為了完成殘缺區域的修復,本文引入了一個排斥算子將點移動到點云殘缺的區域。從已知區域向外平滑擴展是用來填補數據缺失區域的很好方式,即:從已知表面沿其切向外擴展原有點集所定義的表面。為保證殘缺孔洞處的修補點能很好擬合原殘缺孔洞的幾何信息,將點沿點集的代數曲面推向殘缺孔洞區域。點集的排斥分布示意如圖2所示(本刊黑白印刷,相關疑問請咨詢作者)。

圖2 點集排斥分布示意圖
在?xi∈Xi上定義的APSS曲面,通過排斥的方式將點沿著APSS曲面移動。移動方向由切向分量和投影分量兩部分組成。點xi的切向分量由通過APSS曲面的半徑r沿其過球心的軸rxi向外旋轉來確定的。為保證排斥后的點集能均勻分布,切向分量的公式類似WLOP算子的均勻項,定義如下:
(1)
式中:xi為當前點;X為稀疏點集;wp為點集的類似于WLOP算子中的密度權重項;μ為平衡系數。
(2)
θ(r)=e-r2/(h/4)2
(3)
通常l并不垂直于在xi處的法向量nxi,因此通過計算nxi的正交向量,最終確定其切向分量為
l′=l-(l·nxi)nxi
(4)
可得旋轉角度為

(5)
在對粒子xi施加切向分量后,對其施加投影分量,將其向點集定義的APSS曲面投影,以確保點沿著APSS曲面移動,投影分量定義為
(6)
對點施加切向分量和投影分量移動后,完成排斥分布,點云粒子將分布于數據殘缺區域,但需要注意的是,只使用一次排斥并不能填補整個殘缺數據,這是因為由APSS定義的曲面并不能完全表示殘缺區域。因此在后續步驟完成后需要繼續將點集推向殘缺區域,以完成殘缺數據的修復。
點集Xi為稀疏的點集,被排斥分布到殘缺區域后,需對其進行上采樣,從而得到分布于殘缺區域的稠密點集。Voronoi圖的頂點位于近鄰點的中心,因此基于Voronoi圖的上采樣點能均勻分布在Xi定義的光滑表面上并且保持原有數據結構。上采樣步驟如圖3所示,上采樣點是其近鄰3個點的外接圓的圓心,即:點集Voronoi圖的頂點。不斷重復計算新增點位置,得到稠密的點集。

圖3 基于Voronoi圖的上采樣
上采樣后點集為γi,選擇γi中位于新增區域的點為Pi+1,將其合并到點集P中,形成新的點集,令其為P,令i?i+1。由于在將點集排斥分布時,只有臨近殘缺區域邊界附近的點集被移動到了殘缺孔洞處,新增區域點位于殘缺孔洞周圍。因此在計算下一次迭代時,只對新增區域的點進行處理可以提高算法運算效率并將滿足以下條件的點視為新增區域的點,合并到點集P中:

為了證明本文算法的有效性,本節對航空發動機外形實測點云數據進行了實驗。如圖4所示,為航空發動機機匣表面殘缺孔洞,對其進行20次迭代后,完成了該區域數據的修復。隨著迭代的進行,點集被不斷排斥分布到殘缺區域,殘缺區域面積逐漸縮小直到完成修復。

圖4 機匣表面數據迭代修復結果
圖5所示為航空發動機的管路點云數據。由于管路緊緊依附于發動機表面,只能獲取管路一側的測量數據,管路數據殘缺十分嚴重。該算法對管路點云模型進行了15次迭代,獲得了較為理想的完整點云模型。

圖5 管路數據迭代修復結果
圖6展示了管路的原始數據和使用本文算法修復后的數據進行泊松重建的結果,并放大了局部細節。直接使用原始數據進行泊松重建后模型表面發生了塌陷,而重采樣后的數據再進行泊松重建后,模型較好地保持了管路原有特征結構。說明本文算法修復能夠有效修復殘缺數據,對修復后的數據進行重建保留了實物更完整的信息。

圖6 管路數據修復前后重建結果
圖7為對比了航空發動機外形點云數據使用上述算法處理的前后效果。結果顯示,該算法修復了發動機表面殘缺區域。對原始數據和使用該算法修復后的數據進行了泊松重建。結果顯示,原始數據泊松重建后,殘缺區域模型塌陷嚴重;對修復后的數據進行重建,重建結果保持了發動機表面的輪廓幾何特征。
上述實驗說明本文算法可以有效修復殘缺點云數據,恢復原有幾何信息,獲得一個完整的高質量點云數據。


圖7 航空發動機外形點云數據修復前后對比
本文提出了基于代數曲面的殘缺點云數據迭代修復算法。通過迭代的方式不斷縮小點云殘缺區域的面積,直到修復殘缺點云數據。本文以航空發動機外形點云數據為對象進行了實驗,實驗表明該算法對曲率連續點云表面的有效性。該方法不僅能修復曲率變化不大的機匣點云殘缺孔洞,還對曲率變化較大的航空發動機管路模型十分有效。使用本文方法修復的航空發動機實測外形點云數據,較好地恢復了殘缺區域的幾何信息,為逆向工程中發動機數字樣機的構建提供了基礎。