基于点云的3D障碍物检测

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本文转自|新机器视觉

基于点云的3D障碍物检测主要有以下步骤:

  • 点云数据的处理

  • 基于点云的障碍物分割

  • 障碍物边框构建

  • 点云到图像平面的投影

点云数据的处理

KITTI数据集有四个相机,主要使用第三个相机(序号为02)拍摄的图片、标定参数和标签文件。点云数据一般表示为N行,至少三列的numpy数组。每行对应一个单独的点,所以使用至少3个值的空间位置点(X, Y, Z)来表示。 

 
在KITTI数据中有一个附加值“反射率”,这是衡量激光光束在那个位置被反射回来了多少。所以在KITTI数据中,其点云数据就是N*4的矩阵。


三维点云的可视化

在MATLAB中可视化三维点云,如下图。 

额外的工作:三维点云的可视化,可使用python中的mayavi来实现,它是一个专门画3D图的python工具。另外,在有的论文中常常用到点云的鸟瞰图和前视图(包含360度的全景柱面图)。


高精地图

ROI指定从高精地图检索到包含路面、路口的可驾驶区域。以下点云数据处理在高精地图的基础上进行点云处理,默认去除路边建筑物和树木等背景对象。

额外的工作:百度Apollo使用了高精地图ROI过滤器建立了网格,对网格中的点云数据特征进行CNN学习来实现障碍物分割聚类,之后使用了MinBox构建障碍物边框。

去除地平面

找到地面平面并移除地面平面点,使用RANSAC(随机采样一致)算法检测和匹配地面平面,最后结果如下图。 

基于点云的障碍物分割

对点云数据进行预处理后,只留下路面上障碍物的点云,其余的背景障碍物以及地面已被移除。障碍物分割主要检测和划分单独的障碍物,将单独的车辆、行人等障碍物分割出来。

由于只是在二维图像中画出3D目标框,所以保留车辆前面的点(取x>5)。在剩下的点云中使用栅格法构建俯视图(即投影到x-y平面)2D网格,网格大小由点云的大小来决定。

通过建立网格,可以得到以下统计量:

  • 网格中的点云个数

  • 网格中的点云的最大、最小和平均高度

  • 网格中的点云序号

基于以上统计量,寻找每个格子附近(3*9)领域的连通区域,每个连通区域为一个障碍物,达到了分割障碍物的目的。

额外的工作:使用KITTI的标签label文件来得到二维图像上的障碍物边界框,在此边界框中进行聚类分割前景障碍物和背景。


障碍物边框构建

从以上得到每个障碍物点云后,就需要画出每个障碍物的边界框。在这里使用最小凸包法求出包围点云的最小面积多边形边界框,如下图。 
 
基于最小凸包法得到障碍物周围的点,在这些点的基础上求出包围最小面积的矩形,如下图。 
 
可以看到黄色部分的点云求最小面积矩形边界框,会因为点云的稀疏,使得边界框不精确。

额外的工作:根据点云的x, y坐标找到x, y的最大值和最小值的点(共有4个点),根据这4个点画出矩形框。很显然,这样做是不行的,但是如果知道车辆的朝向,以朝向为轴找到距离轴最大最小的点,此方法画出的边界框更加精确。

点云到图像平面的投影

点云到图像平面的投影需要读取标定参数文件,得到三个参数(相机的内参矩阵、基于相机0的旋转矩阵、外参矩阵),三个参数的乘积也就是点云到图像的投影矩阵,结果如下图。 

 End 

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

  • 1
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值