宋晨洋,王 強,高德涵,龐家穎,吳欣怡,張 虎
(天津師范大學地理與環境科學學院,天津 300387)
激光雷達(Light Detection And Ranging,LiDAR)具有分辨率高、抗干擾能力強、探測范圍廣等特點,能夠快速提取三維點云數據,因此被廣泛應用于機載數據采集和車載駕駛中。點云濾波算法在自動駕駛數據的處理中起到非常重要的作用[1]。通過對LiDAR點云的地面點和非地面點進行分類,為回避障礙物、車輛避讓以及保護行人等提供保障。當前主要的點云濾波算法有基于曲率的濾波算法、基于坡度擬合的濾波算法、基于漸進加密三角網的濾波算法[2-4]。該類算法主要基于點云數據的幾何特征,通過簡單計算以及設置閾值的方法實現濾波的效果,但傳統幾何算法原理簡單,迭代運算高,耗時嚴重且忽略了地面的整體連續性。
2016年,張吳明等提出布料模擬濾波(Cloth Simulation Filter,CSF)算法[5],從物理模型角度出發,通過“質點-彈簧”模型模擬輕質布料下落并依附在反轉點云上的狀態,實現對地面點云的擬合以及點云濾波。布料模擬的結果受硬度參數及閾值參數影響,對于多元化地形,統一的硬度參數無法實現各種區域的最佳擬合效果。
在此基礎上,出現了一系列基于傳統濾波算法的CSF改進算法,以實現CSF算法在一定程度上的對多元地形的自適應。例如:基于高程歸一化的布料模擬濾波算法[6],對LiDAR點云進行高程歸一化處理,使點云的形態貼近于平地地形后進行CSF,以求達到最好的效果。又如:虛擬格網分類支持下的密集匹配點云布料模擬濾波[7],根據對地形的判別,選擇不同的布料模擬參數,以實現CSF算法對全部地形最大程度的適應。這些革新都是對CSF之前的處理進行改進,并不能改善CSF本身帶來的缺陷。CSF受限于距離閾值h,h是一個用來判別地面點及非地面點的距離參數。當點云與布料網格中模擬粒子的距離小于h時,該點被劃分為地面點,反之被劃分為非地面點,導致濾波分離后的地面點云在h閾值范圍內總會存在被錯誤分為地面點的非地面點云。
據此,本文提出一種針對CSF這一缺陷的自動優化方法。在CSF算法的基礎上,對其進行LiDAR點云分割、高程歸一化以及第三勢差濾波處理,以提升濾波精度和效果。
布料模擬又稱布料模型,是用在計算機圖形學中用于模擬布料狀態的一種模型,由具有質量的且彼此相互連接的粒子組成的網格模型。粒子具有質量但沒有形狀,兩個粒子之間遵循“胡克定律”,這種關系使粒子與粒子彼此建立了“質點-彈簧”模型。CSF基于此模型[5],在點云反轉后,僅考慮重力和結點間相互作用力的狀態下,模擬輕質布料下落并依附在反轉后的點云面上的一種算法。通過適當調整布料的硬度,在柔軟度適當的情況下,布料依附地面點云而不粘連地面點云上的地物點,就可以將這塊布料視為對地面點云的擬合,布料的形狀即為該處點云的數字高程模型。基本原理如圖1所示。

圖1 布料模擬濾波示意圖
本文算法基于上述CSF的結果,進行如下步驟完成對CSF結果的優化。首先,在CSF算法的基礎上,通過空間鄰域連通區域標記法[8],實現對非地面點云類別的組件分割,獲得一系列組件化的點云子集,針對每一個組件,為其劃定一定緩沖區域,這些區域內所對應的地面點云就是需要精準優化的部分。其次,對該區域內的點云進行平面擬合,利用坡度坡向進而實現點云的高程歸一化,得到各點云與地面點云平面的相對高程。最后,利用第三勢差對高程歸一化后的點云進行濾除,以達到對殘余非地面點自適應濾除處理的效果,從而優化了CSF算法因距離閾值參數導致的誤差與缺陷。算法流程如圖2所示。

圖2 本文濾波優化算法流程圖
考慮到CSF算法的點云殘留問題只出現在有地物的區域,而不是整個測區的地面點云都存在這樣的問題,因此可以只提取出含有地物的特定區域。對CSF算法結果的非地面點云進行點云聚類劃分,將這些點云子集所對應的地面點云進行優化處理。本文利用空間鄰域連通區域標記法,將點云劃分為若干個不同組件,針對每一個組件向外設定一個緩沖區域,以這樣的區域所對應的地面點云作為優化方法處理的對象。通過多次RANSAC隨機擬合,選取法向量與水平地面垂直并且面積最大的平面作為該組件點云的擬合平面,平面具有坡向與坡度等信息。分類后的LiDAR點云效果如圖3 所示。

圖3 點云組件分割結果圖
為了更好地實現基于第三勢差濾波算法的優化,對點云進行坐標歸一化處理,使每個組件的地面點云構成的平面坡向為0,坡度為0,即平面與水平地面平行。該過程可以看作是三維物體的空間變換,通過對三維點云進行兩次關于旋轉矩陣的變換運算實現,原理如圖4所示,(a)代表點云以Z軸為旋轉軸,逆時針旋轉至坡向在XOY面上的投影與Y軸正方向同向的過程,(b)代表點云以內部一點為旋轉點,在YOZ面上旋轉至坡度為0的過程。

圖4 高程歸一化過程
基本步驟如下:
1)輸入點云,建立點云存儲容器Kpoint{PointXYZposition,intlable},遍歷點云將各點的坐標信息存儲在position中,記lable為1。
2)遍歷容器中點云,對每個點云的坐標實現點云坡向歸零,使用如下公式:


(1)
3)遍歷容器中點云,對每個點云的坐標實現點云坡度歸零,使用如下公式:


(2)
其中,θ為擬合平面的坡向值;α為擬合平面的坡度值;(x,y,z)為點云初始的坐標;(x′,y″,z′)為點云鄰域坐標歸一化后的結果,即為后續第三勢差濾波處理提供輸入。
如圖5所示,按高程字段對點云進行顏色渲染,高程值由高到低表現為由淺灰色到深灰色的變化。高程歸一化后的點云高程頻率直方圖只有一個最大波峰[9],說明該點云數據的地面點云高程基本相同,點云平面與水平面相平行。

圖5 高程歸一化前后的點云及頻率分布直方圖
第三勢差[10]可用于檢測地面點云平整度,對局部的點云進行自適應更正,公式如下:
(3)
其中,k為第三勢差數值;N為點云總數;hi為第i點的高程;σ為樣本標準差;μ為樣本均值。樣本的標準差與均值的計算公式分別如下所示:
(4)
(5)
一般認為,k>0時,地面上突出地物點云較多;k<0時,凹陷的地面點云較多;k值越靠近0,說明當前的地面點云高程分布越均勻。
根據LiDAR點云的地形情況設置k0,作為判定有無非地面點的依據。當k的絕對值大于k0時,濾除高程最高的點,并修改lable值為2,不斷迭代算法直到k的絕對值小于等于k0,完成非地面點的濾除。
實驗數據分別來自NPM3D官方網站的城市實況LiDAR點云數據集,Large-Scale Point Cloud Classification Benchmark網站的三維點云和部分城市街道點云,如圖6所示。這些點云以城市道路實況為主,在三組數據中選取含有房屋、車輛、樹木的區域作為測試數據。三組數據的部分LiDAR點云如圖所示。本文利用CloudCompare軟件平臺對數據進行簡單預處理,通過Visaul studio C++和PCL庫,對經過CSF處理后的地面點云進行濾波優化處理。

圖6 部分實驗數據的LiDAR點云
首先對測試數據整體進行CSF算法處理。接下來對上述處理結果進行自動優化處理。
對CSF算法處理結果中的非地面點云進行地物分離。從每組數據集中選取其中1~2個具有代表性并且地物點云完整的點云子集作為測試樣本,其中包含房屋、車輛、樹木等,對數據進行編號,如表1所示。

表1 測試樣本信息
由于不同參數的選擇,存在點云組件中不只含有一個地物的情況。又因緩沖區的劃定,可能導致處理范圍內加入新的點云組件,實現對局部復雜區域的復合精準處理,如Sample21,Sample31,Sample51。
對樣本數據進行地物鄰域坐標歸一化處理以及第三勢差輔助下的局部點云改正處理,完成對CSF算法的自動優化處理。深灰色點云部分代表地面點云類別,淺灰色點云部分代表非地面點云類別。 UrbanⅠ和 UrbanⅡ的k0值設定為0.0005,UrbanⅢ的k0值設定為0.1。UrbanⅠ(如圖7所示)樣本在CSF算法中沒有被濾除的車輪底部,以及貼近地面的地物如樹根和燈桿底部,通過本文算法的處理基本被濾除,并且非地面點云部分被補充完整。UrbanⅡ樣本的房屋底部、樹根、圍墻底部優化效果良好(如圖8所示)。UrbanⅢ(如圖9所示)樣本殘留在地面點云中的房屋底部點云基本可以濾除,車輪部分被較好提取出來。

圖7 UrbanⅠ分類結果對比圖

圖8 UrbanⅡ分類結果及細節對比

圖9 Urban Ⅲ分類結果及細節對比
為驗證本文優化算法的準確性,對結果進行定量分析,借鑒混淆矩陣對分類結果進行評判。如表2所示,a和d分別代表被正確分類的地面LiDAR點云數量和非地面點云數量,c和b分別代表兩種類型的錯分點云數量。將誤差分為兩類,命名為Ⅰ類誤差和Ⅱ類誤差。Ⅰ類誤差代表被錯誤歸類為非地面點云的地面點云的誤差,Ⅱ類誤差代表被錯誤分為地面點云的非地面點云的誤差。e和f分別代表在CSF基礎上進行濾波優化處理得到的地面點總數和非地面點總數。g和h分別代表真實點云中的地面點與非地面點的總數,n為點云的總數。對兩類誤差和總誤差的計算[11]為:

表2 對誤差結果的定義
Ⅰ類誤差=b/(a+b)=b/g
Ⅱ類誤差=c/(c+d)=c/h
總誤差=(b+c)/(a+b+c+d)
=(b+c)/(g+h)
對本算法和CSF算法的結果數據進行分類精度的評判。CSF算法采用的參數如下:布料硬度類型選擇flat,DEM網格大小為2 m,迭代次數為500次,距離閾值為0.5 m。誤差結果如表3所示,表中總誤差對比如圖10所示。

表3 兩種算法濾波結果誤差對比

圖10 各個樣本經兩種濾波算法后的總誤差對比圖
從上述結果對比圖可以看出,在經過本文優化算法處理后的結果分類效果顯著,能解決91 %的CSF算法缺陷問題。由于CSF算法的Ⅰ類誤差反映的是地面點云被誤分為非地面點云的程度,不是導致CSF缺陷的主要因素。本文算法和CSF算法相比,雖然同時存在Ⅰ類誤差和Ⅱ類誤差,但是降低了Ⅱ類誤差和總誤差。或者說,本文算法的設計目的就是用于改善CSF算法中普遍存在缺陷的Ⅱ類誤差。個別分類誤差體現為部分地面點云被分類至非地面點云類別,如Sample71車體前方的地面點云變為淺灰色。主要原因是這部分點云的地形與該區域內擬合出的平均地形差異較大,沒有實現本身的高程歸一化。因此,在分類時因不滿足平均地形的條件而被誤認為是非地面點。
布料模擬濾波算法的結果普遍存在缺陷,不能實現非地面點云與地面點云的徹底分離。本文提出的顧及地物鄰域特征的LiDAR點云布料模擬濾波自動優化方法,利用空間連通區域標記與第三勢差濾波,以點云分塊的方式實現對布料模擬濾波算法結果的精準優化,有效改善了布料模擬濾波算法結果。后續將考慮引入深度學習技術,獲得更高精度的濾波效果。