天天看點

一文詳解雷射點雲的地面分割

文章導讀

采用傳統的點雲處理算法做障礙物檢測有一個重要的環節就是地面分割,本文介紹各種常用的地面分割方法,并通過實際測試分析其場景的不适應性,最後推薦幾種開源的分割算法供大家嘗試。

1

為什麼要做地面分割

采用雷射雷達做低層次感覺的障礙物檢測任務,考慮硬體性能,開發周期,資料成本等問題,可以采樣傳統的點雲處理算法進行障礙物的分割、拟合、跟蹤。在這個過程中使用聚類算法進行障礙物分割,而聚類算法依據點之間的歐式距離來度量屬性,是以地面點會對位于地面上物體點集造成幹擾。

深度學習的方法往往不需要預先分割出地面是因為無論将點雲轉換成何種方式輸入,卷積都會以滑窗的方式周遊到每一塊局部區域提取特征,然後做分類回歸。

2

有哪些地面分割的方法

地面分割算法通常可以分為:

  • 平面栅格法
  • 點雲法向量
  • 模型拟合法
  • 面元網格法

平面栅格法

栅格法通常是根據設定好的尺寸建立平面網格(也可以做多層網格或者三維體素),然後将原始點雲投影到各自的網格中,對每個網格中的點集提取特征,比如:平均高度、最大高度、高度差、密度等等。

具體方法:

  • 設定網格尺寸生成栅格圖;
  • 根據點的x,y坐标投影到對應的栅格中;
  • 統計每個栅格中的點集高度特征;
  • 用統計量與設定的門檻值比較進行分類;

投影後的栅格圖類似于鳥瞰圖,如下所示:

一文詳解雷射點雲的地面分割

存在問題:

當雷射雷達線束比較少的時候,比如下圖用的16線雷射雷達采集的道路資料,車輛前方20米以外的地面上,能夠打到的雷射點已經比較少了,而且打到障礙物上的雷射線束一般也隻有一條,如果在栅格中采用高度特征進行地面過濾,遇到低矮的障礙物很容易會被當成地面點過濾掉。

一文詳解雷射點雲的地面分割

點雲法向量

點的法線估計是需要其鄰域點的做支援,鄰域的大小一般由鄰域半徑值或臨近點個數來表示。過大的鄰域會抹平三維結構細節使得法向量過于粗糙,而過小的鄰域由于包含了太少的點受噪聲幹擾程度較強。

用法向量進行地面分割是考慮到地面點的法向量一般為豎直方向,通過設定角度門檻值,求每個點的法向量與地面法向量的夾角,與門檻值對比進行分類。

考慮到人行道,車頂等道路上很多物體都存在法向量為(0,0,1)或(0,0,-1)的區域,是以通常會把點雲法向量作為特征與其他方法結合過濾地面點集。

引入法向量能夠解決什麼場景呢?

在栅格法中,我們一般會利用高度資訊對點集進行分類,但是往往地面高度和路兩邊的人行道高度差距隻在30cm左右,如果沒有先驗資訊提取出道路ROI區域的話,使用高度門檻值劃分道路,路沿,障礙物可能存在誤差,但是引入點雲法向量,可以較好的提取出道路兩旁法向量突變的點集構成路沿,進而配合栅格化将道路區域,非道路區域,障礙物進行劃分。如下圖所示:

一文詳解雷射點雲的地面分割

模型拟合法

常用的模型拟合方法包括以下幾種:

  • 平面拟合-RANSAC
  • 高斯過程-GP-INSAC
  • 平面參數拟合(特征值)

以RANSAC平面拟合的方法為例,具體流程如下:

  • 在設定的疊代次數内,每次随機選取3個點确定一個平面方程(Ax+By+Cz+D=0);
  • 将所有點依次帶入該平面方程中,根據設定的距離門檻值做判定,若在門檻值範圍内,則認為屬于該平面的内點,否則為外點,周遊所有點後統計内點個數;
  • 在疊代次數内内點數量最多的平面方程即為地面方程,該地面方程下的内點就是地面點雲集,外點就是障礙物點雲集;

在理想的路面采用基于模型類的方法分割地面,效果尚可,如下圖所示:

一文詳解雷射點雲的地面分割

存在問題:

1. 交通道路從排水考慮通常是中間凸起,兩邊低窪,類似于拱橋形狀,雖然曲率不大,但是通過随機采樣一緻性算法計算地平面,可能會得到傾斜于一側的平面作為地面方程;

2. 在上下坡的時候同樣因為地面非絕對平面,計算出的地面方程,會出現把前方地面點集作為障礙物點的情況;

3. 由于RANSAC是在點雲空間随機的取三個點建構平面,如果場景中存在大塊牆面時,會出現将牆面作為地面方程的情況;

面元網格法

基于面元的分割可以分為局部類型或者表面類型,常采用區域增長的方式進行地面分割。其核心是基于點法線之間角度的比較,将滿足平滑限制的相鄰點合并在一起,以一簇點集的形式輸出,每簇點集被認為是屬于相同平面。

區域增長的具體流程如下:

  • 選擇種子點:在目前點集A中選擇有最小曲率的點加入種子點集;
  • 區域增長:尋找種子點的鄰域點,對于位于A中且與種子點的法向量夾角小于門檻值的鄰域點,将其加入目前區域中,如果其曲率小于門檻值則也加入種子點集;
  • 對于每個種子點重複上一步操作,最終輸出一組類,每個類的點都認為是同一平滑表面的一部分;

采用面元區域增長的方法在一定程式上能夠較好的應對地面存在曲率的情況。對于比較平緩的曲面或者平面能夠達到較好的分割效果,但是實際道路中的噪聲點太多,直接使用區域增長分割地面,會出現較多零星的地面點被當成障礙物點集。

而且區域增長算法的時耗較大,時間複雜度和面積成正比,對于實時性要求較高的感覺算法子產品,需要進一步優化。比如将平面的區域增長降為到邊緣,或者劃分區域,在小範圍呢進行分割等等。

3

如何分割帶坡度的地面

道路坡度問題在傳統點雲分割算法中一直是個難點。考慮到一個平面方程無法應對現實中的道路,研究者往往會采用分而治之的思想,對區域進行劃分,然後在小範圍中拟合直線或平面;或者利用雷射雷達掃描線之間的角度資訊作為先驗知識,利用不同線速打到地面上的間隔距離或者角度進行判别,一定程度上弱化了高度資訊的敏感性。

近些年也有不少較魯棒的地面分割算法實測效果良好,思想大多是基于分段的方式。下面推薦幾種小編認為不錯的方法:

a. 《Fast segmentation of 3d point clouds for ground vehicles》通過對點雲(x,y,z)三維空間進行降維到(d,z)的二維栅格中,同時采取不同的劃分扇區點雲政策劃分網格segments和bin,通過局部拟合直線來判斷是否為地面點。

b. 《Fast segmentation of 3D point clouds: A paradigm on LiDAR data for autonomous vehicle applications》首先提取地面種子候選點集,再劃分segments的基礎上進行SVD分解求取法向量平面參數,最後疊代求取最佳法向量。

c. 《Efficient Online Segmentation for Sparse 3D Laser Scans》首先将點雲資料轉換成深度圖像,圖像中的行數由垂直方向上的光束的數量定義,列數由雷射每360度旋轉得到的距離值;用距離值求取連接配接兩點的傾斜角度,最終與限制條件比較判斷地面點集。

最終在工程子產品中,任何單一算法都不足以覆寫很多場景,通常建議采用多個算法的結合來判斷目前點的類型,并且考慮落地嵌入式的性能限制,針對算法中可以分塊的部分可以嘗試并行運算做加速。下圖是一張分割去除地面的效果圖:

一文詳解雷射點雲的地面分割