天天看點

一文詳解實時稀疏點雲分割

/ 導讀 /

在基于雷射的自動駕駛或者移動機器人的應用中,在移動場景中提取單個對象的能力是十分重要的。因為這樣的系統需要在動态的感覺環境中感覺到周圍發生變化或者移動的對象,在感覺系統中,将圖像或者點雲資料預處理成單個物體是進行進一步分析的第一個步驟。

在這篇文章中就提出了一種十分高效的分割方法。首先是将掃描到的點雲移除平面處理,然後移除平面後一定範圍内的點雲資料分割成不同的對象。該論文的是集中解決了在很小的計算量的條件下,能夠在大多數系統上做到高效的分割。避免了直接對3D點雲的計算,并直接在2.5D 的深度圖像上進行操作。此方案能夠很好的解決處理稀疏的3D點雲資料。作者使用了新型Velodyne VLP-16掃描器,并且代碼是在C++和ROS中實作了這種方法,并且代碼是開源的,這種方法可以做到使用單核CPU以及高于傳感器的幀運作速率運作,能夠産生高品質的分割結果。

一文詳解實時稀疏點雲分割

▲左圖:使用Velodyne VLP-16掃描器得到的稀疏3D點雲資料分割後生成的對象(如人,車和樹)。 不同的顔色對應不同的分割結果。▲右:用于實驗的Clearpath Husky機器人。

在3D雷射點雲資料中分離單個對象是移動機器人或自動駕駛車輛自主導航的重要任務。在未知環境中航行的自動駕駛車輛面臨着對其周圍環境進行推理的複雜任務。,在擁有汽車和行人的繁忙街道上,地圖可能受到環境動态性質導緻的錯誤資料關聯的影響。在掃描配準和映射過程中,能夠更好地推理此類對象并忽略可能的動态對象的關鍵步驟是将3D點雲資料分割為不同的對象,以便可以單獨跟蹤它們。

是以本論文很重要的貢獻是将實作快讀高效且穩健的3D稀疏點雲的分割。(本人親自測試,真的很快,我的電腦的配置真的很菜,但是運作起來都超快)在移動的CPU上都可以處理超過70HZ(64線)或者250HZ的(16線)的Velodyne傳感器。

一文詳解實時稀疏點雲分割

地面去除

在進行分割之前,需要從掃描的點雲資料中移除地面。這種地面移除的方法,隻是把低于車輛高度的3D點移除。這種方法在簡單的場景中起作用,但是如果在車輛的俯仰或者側傾角不等于零或者地面不是完美的平面。則會失敗。但是可以使用RANSAC的平面拟合的方法改善情況。

雷射雷達的會提供每個雷射束的距離值,時間戳以及光束的方向作為原始資料。這使得我們可以直接将資料轉換為深度圖像。圖像中的行數由垂直方向上的光束的數量定義,比如對于Velodyne掃描器,有16線,32線以及64線,而圖像的列數有雷射每360度旋轉得到的距離值。這種虛像的每個像素存儲了傳感器到物體之間的距離,為了加速計算甚至可以考慮在需要時将水準方向上的多個讀數組合成一個像素。

一文詳解實時稀疏點雲分割

▲左上角:深度圖像的一部分。 左中:通過顯示α角度生成的圖像。 左下:應用Savitsky-Golay平滑後的角度。

▲右上角:α角的圖示。  右下圖:左圖中标記的α角度列的平滑圖示。

使用上述生成的和成圖像來處理而不是直接處理計算3D點雲,可以有效的加速處理速度,對于其他的不提供距離值的掃描器也可以将3D點雲投影到圓柱圖像上,計算每個像素的歐幾裡得距離,仍然可以使用該論文提出的方法。

為了識别地面,這裡面有三個假設:

  1. 假設傳感器是大緻安裝在水準移動基座上。
  2. 假設地面的曲率很低。
  3. 移動機器人或者車輛至少在深度圖像上最低行的像素觀測地平面

在假設成立的條件下,首先将深度圖像的每一列(c)像素的距離值(R)轉化為角度值 

一文詳解實時稀疏點雲分割

這些角度表示了連接配接兩點的傾斜角度。

一文詳解實時稀疏點雲分割

一文詳解實時稀疏點雲分割

分别代表在該行相鄰的深度值。知道連續垂直的兩個單個雷射束深度值,可以使用三角規則計算角度α,如下所示:

一文詳解實時稀疏點雲分割

其中ξa和ξb是對應于行r-1和r的雷射束的垂直角,由于每個α計算需要兩個深度值,是以生成的角度圖大小比深度圖範圍的行數小1.這裡假設吧這些所有的角度表示為,表示為在r行和c列(行和列)坐标上的角度值。

一文詳解實時稀疏點雲分割

 ▲地面識别算法

一文詳解實時稀疏點雲分割

▲根據上述算法得出的地面,地面标記為淺藍色。

但是由于雷射雷達也是有誤差的,是以這裡也是需要處理一些在深度範圍内的離群點,具體可檢視論文。為了達到角度平滑的效果使用了Savitsky-Golay濾波算法對每一個列進行處理。在得到濾波後的角度圖後,在這個基礎上開始執行地面識别,使用了廣度優先搜尋将相似的點标記在一起,廣度優先搜尋(Breadth-first search BFS) 是一種流行的圖搜尋周遊算法,他從圖給定的點開始周遊,并在移動到下一級令居之前首先開始探索直接相鄰的節點,在該論文中使用了網格上的N4領域值計算角度內插補點,以确定矩陣M的兩個相鄰元素是否滿足角度上的限制條件Δa,設定為5°。

使用雷射深度圖像進行快速有效的分割

傳感器的垂直分辨率對分割問題的難度是有着十分重要的影響的,我們需要判斷對于相鄰點,去判斷該雷射束是否是被同一物體反射。為了解決雷射是否是同一個物體反射的問題,這裡是基于角度測量的方法。這種方法的好處是文中反複提及多次這種方法的優點 :首先,我們可以直接在深度圖像中利用明确定義的鄰域關系,這使得分割問題更容易。其次,我們避免生成3D點雲,這使得整體方法的計算速度更快。

在下圖中展示了分割的效果

一文詳解實時稀疏點雲分割

這是使用該分割方案的結果,(A)圖是來自Velodynede 點雲,(B)根據傳感器的原始值建立的深度圖像,并且已經将地面點去除了。(C)圖是在生成的深度圖的基礎上執行的分割結果。(D)将分割後的深度圖還原為點雲,并以不同的顔色顯示。

這裡詳細的解釋一下關于如果使用角度限制的方法實作分割的:

如下圖所示的一個示例場景,其中兩個人在騎自行車者前面彼此靠近地行走,騎自行車者在他們和停放的汽車之間經過。這裡使用的Velodyne VLP-16掃描器記錄了這個場景。中間的圖像展示出了從位于O處的掃描器測量的兩個任意點A和B的結果,表示出了雷射束OA和OB。在不失一般性的情況下,我們假設A和B的坐标位于以O為中心的坐标系中,y軸沿着兩個雷射束中較長的那一個。我們将角度β定義為雷射束與連接配接A和B的線之間的角度,該角度一般是遠離掃描器。在實踐中,角度β證明是有價值的資訊,可以用來确定點A和B是否位于同一物體上。

一文詳解實時稀疏點雲分割

左:示例場景有兩個行人,一個騎自行車者和一輛汽車。中間:假設傳感器在O點并且線OA和OB表示兩個雷射束,則點A和B産生一條線,該線估計對象的表面,如果它們都屬于同一對象。我們基于角度β做出是否為同一物體的判斷。如果β>θ,其中θ是預定門檻值,認為這些點代表一個對象。右圖:示例場景中行人的俯視圖。綠線表示β>θ的點,而紅線表示低于門檻值的角度,是以将對象标記為不同。

那麼基于雷射的測量值我們是知道第一次測量的距離值OA以及對應的第二次測量值OB,分别将這兩次的測量結果标記為d1和d2,那麼利用以上資訊既可以用下列公式測量角度:

一文詳解實時稀疏點雲分割

圖中的右圖示出了從場景的俯視圖中在xy平面中的計算。注意,我們可以計算在範圍圖像中在行或列方向上相鄰的點A和B對的角度β。在第一種情況下,角度對應于行方向上的角度增量,而另一種情況下對應于列方向上的增量。

一文詳解實時稀疏點雲分割

分割算法

基于門檻值的β的分割方法在實驗評估中進行實驗,實際情況可以是被掃描物體是平面的情況,例如牆壁,并且幾乎平行于雷射束方向。在這種情況下,角度β将很小,是以物體可能被分成多個區段。這基本上意味着如果β小于θ,則難以确定兩個點是否源自兩個不同的物體,或者僅僅位于幾乎平行于波束方向的平面物體上。然而,盡管有這個缺點,我們的實驗表明該方法在實踐中仍然有用。上述行為很少發生,如果是這樣,它通常将會導緻特别傾斜的平面物體的過度分割。

一文詳解實時稀疏點雲分割

 以上就是關于去地面後使用的分割算法。可以看得出最重要的一個公式就是β角度值的求解.

一文詳解實時稀疏點雲分割

實驗部分

該算法​

  • (i)所有計算都可以快速執行,即使在大約 70 Hz 的移動 CPU 的單核上運作,
  • (ii)可以 将移動機器人獲得 3D 原始資料生成深度資料并分段為有意義的個體
  • (iii)該方法在稀疏資料上表現良好,例如從 16 光束 Velodyne Puck 掃描器獲得

的稀疏資料。在實驗中中,使用點雲庫PCL中來實作的歐幾裡德聚類。在所有實驗中,我們使用預設參數θ= 10°。

一文詳解實時稀疏點雲分割

▲代碼開源(https://github.com/PRBonn/depth_clustering)

- End -