王 健 陳 政 張華良
(1、沈陽化工大學,遼寧 沈陽 110142 2、工業控制網絡與系統實驗室,中國科學院沈陽自動化研究所,中國科學院機器人與智能制造創新研究院,遼寧 沈陽 110169)
三維激光掃描技術已經日益成熟,點云數據采集及其預處理技術已經成為現代工業中炙手可熱的新型掃描技術,目前三維激光掃描在工業生產中的各個部位包括焊接、碼垛、裝配、噴涂、拋光、上下材料等各個領域均已經得到了普遍的應用。由于3D結構的光技術既不必再需要使用很精確的時空延遲方式來測量又能夠解決雙目中的匹配算法存在的復雜性和魯棒特征問題。因此它們具有計算簡便、測量精確度較高的特點,并且對于干擾較小的弱光條件、沒有明顯的紋理及其形狀改變的表層同樣也可以進行精確的測量。但是在實際的采集物體點云數據過程中,由于物體本身材質的粗糙不一、光照不均勻等原因,3D結構光掃描出物體點云,易形成離群點和噪點。同時由于點云掃描測量設備的工作量程和應用場景掃描深度等的限制,對于一些大型專業工件或者一些大型的技術實驗應用場地,不能直接進行構造和形成完整的點和云,必須同時進行多次點云掃描進行測量,因此每次點云掃描的測量結果常常都可能是多塊的且具有不同的軌跡坐標曲線體系且極有可能同時存在較大下降噪聲的三維點云測量數據,不能完全能夠滿足我們后續三維軌跡曲線規劃掃描算法的實際應用發展要求,所以我們就常常需要多次同時掃描三維點點和云的測量數據庫并進行多次去噪、簡化、配準以及進行下降噪聲采樣等的數據預處理。本文主要目的是深入研究基于點云數據模型的重要預處理應用技術,主要研究內容功能包括點云除灰模型減少隨機噪聲、點云精確化、點云配準以及點層層云除灰減少噪聲采樣等,并通過其在實踐中的檢驗結果驗證了其中的一些重要預處理應用技術。
本文利用PCL點云庫進行點云處理研究。PCL是一個跨平臺的開源點云庫。對于三維點的云數據處理,PCL庫是一個非常模塊化的結合現代c和c++應用模板數據庫。從分析算法設計角度和從分析結果來看,PCL包括用于操作點云數據的各種三維處理算法,包括過濾,分段,注冊,檢索,特征提取,識別,跟蹤,表面重建,可視化等。根據基類劃分每種算法,嘗試將功能集成在整個流水線處理技術中,使整個算法緊湊,清晰。
主要有兩種方法可以在點云上收集數據采集,即接觸掃描集合或非接觸掃描集合。由于該接觸掃描的收集是直接接觸被檢測到的對象,很有可能對被檢測物品造成形變等影響,對于實驗不利,因而使這種非接觸式掃描的采集手段應用更為廣泛。
相比于傳統接觸式采集,非接觸式采集技術既具有算法簡潔、測量精度更高的特點,又具有適合于光照不均勻、無明顯紋理和形態變化等特殊情況下的物體表面同樣也是可以直接進行精密的測量并及時獲得關于物體表面的各種幾何紋理信息,目前己經得到了廣泛的研究和應用。在眾多的三維激光掃描儀器中,Mechmind3d面結構的光相機是本文中主要用來實現工件掃描的一種儀器設備,其特點是它操作簡單、精度高、體積小、攜帶方便,而且從三維掃描中獲取物體的點云數據模型分析器的精度相對比較高,并且它們還可以產生多種格式的點云。

圖1 點云降采樣結果
一般來說,三維掃描裝置所獲取的點云信息數據模型由于數據量大,且信息點密集,不利于它們的存儲、傳遞和進行計算,有必要針對這些信息進行下降采樣。點云降采樣的基本原理是:對于曲率較大的點云降采樣模型,應盡可能多地留下一個數據點,而對于曲率較小的點云降采樣模型,應盡可能少地保留數據點。點云降采樣技術主要可以分為四種:一是根據點云的采樣密度及其表面變化情況進行降采樣,二是根據點云中點的個數及點云在其表面上的變化系數等因素進行分塊降采樣,三是根據點云中點的曲率值等因素進行上采樣,四是根據點云中點的曲率值等因素進行降采樣,完成點云數據降采樣。無論在網絡上采用何種取樣方式,其主要目的都是為了在簡化數據時保持點云尖銳特點。
本文將使體素網格濾波器對點云進行下降采樣。其通過原始點云數據創建一個三維體素柵格坐標系,然后,在每個體素中,體素中的其他點由體素中的所有重心近似顯示,使體素中的所有點最終由一個重心表示。對于所有體素處理后得到的點云,該方法比體素中心逼近法速度慢,但對采樣點對應的曲面精度更高。


圖2 點云濾波結果
以下幾個情況都是需要點云做出濾波和優化的:第一,點云的空間排列非常雜亂,而且需要柔順。第二,因為不可抗因素遮擋等問題導致距原始點云較遠的離群點的數據需要被去除。第三,大量的數據都需要在群中進行次級采樣。第四,噪音的數據是否需要被去除。
在工業上一般按照相機噪聲生成的條件把這些噪音分為兩種類型,即主動和被動噪聲,其中主動和被動噪音主要是由于相機自身的檢測精度所導致產生的誤差而直接引起的,而被動和受影響環境中客觀物體受到干擾而間接引起。噪聲的種類不同,所需要采用的去噪技術也不一樣。主動化的噪聲一般都是為了放大掃描工件的掃描區域范圍而引起的,通常會表現成一個大片點云,利用三維圖像模型信號處理軟件就能夠對其進行手動地消除。一般來說,可采用meshlab軟件進行手工去噪。被動噪聲的消除通常采用去噪算法實現,如八叉樹算法、k-D tree算法、空間單元格法、體素濾波、半徑濾波、Laplace平滑算法等。通常被動噪聲在工業中較為頻繁,其處理方法通常有以下三種:
(1)點云體素分布濾波:點云體素的濾波概念與普通像素類似,使用像素aabb中的包圍盒將一個點云上的數據體素化,一般體素越密集的點在位置和密集地方上的信息就變得越多,噪音大的點和光線距離群的密集地方也就信息越多,這些都已經可以直接通過點云體素的分布網格中被過濾去除。另外在其他技術方面若是我們使用一些高分辨率激光照相機等攝像裝置對一個點云上的數據庫信息進行了實時采集,往往點云上的數據庫就可能會更加密集。點云盤的數量太大,給我們后續的數據分割線和操作管理帶來很大的困難。體素滑動濾波器不僅能夠直接做到快速向下滑動采樣,而且不至于直接破壞點陣微云自己的立體幾何基本結構。
(2)半徑濾波:其中半徑濾波方法較為簡單而又粗暴。以某一圓為中心繪制的圓計算落在另一個圓中點上的數量,當其中一個數量超過了給定值,則應保留這個圓,其中一個數量超過了給定值則應立即剔除這個圓。
(3)Laplace平滑:對網格中的每個頂點的坐標,用它鄰近連接點的坐標的平均值代替。其公式如下:

其中,Sp為濾波修正點的位置;p為濾波前點的位置;q為鄰域內的點,不包括p。
然而,每一種算法都有一定的局限性,例如體素濾波比用體素中心來逼近的方法更慢,運算效率較低。Laplace平滑算法會導致邊沿損失,尺寸總體變小。半徑濾波中圓的半徑和圓內點的數目都需要人工指定。因此權衡各種濾波算法的利弊,為了提高運算效率和過濾質量,本文基于文獻[1]的二位圖像的經典過濾算法——導向濾波器,對其進行改進,使其適配于3D點云的過濾要求。
以下為改進后的算法步驟:
步驟一:在三維點周圍,假設一個局部線性模型:

其中,Ak是被過濾的點,pi是3*3矩陣,bk是3*1向量。
步驟二:在保持線性模型的同時使q和p之間的差異最小化。具體地說,就是使線性模型擁有最小重構殘差:

步驟三:解決上述優化問題后,得到:

其中,μi周圍是臨點3*3協方差矩陣,i是一個單位矩陣,?I為周圍臨點的均值向量。進而可以調整最近鄰搜索半徑和去控制濾波器的濾波效果。導向濾波器最大的優點是保留邊緣和輪廓。盡管雙邊濾波器可以達到同樣的效果,但是他需要一個明確的法向量估計,這對于一些受噪聲干擾的點云來說是困難的。

圖3 點云配準結果
在工業環境中,對于大型對象或場景,可以從多個位置捕獲點云。每個點云都是場景(對象)的部分表示,需要合并到單個點云中以形成整個場景。然后,配準過程將從各個位置捕獲的部分點云組合成掃描場景的單個點云。局部點云并不總是在同一坐標系中。因此,在配準過程中要求在同一坐標系中對齊。
點云配準一般分為粗配準和精配準兩個步驟。粗配準是為了減少點云數據之間的位移和旋轉錯位,使精配準不會偏離實驗方向。常用的粗配準方法有中央重疊法、標記法、特征點(線、表面)提取、ICP等。最后一種方法通常用于特征明顯的點云數據。為了減小不同點之間的配準差值,需要在粗配準的基礎上進行精配準。最著名的基于原始數據的精準配準算法是BESL和McKay提出的最近鄰迭代算法(ICP)。
點云配準算法改進:
ICP該算法的一個主要基本思路特點就是:在具有相鄰點對的云中可以進行點點搜索以快速確定最鄰近的嚴密點和云對,利用點點尋找算法得到的最近嚴密點對可以透過和和ffaugeraheberc所結合提出的嚴密點對求解及計算法及過程公式來進行計算被搜索檢測物的最近點對變換計算參數,點對云的搜索及最近點對變換計算參數的嚴密求解及計算均因為需要首先采用迭加替代變換方法后再進行二次計算,直到每個目標計算函子的數值被我們控制在一個我們可以完全承受的精度范圍內,停止迭加替代的計算過程。
然而,當配準相對簡單的點云時,當前的算法可以解決。但是,當點的數量和點云的復雜性增加時,現有算法會存在配準精度誤差以及運算時間長的問題。這是由于云的點的數量和拓撲結構變得過于復雜,而優化成本函數所涉及的關鍵點的數量過高,從而導致不穩定的結果。
為了有效解決這個復雜問題,我們將通過一種采用正交同態密度分布剛性變換(NDT)設計算法的這種方式應用來快速確定兩個都包含有個數超過100,000個小數點的正態分布小點點和云之間的正態剛性分布變換。正態空間分布點數變換統計算法中所采用的點數是一種國際配準統計算法,它將國際標準最新和優化的計算技術成果運用整合到了三維點數的統計計算模型中,以便于我們確定這兩個空間點的點數和云之間能否進行最佳化的匹配。由于它們在節點配準的工作過程中不能充分地綜合利用標準節點的某些特性點來進行節點計算與標準匹配,所以配準速度比其它的配準方法來得要快。以下為該算法的具體運算步驟:
步驟一:通過過濾各種輸入點云以有效地縮短匹配的時間,本步只對來自源文件的數據量進行濾波和分析,減少其輸出的數據量達到原來的15%左右,而且目標點云并沒有根據特定的情況需要進行濾波和分析,由于NDT算法中所使用的體素網格數據結構不僅僅是使用單一的點,而是利用其每一個數據結構的體素單元中所包含的點作為統計信息,因此不需要過濾目標云。
步驟二:修改一些與比例有關的參數。由于NDT算法使用體素化數據結構和More-Thuente線搜索,因此需要調整某些參數以適合數據。transformation epsilon兩個參數分別從其長度和弧度上來定義變換向向的矢量[x,y,z,roll,pitch,yaw]的最小遞增向向,一旦這些增量發生變化就會降至這個閾值以下,配準就會終止。步長參數用來定義“more-thuente”線上搜索所能夠容納的最高步長。此線搜索算法可以確定一個低于此最高值的目標點為其最佳步長,并且當接近目標點為最佳解決方案時會減少其步長。較大的最大步長將能夠以較少的迭代次數清除較大的距離,但存在過沖和最終以不希望的局部最小值結束的風險。最后,Resolution參數定義內部NDT網格結構的體素分辨率。這種結構易于搜索,每個體素都包含統計數據,均值,協方差等與其包含的點相關聯。
步驟三:將點云傳遞給NDT配準程序。輸入點云是將要轉換的點云,目標點云是輸入云將與之對齊的參考框架。添加目標點云后,將使用目標點云數據初始化NDT算法的內部數據結構。
步驟四:創建一個點云配準變換矩陣的初始估計。盡管無需進行這種初始轉換就可以運行該算法,但是如果使用這種初始轉換,易于獲得更好的結果,尤其是在參考幀之間存在較大差異的情況下。
步驟五:準備對齊點云。生成的轉換后的源點云存儲在輸出點云中。然后,我們顯示比對結果以及歐氏適應性得分,該得分的計算方式是從輸出云到目標云中最近點的距離的平方和。
隨著機器人工業精度技術要求的進一步提升,在機器人加工領域,3D掃描技術已成為一個研究的重點,在醫療、工業、建筑領域都有極好的發展前景。由此可見,三維網絡點云數據處理是極其必需的。針對三維激光掃描點云數據進行的處理技術主要有點云去噪和平滑,點云配準及點云下采樣。點云數據處理的精確度對于機械臂最后一步形成加工路徑的精確度與執行力有著至關重要的影響,同時也對提高算法運行速度提出進一步的要求。此外,對也要注意點云數據處理要保存原始點云數據的特征,根據物體間的點云數據差異性,選擇合適的處理算法以便達到最好的效果。