matlab 点云特征_基于点云的3D障碍物检测
擊上方“新機器視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達
基于點云的3D障礙物檢測
主要有以下步驟:
點云數(shù)據(jù)的處理
基于點云的障礙物分割
障礙物邊框構(gòu)建
點云到圖像平面的投影
點云數(shù)據(jù)的處理
KITTI數(shù)據(jù)集
KITTI數(shù)據(jù)集有四個相機,主要使用第三個相機(序號為02)拍攝的圖片、標(biāo)定參數(shù)和標(biāo)簽文件。
點云數(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é)習(xí)來實現(xiàn)障礙物分割聚類,之后使用了MinBox構(gòu)建障礙物邊框。
去除地平面
找到地面平面并移除地面平面點,使用RANSAC(隨機采樣一致)算法檢測和匹配地面平面,最后結(jié)果如下圖。?
基于點云的障礙物分割
對點云數(shù)據(jù)進行預(yù)處理后,只留下路面上障礙物的點云,其余的背景障礙物以及地面已被移除。障礙物分割主要檢測和劃分單獨的障礙物,將單獨的車輛、行人等障礙物分割出來。
由于只是在二維圖像中畫出3D目標(biāo)框,所以保留車輛前面的點(取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的標(biāo)簽label文件來得到二維圖像上的障礙物邊界框,在此邊界框中進行聚類分割前景障礙物和背景。
障礙物邊框構(gòu)建
從以上得到每個障礙物點云后,就需要畫出每個障礙物的邊界框。在這里使用最小凸包法求出包圍點云的最小面積多邊形邊界框,如下圖。??
基于最小凸包法得到障礙物周圍的點,在這些點的基礎(chǔ)上求出包圍最小面積的矩形,如下圖。??
可以看到黃色部分的點云求最小面積矩形邊界框,會因為點云的稀疏,使得邊界框不精確。
額外的工作:根據(jù)點云的x, y坐標(biāo)找到x, y的最大值和最小值的點(共有4個點),根據(jù)這4個點畫出矩形框。很顯然,這樣做是不行的,但是如果知道車輛的朝向,以朝向為軸找到距離軸最大最小的點,此方法畫出的邊界框更加精確。
點云到圖像平面的投影
點云到圖像平面的投影需要讀取標(biāo)定參數(shù)文件,得到三個參數(shù)(相機的內(nèi)參矩陣、基于相機0的旋轉(zhuǎn)矩陣、外參矩陣),三個參數(shù)的乘積也就是點云到圖像的投影矩陣,結(jié)果如下圖。?轉(zhuǎn)自:https://blog.csdn.net/qq_33801763/article/details/79283017
?End?
聲明:部分內(nèi)容來源于網(wǎng)絡(luò),僅供讀者學(xué)習(xí)、交流之目的。文章版權(quán)歸原作者所有。如有不妥,請聯(lián)系刪除。
總結(jié)
以上是生活随笔為你收集整理的matlab 点云特征_基于点云的3D障碍物检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车企"英文+数字"的
- 下一篇: matlab计算联合熵,如何用matla