击上方“新机器视觉”,选择加"星标"或“置顶”

重磅干货,第一时间送达

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

主要有以下步骤:

  • 点云数据的处理

  • 基于点云的障碍物分割

  • 障碍物边框构建

  • 点云到图像平面的投影

点云数据的处理

KITTI数据集

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的旋转矩阵、外参矩阵),三个参数的乘积也就是点云到图像的投影矩阵,结果如下图。 转自:https://blog.csdn.net/qq_33801763/article/details/79283017

 End 

声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

matlab 点云特征_基于点云的3D障碍物检测相关推荐

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

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|新机器视觉 基于点云的3D障碍物检测主要有以下步骤: 点 ...

  2. 英文论文-城市云脑,基于互联网云脑的智慧城市新架构

    做一下记录,2017年9月24日,论文<城市云脑,基于互联网云脑的智慧城市新架构>的英文版本登记在 arxiv.org网站上.地址:https://arxiv.org/abs/1710.0 ...

  3. 小样本点云深度学习库_基于点云深度学习的点云数据集制作系统及方法与流程...

    本发明涉及测控技术领域,尤其涉及一种基于点云深度学习的点云数据集制作系统及方法. 背景技术: 深度学习网络模型一般都是基于64线单帧激光数据集进行.但64线激光器和单帧的限定,造成了工程应用中点云数据 ...

  4. python百度云ocr文字识别软件_基于百度云的OCR识别(Python)

    2019年7月3日早上,在百度AI开发者大会上,一个来自山西的青年,将一瓶矿泉水浇在了同样来自山西的李彦宏身上. 可以回顾一下 https://b23.tv/av57665929/p1 ,着实让人一惊 ...

  5. 包裹点云位姿估计_基于点云位姿平均的非合作目标三维重构

    基于点云位姿平均的非合作目标三维重构 李宜鹏 ; 解永春 [期刊名称] <空间控制技术与应用> [年 ( 卷 ), 期] 2020(046)001 [摘要] 针对在轨非合作目标 , 提出一 ...

  6. springboot 做表白墙_基于微信云开发 SayLove 表白墙微信小程序V1.0

    基于微信云开发 SayLove 表白墙微信小程序 后续会继续更新,敬请期待2.0全新版本~ 欢迎添加左边的微信一起探讨! 注意: 云函数的wx-server-sdk依赖需要更新才能正常使用,这里的都是 ...

  7. 华为云客户端_华为公布云手机计费清单,要不要光刻机也给出了答案

    华为云手机一出来,大家的好奇心就上来了.这就是解决华为无芯片的代替方案.纷纷说道,可以绕开光刻机,光刻机瞬间变废铁. 当时我还发布过文章分析:现在的云手机只是一个云端应用,并不是真正的云手机.需要在手 ...

  8. 什么叫云平台_为什么说云原生会成为未来企业技术变迁的趋势

    云原生是当下的热点话题,但是很多人对云原生有很多误解,特别是传统产业物联网或工控.物联网行业对云原生显得"后知后觉".与其在这里说是预测,不如说是现在进行时,只是由于传统产业本身的 ...

  9. PCL—低层次视觉—点云滤波(基于点云频率)

    1.点云的频率 今天在阅读分割有关的文献时,惊喜的发现,点云和图像一样,有可能也存在频率的概念.但这个概念并未在文献中出现也未被使用,谨在本博文中滥用一下"高频"一词.点云表达的是 ...

最新文章

  1. lnmp/nginx系统真正有效的图片防盗链完整设置详解
  2. CodeForces 392C Yet Another Number Sequence 矩阵快速幂
  3. vb6 串口同时读取写入数据怎么避免冲突_实例:S7-200 SMART通过Modbus-RTU读取温湿度传感器数据...
  4. 《Python知识手册》,高清pdf免费获取
  5. eclipse.jsp文件放哪_来自小师弟的灵魂拷问之数据泵导出丢失的那些数据量去哪了?...
  6. PAT1061. 判断题
  7. powershell写mysql_使用Powershell对MySql运行MySql存储过程脚本
  8. 08.15 javascript3 分支结构 条件语句 :单向分支 双向分支 嵌套分支 多项分支 循环结构 while dowhile for 跳转语句 其他语句...
  9. Flume案例之采集特定目录的数据到HDFS
  10. 有限元分析能具体做什么?
  11. python 制作抽奖箱_海安当地横幅制作值得推荐,抽奖箱制作-漫谈
  12. python在直方图上画折线图_Python 中 plt 画柱状图和折线图
  13. 乞丐的一句话,感动中国13亿人。
  14. 2011年中国科学院院士增选初步候选…
  15. 最全HTTP状态码汇总1XX——5XX
  16. 好不容易找到工作,还给期权,要去吗?
  17. 小程序助力银行数字化转型
  18. LATEX公式等号对齐方法
  19. 微信公众号h5页面禁止用户调整字体大小
  20. USB(一)——USB通用串行总线基础知识详述

热门文章

  1. Java中xmp标签的作用_如何在Java中从JPEG读取XMP面部数据
  2. Frog Jumps CodeForces - 1324C(二分)
  3. How far away ?(dfs水题)
  4. php中时差怎么改,我的PHP时差功能可以改进吗?
  5. 《剑指offer》题目说明
  6. STM32的USART发送数据时如何使用TXE和TC标志
  7. C++双冒号和单冒号的用法区别
  8. 对Android源码分析总结(Z)
  9. MOS管驱动电路总结
  10. strcpy与strdup