基於幾何特徵的地面點雲分割方法(彙總)

歡迎訪問我的個人博客: http://zengzeyu.com

前言


激光雷達掃描得到的點雲含有大部分地面點,這對後續障礙物點雲的分類、識別和跟蹤帶來麻煩,所以需要首先濾波濾掉。傳統的基於幾何特徵的濾波是最基本最簡單的方法,目前本文嘗試的有如下幾種:

  • 水平面校準
  • 法向量
  • 柵格高度差
  • 柵格最低高度以上0.2米
  • 絕對高度
  • 平均高度

以上方法基於假設是地面點雲所構成的地面爲平面,而不是弧面,當然對於有傾斜角度的地面也是可以先通過水平面校準然後再進行後處理來達到目標。下面將針對以上幾種方法,通過實驗結果比對各自方法優劣。

激光雷達地面點雲分割方法


1. 水平面校準


水平面校準顧名思義就是通過找到地面點所在平面,然後進行校準點雲的方法。通過此步可將數據採集階段,採集到的地面點雲相對於激光雷達 z 軸不平行校準爲與之平行。目的是爲後續處理提供更易於處理的點雲。

方法過程:

  1. 分割出大致地面點
  2. 找到地點所在平面
  3. 通過變換矩陣校準平面

1. 分割出大致地面點
這一步可使用柵格高度差、絕對高度、法向量等方法來進行分割,目的只需要找到大部分地面點即可,不用進行精確的分割。本文通過法向量進行分割找到地面點。

2. 找到地點所在平面
通過PCL自帶函數進行處理。

bool estimateGroundPlane(PointCloudXYZI::Ptr &in_cloud, PointCloudXYZI::Ptr &out_cloud,
                                   visualization_msgs::MarkerPtr &plane_marker, const float in_distance_thre)
{
    //plane segmentation
    pcl::SACSegmentation<pcl::PointXYZI> plane_seg;
    pcl::PointIndices::Ptr plane_inliers ( new pcl::PointIndices );
    pcl::ModelCoefficients::Ptr plane_coefficients ( new pcl::ModelCoefficients );
    plane_seg.setOptimizeCoefficients (true);
    plane_seg.setModelType ( pcl::SACMODEL_PLANE );
    plane_seg.setMethodType ( pcl::SAC_RANSAC );
    plane_seg.setDistanceThreshold ( in_distance_thre );
    plane_seg.setInputCloud ( in_cloud );
    plane_seg.segment ( *plane_inliers, *plane_coefficients );
    return true;
}

通過上述代碼找到平面之後,確定平面法向量就可以找到其到 z 軸的變換矩陣 T

3. 通過變換矩陣校準平面
將原始點雲與變換矩陣 T 作點積就可得到校準後點雲。
校準點雲(白色點爲校準前點雲,綠色點爲校準後點雲)
從圖左下方可觀察到校準後點雲與原始點雲有一定距離,說明激光雷達在採集數據時,其 z 軸與地面法向量不平行,而且這種情況隨時都在發生。自動駕駛車輛行駛過程中,路面隨時都有小的顛簸,偶爾還會有較大顛簸,如通過城市道路中的減速帶,轉彎時速度過大等等情況。所以校準點雲是很有必要的。

2. 柵格高度差方法


方法過程:

  1. 根據柵格尺寸生成柵格
  2. 計算每個柵格最低點與最高點高度差
  3. 比較 h 與預設高度差閾值 threshold 大小,對柵格進行分類
  4. 根據柵格分類,對柵格內點進行分類

方法結果

鳥瞰圖

右視圖

結果分析

依據對每個柵格的高度差的大小進行分類,柵格高度差方法依賴於點雲數據。柵格內地面點高度差特徵符合柵格高度差方法,但是對於高平臺仍然符合該特徵,所以對於進行柵格話之後的高平臺點仍然被分類爲地面點。但是,該方法的分類出的地面點包含真實的地面點。

3. 法向量方法


法向量方法基於假設爲計算得到的地面點法向量爲豎直向上或向下,即地面點法向量值爲 (0, 0, 1)(0, 0, -1)

方法過程:

  1. 計算點法向量
  2. 設定法向量閾值 threshold 進行點分類

方法結果

鳥瞰圖

右視圖

結果分析

根據法向量方法的假設,一定要先對點雲進行校正,如果不進行校正,那麼很可能出現某一幀沒有地面點被分割出來的極端情況(激光雷達傾斜角度過大)。法向量方法與高度差方法結果類似,對於平臺類型障礙物生成的點無法有效區分。所以可以看到右視圖中有部分店漂浮與真實地面點上方。

4. 柵格最低高度以上0.2米方法


柵格最低高度以上 0.2 米方法中的數值 0.2 可在 0.2 附近進行選取,有論文設置爲 0.15 。此方法與柵格高度差方法類似,也是基於柵格內點的高度信息來進行點分類。不過該方法並沒有對柵格進行地面柵格或障礙物柵格分類,而在每個柵格內進行點的分類,最後將所有柵格內的點彙總得到地面點。

方法過程:

  1. 生成柵格地圖
  2. 找到柵格內最低點,並儲存其高度 h
  3. 找到柵格內點高度小於 h + 0.2,分類爲地面點

方法結果

鳥瞰圖

右視圖

結果分析

柵格最低高度以上0.2米方法依賴於柵格內的最低點選取,當最地點正好是真實地面點時,結果較爲正確,反之則不然。與柵格高度差方法類似,該方法對懸浮物無法處理。

5. 絕對高度方法


絕對高度方法根據校準後點雲高度進行分割,通過設定閾值將點雲分爲地面點和障礙物點。

方法過程:

  1. 校準點雲
  2. 根據高度閾值 threshold 對點進行分類

方法結果

鳥瞰圖

右視圖

結果分析

絕對高度方法必須對校準點雲進行操作,根據校準後點雲通過設定高度閾值進行分類。從鳥瞰圖可看出,遠處有一部分地面點被分割爲障礙物點,從結果右視圖可看出,該方法對懸浮物可很好處理。

6. 平均高度方法


平均高度方法是對預處理後已經包含大部分地面點進行的處理,而不能單獨進行使用。本文采用柵格最低點高度以上 0.2方法作爲預處理,其他地面點預處理也可。該方法基於假設爲,預處理分割後得到點中地面點爲絕大部分點,從而可根據平均高度作爲進一步濾波。

方法過程:

  1. 柵格最低點高度以上 0.2 米方法分割出地面點
  2. 計算 過程 1. 得到地面點的平均高度 h
  3. h 爲閾值再進行分割得到地面點

方法結果

鳥瞰圖

右視圖

結果分析

平均高度方法作爲其他方法的一個小的補充,可對分割出的點懸浮物點進行進一步濾波。但對當大平臺場景無法處理。

結論


本文對基於幾何特徵方法 水平面校準方法法向量方法柵格高度差方法柵格最低高度以上0.2米方法絕對高度方法平均高度方法 等方法進行了分別分析,對各自方法優缺點進行了探討。各個方法可以進行合理組合來達到地面點分割效果。
這些方法可作爲機器學習方法的數據集生成,爲機器學習方法做好數據準備。


歡迎訪問我的個人博客: zengzeyu.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章