基于點云的3D障礙物檢測
主要有以下步驟:
點云數(shù)據(jù)的處理
基于點云的障礙物分割
障礙物邊框構(gòu)建
點云到圖像平面的投影
點云數(shù)據(jù)的處理
KITTI數(shù)據(jù)集
KITTI數(shù)據(jù)集有四個相機,主要使用第三個相機(序號為02)拍攝的圖片、標定參數(shù)和標簽文件。
點云數(shù)據(jù)一般表示為N行,至少三列的numpy數(shù)組。每行對應(yīng)一個單獨的點,所以使用至少3個值的空間位置點(X, Y, Z)來表示。 ? 在KITTI數(shù)據(jù)中有一個附加值“反射率”,這是衡量激光光束在那個位置被反射回來了多少。所以在KITTI數(shù)據(jù)中,其點云數(shù)據(jù)就是N*4的矩陣。
三維點云的可視化
在MATLAB中可視化三維點云,如下圖。
額外的工作:三維點云的可視化,可使用python中的mayavi來實現(xiàn),它是一個專門畫3D圖的python工具。另外,在有的論文中常常用到點云的鳥瞰圖和前視圖(包含360度的全景柱面圖)。
高精地圖
ROI指定從高精地圖檢索到包含路面、路口的可駕駛區(qū)域。以下點云數(shù)據(jù)處理在高精地圖的基礎(chǔ)上進行點云處理,默認去除路邊建筑物和樹木等背景對象。
額外的工作:百度Apollo使用了高精地圖ROI過濾器建立了網(wǎng)格,對網(wǎng)格中的點云數(shù)據(jù)特征進行CNN學(xué)習來實現(xiàn)障礙物分割聚類,之后使用了MinBox構(gòu)建障礙物邊框。
去除地平面
找到地面平面并移除地面平面點,使用RANSAC(隨機采樣一致)算法檢測和匹配地面平面,最后結(jié)果如下圖。
基于點云的障礙物分割
對點云數(shù)據(jù)進行預(yù)處理后,只留下路面上障礙物的點云,其余的背景障礙物以及地面已被移除。障礙物分割主要檢測和劃分單獨的障礙物,將單獨的車輛、行人等障礙物分割出來。
由于只是在二維圖像中畫出3D目標框,所以保留車輛前面的點(取x>5)。在剩下的點云中使用柵格法構(gòu)建俯視圖(即投影到x-y平面)2D網(wǎng)格,網(wǎng)格大小由點云的大小來決定。
通過建立網(wǎng)格,可以得到以下統(tǒng)計量:
網(wǎng)格中的點云個數(shù)
網(wǎng)格中的點云的最大、最小和平均高度
網(wǎng)格中的點云序號
基于以上統(tǒng)計量,尋找每個格子附近(3*9)領(lǐng)域的連通區(qū)域,每個連通區(qū)域為一個障礙物,達到了分割障礙物的目的。
額外的工作:使用KITTI的標簽label文件來得到二維圖像上的障礙物邊界框,在此邊界框中進行聚類分割前景障礙物和背景。
障礙物邊框構(gòu)建
從以上得到每個障礙物點云后,就需要畫出每個障礙物的邊界框。在這里使用最小凸包法求出包圍點云的最小面積多邊形邊界框,如下圖。 ? 基于最小凸包法得到障礙物周圍的點,在這些點的基礎(chǔ)上求出包圍最小面積的矩形,如下圖。? ? 可以看到黃色部分的點云求最小面積矩形邊界框,會因為點云的稀疏,使得邊界框不精確。
額外的工作:根據(jù)點云的x, y坐標找到x, y的最大值和最小值的點(共有4個點),根據(jù)這4個點畫出矩形框。很顯然,這樣做是不行的,但是如果知道車輛的朝向,以朝向為軸找到距離軸最大最小的點,此方法畫出的邊界框更加精確。
點云到圖像平面的投影
點云到圖像平面的投影需要讀取標定參數(shù)文件,得到三個參數(shù)(相機的內(nèi)參矩陣、基于相機0的旋轉(zhuǎn)矩陣、外參矩陣),三個參數(shù)的乘積也就是點云到圖像的投影矩陣
-
3D
+關(guān)注
關(guān)注
9文章
2862瀏覽量
107324 -
文件
+關(guān)注
關(guān)注
1文章
561瀏覽量
24695 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1205瀏覽量
24641
原文標題:基于點云的3D障礙物檢測
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論