孫 翌,包建東
(南京理工大學 機械工程學院,江蘇 南京 210094)
近年來,隨著我國工業管道施工技術的發展,對金屬管道內凹槽磨損等疵病的檢測提出了越來越高的要求,其嚴重者會直接影響到管道泄漏問題,因此對管道內壁的檢測十分重要.傳統的方法是采用激光位移傳感器掃描管道內壁,將采集的多段數據進行拼接處理呈現完整的三維立體輪廓圖,但在面對大量點云數據時,拼接過程耗時巨大,效率低下,無法滿足日益增長的檢測需求,為解決這一問題,本文對傳統的算法做了研究,并在此基礎上進行了改進,通過仿真和現場試驗,證明其可行性.
對點云數據進行拼接常用的方法是Besl提出的最近點迭代算法[1](Iterative Closest Point,ICP),其核心是通過求得旋轉矩陣R和平移向量T,把不同坐標系下測得的數據點云進行坐標變換,主要分為4個階段[2]:
1) 對原始點云數據進行采樣.
面對大量的點云數據,可先對其進行采樣,以提高拼接速度,減少噪音點.
2) 確定初始對應點集.
根據確立對應點集的方法,大致分為3類: 點到點,點到投影,點到面.
3) 去除錯誤對應點對.
一般情況下,在確立初始對應點集中會存在大量的錯誤對應點對,因此需要一種約束方法去除錯誤對應點對,常用的有基于曲線幾何特征的約束方法和基于剛性運動一致性的約束方法.
4) 坐標變換的求解.
該階段為本算法的核心,對于旋轉矩陣R和平移矢量T的求值,通常可采用以下4種方法: 單位四元數法、 奇異值分解法、 正交矩陣法和對偶四元數法.
在確認初始點集與去除錯誤對應點對時,面對大量的點云數據,常用的方法在精度以及計算時間上都有一定的局限性,因此本文將采用一種基于自適應空間球的k最近領域快速搜索算法,來提高點云拼接ICP算法的迭代精度和速度.
傳統的ICP算法搜索是計算任一點到其余各點的歐氏距離,然后升序排序,前面的k個點即為此點的k領域點,但隨著點云數據規模的不斷增大,這種方法耗時巨大,故本文將采用與k無關的分塊策略對整個點云空間分塊,以候選點所在子塊的采樣點近似密度確定初始動態球半徑,以球的外切立方體搜索k領域候選點,當k領域候選點數目不滿足要求或搜索不成功時,以外切立方體的外接球擴大搜索范圍,直至滿足要求或鄰域搜索成功[3].
1) 點云空間分塊
在一組點云數據中,共有N個采樣點,設一立方體恰好將所有采樣點全部圍住,其體積為V; 將立方體分為若干個子空間,每個子空間內點云數目為num,則子空間邊長L為[4]
(1)
式中:xmax,xmin分別為點云空間中在x方向的最大值和最小值;ymax,ymin分別為點云空間中在y方向的最大值和最小值;zmax,zmin分別為點云空間中在z方向的最大值和最小值.
2) 計算子空間中任意一點p的初始動態球半徑,公式如下
(2)
3) 以p為圓心,r為半徑確定p的動態球O0,計算O0的外切立方體A0, 位于外切立方體內的點則成為k鄰近候選點,其數目為K.
4) 若K 本文采用基于剛性運動一致性的約束方法去除錯誤對應點對,此類方法直接利用了剛性運動應保持被測物體重疊區域對應點不變的原理,利用候選對應點對間的距離約束排除錯誤對應點對[5]: 若(p1,q1)與(p2,q2)為正確對應點對,則由剛性運動一致性約束應有‖p1-q2‖=‖(q1-p2)‖,考慮到實際點云數據不可能完全滿足上式,故本文采用如下標準 (3) 式中:δ為事先給定的閾值(文中取10%). 本文采用奇異值分解算法[6](Singular Value Decomposition,SVD)來進行坐標變換的求解. 對于A∈Rm×n,則必然存在U=[μ1,…,μm]∈Rm×n與V=[v1,…,vn]∈Rm×n使下式成立 (4) 式中: ∑r=diag(σ1,σ2,…,σr),σ1≥σ2≥…≥σr>0,μi為第i個左奇異向量,vi為第i個右奇異向量. 為求得旋轉矩陣R與平移向量T,對最終確立的對應點點集P與Q進行如下操作: 1) 分別計算點集P與點集Q的重心 (5) 2) 構造一個3×3矩陣H (6) 3) 利用奇異值分解法對矩陣H進行分解得到矩陣U和V,分解結果如下 H=UΛVT, (7) 式中:Λ為對角矩陣,Λ=diag(d1,d2,d3),d1≥d2≥d3≥0. 4) 如矩陣U與V滿足以下條件,則矩陣A (8) 5) 可得到旋轉矩陣R與平移向量T分別為 (9) 該算法在一次迭代后如無法滿足需求,需在此基礎上重新匹配對應點集后進行迭代求解. 本文利用MATLAB隨機生成兩組點云數據,使用傳統ICP算法與本文改進ICP算法拼接進行比較,其結果如圖 1 及表 1 所示. 表 1 仿真數據拼接結果 圖 1 迭代結果Fig.1 The iteration results 傳統ICP算法達到收斂條件時其迭代次數達到了99次,精度為0.032 6 mm,耗時194.88 s.本文的改進算法僅迭代10次,耗時0.731 8 s,且精度達到了0.017 7 mm. 由表 1 所知,本文改進的ICP算法在算法迭代次數、 精度與速度上都有了極大的改進,能夠確實有效地提高實際檢測效率. 圖 2 為本文設計的管道內壁激光檢測裝置,現場實驗圖如圖 3 所示,步驟如下: 1) 直行電機以4.4 mm/s的速度帶動裝置勻速前行,激光位移傳感器的采樣頻率為3 000 Hz,y方向輪廓間距約為0.001 5 mm. 2) 起始位置位于炮口有膛線處,每次爬行到管道尾端結束此次測量. 3) 旋轉電機以20 °/s的速度旋轉,每次測量60°范圍內的管道,以152口徑為例,可測得25.3 mm 寬的數據,每個數據點之間的間隔(即x方向)約為0.002 8 mm,共分6次測量完整管道. 4) 對采集到的數據進行處理、 拼接等后續工作,可得到內膛表面完整的三維輪廓圖. 圖 2 管道內壁激光檢測裝置Fig.2 A laser detection device for the inner wall of the pipe 圖 3 現場實驗圖Fig.3 Field experiment 圖 4 為管道內壁激光檢測設備工作25 s后根據數據形成的圖像,原數據共有75 000個點,經過數據處理后,形成了寬25.3 mm,長約110 mm的三維輪廓圖; 圖 5 為兩個點云數據拼接后的寬50.6 mm,長110 mm的圖像. 由實驗結果可知,通過該設備采集的數據進行處理得到的三維輪廓圖像,較好地描述了管道內壁的實際情況,可直觀清楚地了解到管道內壁的各種信息,對判斷疵病損傷有極大的幫助. 圖 4 初始輪廓圖Fig.4 Initial contour 圖 5 輪廓拼接圖Fig.5 Contour splicing 本文以一種管道內壁激光檢測裝置為例,簡要介紹了它的工作原理,重點介紹了采集的點云數據的一些處理算法,包括傳統ICP算法和基于k領域快速搜索的改進ICP算法,特別是改進后的ICP算法較原ICP算法迭代次數減少了十倍,迭代精度也有較高的提升,更是極大地縮短了迭代時間,這對提高點云數據的拼接效率有極大的幫助,證明改進后的ICP算法可有效應用于管道內壁檢測領域中.2.2 去除錯誤對應點對
2.3 奇異值分解法


3 仿真分析


4 現場試驗




5 結 論