韓松魁,于正林
(長春理工大學 機電工程學院,長春 130022)
車載激光雷達系統在通過激光掃描儀采集過數據之后,將數據存儲為LAS 格式或ASCII 格式[1]。LAS 已成為雷達數據的標準工業格式,提供一種開放式的可與不同商業硬件軟件交互輸出的一種格式標準,但存儲較為復雜。ASCII 格式前置部分為文件頭,提供輔助信息,后置部分記錄點的三維坐標和強度值等。由于存在遮擋以及車載激光點云自身的特性,直接對車載激光雷達點云進行點云分類、點云分割、點云可視化、三維重建等顯然是不可能且不合理的,因此在完成后續點云高階操作時應先進行點云數據的預處理工作[2]。車載激光雷達點云數據的預處理包含激光雷達點云數據降采樣、點云除噪、點云數據濾波以及點云配準等[3]。車載激光雷達點云數據的預處理是完成后續復雜點云操作的基礎。基于車載激光雷達點云的街區分布特點以及車載激光雷達點云的特性,將基于機載激光雷達數據的布料模擬濾波方法應用在車載激光雷達數據中,并與數字形態學和坡度值濾波算法進行對比和誤差分析,來驗證此想法的優越性,最終使街道、樹木、指示牌等點云信息與地面更好的分離。
由于車載激光雷達系統獲取的點云數據十分龐大,且信息點十分密集,不利于點云數據的存儲和處理,為了使對點云數據處理更便捷,就需要對這些點云數據進行降采樣也稱“下采樣”[4]。點云降采樣是在降低點云數據規模的同時又不丟點云數據的特征信息。點云降采樣通常采用體素下采樣、隨機下采樣和均勻下采樣等。體素下采樣是對原始點云數據創建一個三維的體素柵格,把點云裝進體素網格內,通過每個網格內代表點的選取也出現了不同的體素下采樣方法。圖1 為原始樹木點云數據,對原始點云數據進行降采樣處理,圖2 為體素下采樣,圖3為隨機下采樣,很明顯減少了原始點云數量,但點云分布不均是隨機下采樣的缺點,圖4 為均勻下采樣,彌補了分布不均的情況,也極大地保留了原始點云的特征信息。

圖1 原始點云

圖2 體素下采樣點云

圖3 隨機下采樣點云

圖4 均勻下采樣點云
由于受到數據采集平臺、周圍環境和被測物體表面性質等因素的影響,點云模型中的點不可避免的存在噪聲。而車載激光雷達數據采集過程中由于車的運動、視野遮擋和障礙物等因素的影響會使點云模型中不可避免的存在離群點。而這些噪聲點和離群點會嚴重影響點云的局部特征計算精度,從而影響后續點云配準、點云分割、點云特征提取和三維重建等點云處理操作[5]。因此需要對噪聲點和離群點進行剔除,常見的去噪操作主要由Statistical Outlier Removal濾波器和Radius Outlier Removal 濾波器等實現。
Statistical Outlier Removal 濾波器主要用于剔除離群點。激光掃描過程中通常會產生密度分布不均的點云,測量過程中由于誤差也可能產生稀疏的離群點。Statistical Outlier Removal 濾波器的本質是通過統計輸入點云區域內點的分布密度來判定是否屬于離群點。如果某區域內的點云密度小于一定的密度閾值,則被判定為離群點,將其剔除。Radius Outlier Removal 濾波器主要是以半徑為判別依據,能夠剔除一些沒有達到足夠鄰域點數量的點云。設置鄰域點閾值為M,依次以當前點為中心,構建D為點云半徑的球體。通過設置半徑D和鄰域點閾值M,計算當前球體中點的數量,數量小于M則將此點剔除,數量大于等于M則將此點保留。此算法比Statistical Outlier Removal 算法更為便捷,但需要手動輸入半徑D以及鄰域點閾值M。
由于車載激光雷達系統起步略晚于機載激光雷達系統,因此機載激光雷達點云數據濾波的研究也以機載激光雷達點云濾波為參考。三維點云數據的濾波操作與二維圖像數據濾波不同,二維圖像的濾波是消除圖像中的噪聲與提取邊緣特征信息。機載點云數據濾波是通過濾波操作區分出地面點和非地面點。車載激光雷達點云數據由于車載激光雷達掃描儀的特性,點云密度會比機載高很多。而由于掃描方式以及掃描角度等因素,車載激光雷達點云數據濾波在機載點云濾波的基礎上,應完成地面點云、建筑物立面點云和其他地物點云的區分操作。目前常用的濾波算法有基于形態學的濾波算法、基于坡度值的濾波算法、基于不規則三角網的濾波算法、基于移動曲面濾波算法、基于分割段濾波算法、基于掃描線濾波算法和基于布料模擬(CSF)點云濾波算法等[6-7]。本文在基于車載激光雷達街景點云分布特點的基礎上,提出將機載點云布料模擬濾波算法應用在街景場景下,對其他地物和地面點云進行分類,并與基于坡度值的濾波算法相對比,驗證此想法的合理性。
1.3.1 數字形態學濾波
數字形態學算法其中涉及膨脹和腐蝕操作、閉合運算與開運算。前兩種操作主要是為了對圖形中指定物體進行大小和尺寸的編輯。腐蝕操作和膨脹操作是用來控制指定區域內的像素灰度的最小和最大數值。這兩種操作大致可以分為閉運算和開運算兩種運算,閉運算是先膨脹操作,再腐蝕操作,開運算與之相反。數字形態學點云濾波的核心是設定窗口的大小與尺寸,若窗口尺寸設定過小,則會導致大部分地面以及尺寸較大的地物或建筑物被當做地面點保留,如果窗口尺寸設置過大則會導致大量地面點被當做非地面進行過濾,從而導致地面點云數據缺失,因此窗口大小的設置對數字形態學濾波算法至關重要,該算法的過程為:
(1)建立最低點。對整體點云數據進行分析與處理,構建一個規則化的格網,并選取每個格網中數據的最低點,建立為地面點。
(2)腐蝕運算。選取一個點作為濾波的中心點,提取窗口內高程值最小的數值為腐蝕后的數值。
(3)膨脹運算。將每一個規則化的格網遍歷,重復步驟(1)~步驟(2)兩個過程,膨脹后的數值就是窗口內高程值最高的數值。
(4)分離操作。進行開運算,將開運算后結果的高程值與運算前的高程值相對比,若高于此閾值,則判定為非地面點,改變窗口尺寸與大小,直至遍歷所有點云。
1.3.2 坡度值濾波
基于坡度值的點云濾波,用坡度差值信息將非地面點和地面點加以區分[8]。隨后在2001 年,Sithole[9]對基于坡度值濾波加以改進,提出一種自適應坡度濾波計算方法。在此前提出理論的基礎上,Sithole 等人[10]于2005 年提出了基于掃描線來計算坡度和斜率的方法,為學者們研究坡度濾波算法提供了強大的理論基礎。
基于坡度值的點云濾波算法是通過計算坡度差值來分離地面點和非地面點,從而為地物點云提取奠定基礎。該算法的關鍵在于利用坡度之間的差值來檢測掃描線剖面內的相鄰點間分布關系。起始點為每條掃描線上左起第一個點,依次對掃描線內所有點進行處理,將掃描線分割為許多小線段。相鄰兩點組成的小線段坡度值μ的計算公式為:

其中:
式中,(Xn,Yn,Zn)和(Xn-1,Yn-1,Zn-1)為相鄰兩點的三維坐標,因此可得出相鄰兩點坡度值的公式為:
通過上述公式即可求出兩點間的坡度值,因此對原始點云進行坡度值濾波操作時,還需根據不同的地形特征選擇不同鄰域大小與坡度閾值,來分離出地面與非地面點。對于坡度閾值較大的地形應設置較小的鄰域尺度和較大的坡度閾值,對于地形變化較為平緩的區域應設置較小的坡度和較大的鄰域,在保證其余參數不變的情況下實現坡度閾值和鄰域尺度自適應的坡度濾波將會有效地提高坡度濾波的準確度。
1.3.3 布料模擬濾波
傳統濾波算法大多以點云高程值以及坡度等因素來對地面點云數據與非地面點云數據加以區分,而基于布料模擬點云濾波算法(Cloth Simulation Filtering,CSF)則是以一個全新的角度來對點云數據進行濾波[11]。該算法采用3D 計算機中的布料圖形模擬算法,為一種簡單的模擬物理過程。將一塊布料放在一個地形上面,然后這塊布由于重力的作用開始下降,假設該布料足夠柔軟可以貼附在地形表面上,最終成型的布料將被制作成數字表面模型(Digital Surface Model,DSM),如果先將地形顛倒,并定義布料的剛度,那么最終的布料形狀就是數字地面模型。圖5 為基于布料模擬濾波過程圖,下方藍色圖形為原始測量值,對其進行翻轉,上方為翻轉后的點云,紅色的虛線代表布料,可以反映地形的起伏情況。

圖5 布料模擬濾波算法模擬圖
布料模擬算法是計算機圖形學中的一個方向,在進行模擬過程中可參考Mass-Spring 模型去解決和分析問題。將布料分割為具有相同大小且質量相等的質點,質點間的連線組成了粒子格網,每個質點都可以儲存位置信息、速度信息和力等信息,該格網模型如圖6 所示。網格上每個點沒有大小,但被指定為恒定質量,質點之間的連線被稱為“虛擬彈簧”,粒子在三維空間中的位置確定了布料的位置和形狀。質點之間的運動遵循牛頓第二定律,位置和力之間的關系如下:

圖6 格網模型圖
式中,X為粒子在時間為t時的位置;Fext(X,t)代表外力,由質子運動方向上受到障礙物產生的碰撞力和重力決定;Fint(X,t)代表粒子在X位置且時間為t時內聯產生的內力。由于隨著時間的變化,內力與外力均發生改變,所以對其進行數值積分來實現傳統的布料模擬。
為將布料模擬算法應用在點云數據濾波中,對傳統布料模擬算法進行了一些修改。首先將粒子的運動方向定為垂直方向,因此可以通過粒子和地形的高度值相比較來實現碰撞檢測。然后當粒子落在地面時,即“正確位置”,則設置此粒子為不可移動粒子。具體過程如圖7 所示,圖7(a)為初始狀態,假設布料放在已翻轉點云上方,黑色點為翻轉后點云待測表面,紅色點為可移動粒子;圖7(b)為過程中計算重力影響下粒子所發生的位移,所以粒子可能會出現在黑色點下方,粉色點代表可移動粒子的舊位置;圖7(c)過程檢查可移動粒子是否到達地面點位置,若到達則設置為不可移動粒子,用黃色粒子表示;圖7(d)過程考慮到內部驅動力的作用,對現有可移動粒子根據臨近粒子間的力來產生新的位移。

圖7 布料模擬濾波算法流程圖
綜上所述,布料模擬濾波算法的主要步驟為:
(1)使用一些第三方軟件(如cloudcompare)自動或手動處理離群值。
(2)將原始車載激光雷達點云數據進行反轉。
(3)初始化網格。根據定義的網格分辨率確定粒子數,布的初始位置通常設置在最高點的上方。
(4)將所有的點和網格粒子投影到同一個水平面上,并在這個平面上找到每個網格粒子的對應點,記為“CP”。然后記錄投影前的高度,記為“IHV”。
(5)對于每個網格粒子,計算該粒子受重力影響移動時的位置,并將該高度與IHV 進行比較。如果粒子高度小于或等于IHV,則將該粒子放置在IHV 高度處,設置為“不可移動”。
(6)對于每個網格質點,計算受內力影響的位移。
(7)重復步驟(5)~步驟(6),直至所有粒子的最大高度變化足夠小或超過指定的迭代次數時,停止模擬操作。
(8)計算激光雷達點云與格網粒子間的高度差異。
(9)區分地面點與非地面點。如果激光雷達點云與模擬粒子間的距離小于或等于預先設置的閾值時,則將此類點歸為地面點。如果大于預先設定的閾值,則將此類點判定為非地面點。
由于布料模擬算法是基于機載激光雷達數據對建筑物頂面以及地面點濾波操作的,雖對建筑物立面點云與地面點云濾波操作處理不是很理想,但對于地面與非建筑物的其他地物等進行布料模擬濾波操作效果十分顯著。
基于以上算法的原理,現對原始車載激光雷達點云數據(圖8)進行濾波實驗,圖9、圖10 和圖11 分別為基于形態學點云濾波、基于坡度值濾波和基于布料模擬點云數據濾波結果。

圖8 截取后街景點云

圖9 基于形態學的街景點云濾波

圖10 基于坡度值濾波

圖11 基于布料模擬濾波
由實驗結果很明顯看出,基于坡度值濾波在圖10 中紅框圈中部分,局部坡度值變換較為平緩時,基于坡度值濾波并沒有把地面點與樹木根部進行有效分開,因此不適合對其他地物與地面點進行分類,反而對建筑物立面進行濾波操作有良好效果。經手工篩選后,此街景中地面點為95 359 個,非地面點為83 494 個,將基于形態學濾波與布料模擬濾波相比較。基于形態學濾波交叉表如表1 所示。

表1 數字形態學濾波交叉表
由表1 以及圖10 可以明顯看出,基于形態學濾波的Ⅱ類誤差較大,較為明顯的把非地面點判定為地面點。
基于布料模擬濾波的交叉表如表2 所示。

表2 布料模擬濾波交叉表
由表2 可以看出布料模擬濾波算法比數字形態學濾波算法的Ⅱ類誤差小很多,雖然Ⅰ類誤差要比數字形態學誤差大,但Ⅱ類誤差是將非地面點誤認為地面點,影響點云濾波后歸一化的結果,而且布料模擬濾波要比形態學濾波參數設置更簡單一些,因此布料模擬濾波算法要優于其余兩種算法。
故采用布料模擬濾波算法對原始街景點云數據進行濾波,通過布料模擬數據濾波將原始車載激光雷達街景點云分為車載激光雷達地面點云和車載激光雷達地物點云,如圖12 和圖13所示。

圖12 布料模擬濾波后地物點云

圖13 布料模擬濾波后地面點云
(1)以真實采集的車載激光雷達街景點云數據為研究對象,將基于機載的布料模擬濾波算法應用于車載激光雷達點云數據上,由濾波結果對比可知,Ⅱ類誤差遠小于形態學與坡度值濾波算法,更有利于濾波后點云歸一化,因此證明了本文所提出算法的適用性與合理性。
(2)統計實驗數據,總結為表格展現,布料模擬算法的兩類誤差率均控制在10%以內,說明在該場景下,布料模擬濾波具有較高的精度。
(3)從點云濾波的參數設置上以及所花時間上來看,布料模擬濾波要更優于前兩種算法,尤其是形態學濾波的參數設置較為麻煩。