前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SLAM 深度估计 三维重建 标定 传感器融合

SLAM 深度估计 三维重建 标定 传感器融合

作者头像
用户1150922
发布2022-05-10 08:28:39
1K0
发布2022-05-10 08:28:39
举报
文章被收录于专栏:计算机视觉life计算机视觉life

经常有粉丝问视觉/激光/SLAM、三维重建等方向的学习路线,这里我再总结给大家,如下所示:

图片
图片
图片
图片
图片
图片

随着最近几年智能机器人、自动驾驶、AR/MR等领域的快速发展,企业对3D视觉算法及SLAM算法需求越来越强烈,该领域迎来了爆发式发展。

按照应用不同我们把3D视觉及SLAM算法分为如下方向:

  • 视觉深度估计
  • 视觉(惯性)SLAM
  • 激光/多传感器融合SLAM
  • 几何/深度学习三维重建
  • 视觉传感器标定

下面分别介绍(本文较长,建议收藏):

视觉深度估计

视觉深度估计的目的就是估计图像中场景的深度,即场景中各点像素到相机成像平⾯的垂直距离,分为绝对距离和相对距离。我们看下面这个例子,左边是原图,右边是算法估计的对应深度图:

图片
图片

最近⼏年,⾃动驾驶 、⼈机交互、虚拟现实、机器⼈等领域发展极为迅速,尤其是视觉⽅案在⾃动驾驶中取得惊艳的效果,在这些应⽤场景中,如何获取场景中的深度信息是关键且必须的。同时,从深度图中获得前后的关系更容易分辨出物体的边界,简化了CV中很多任务的算法,例如3D⽬标检测和分割、场景理解等。相⽐于激光雷达测距,相机价格低廉、体积小巧,操作简单等优点,目前视觉深度估计是三维视觉最重要的基础模块之一,不仅在学术届各大CV顶会上有很多深度估计相关新的论文,在工业界应用也非常广泛,是比较热门的研究⽅向。

图片
图片

深度估计在自动驾驶领域的应用

视觉(惯性)SLAM

SLAM是指某种移动设备(如机器人、无人机、手机、汽车、智能 穿戴设备等) 从一个未知环境里的未知地点出 发, 在运动过程中通过传感器(如相 机、激光雷达、 IMU等)观测定位 自身位置和姿态,再根据自身位 姿进行增量式的地图构建, 从而达到同时定位和地图构建的 目的。SLAM技术是智能机器人、自动驾驶汽车、AR/MR等领域的底层核心技术之一。

如果SLAM过程使用的主要是视觉相关的传感器(如单目、双目、RGB-D、鱼眼、全景相机),一般称之为视觉SLAM。目前最知名的、效果最好的视觉SLAM是ORB-SLAM2/3系列和VINS-Mono/Fusion系列。

2015年,西班牙萨拉戈萨大学机器人感知与实时研究组开源了ORB-SLAM第一个版本,由于其出色的效果受到广泛关注。该团队分别在2016年和2020年开源了第二个版本ORB-SLAM2和第三个版本ORB-SLAM3。

其中ORB-SLAM2是业内最知名、应用最广泛的开源代码。它有如下优点:

  • 支持单目,双目和RGB-D相机的完整开源SLAM方案,能够实现地图重用、回环检测和重新定位的功能。
  • 支持轻量级定位模式,可以达到零漂移,此时不使用局部建图和回环检测的线程,可以用视觉里程计来跟踪未建图区域。
  • 采用ORB特征,具有旋转不变性、光照不变性、尺度不变性,匹配速度快,适合实时应用。无论是在室内的小型手持设备,还是到工厂环境的无人机和城市里驾驶的汽车,ORB-SLAM2都能够在CPU上进行实时工作。
  • 跟踪、局部地图、闭环、重定位等所有的任务都采用相同的ORB特征,使得系统内数据交互更高效、稳定可靠。
  • 单目初始化和应用场景解耦,不管是平面还是非平面场景,都可以自动初始化,无需人工干预。
  • 地图点和关键帧创建比较宽松,但后续会进行严格筛选,剔除冗余关键帧和误差大的地图点,增加建图过程的弹性,在大旋转、快速运动、纹理不足等恶劣情况下可以提高跟踪的鲁棒性。
  • 采用共视图,使得跟踪和建图控制在局部共视区域,与全局地图大小无关,可以在大场景下运行。
  • 使用本质图(Essential Graph)来优化位姿实现回环检测,耗时少精度高 。
  • 相比于直接法,可以用于宽基线特征匹配,更适合于对深度精度要求较高的场景,比如三维重建。
  • 定位精度高,可达厘米级,是特征点法SLAM的经典代表作品。
  • 代码可读性强,包含很多工程化技巧,非常实用。

下面是ORB-SLAM2的算法框架

图片
图片

ORB-SLAM2 在汽车上应用

图片
图片

ORB-SLAM2 用于室内三维重建

图片
图片

ORB-SLAM3是在特征点法SLAM经典之作ORB-SLAM2的基础上开发的,于2020年7月发布。它在定位精度和效果上几乎碾压了同类的开源算法,被称为VIO算法的巅峰之作。受到极大关注。该算法流程图如下所示

图片
图片

该算法的特点如下所示:

  • 1、 第一个可以运行视觉、视觉惯性和多地图,支持单目、双目和RGB-D相机,且支持针孔和鱼眼镜头模型的SLAM系统。
  • 2、该算法可以在不同大小,室内和室外环境中鲁棒、实时的运行,精度上相比于以前的方法提升了2~5倍。
  • 3、 多地图系统可以让系统在视觉信息缺乏的场景下长时间运行。比如当跟踪丢失的时候,它会重新建立新的地图,并在重新访问之前的地图时,无缝地与之前的地图合并。
  • 4、实验结果证明,双目惯性模式下,该算法在无人机数据集EuRoC上可以达到平均3.6cm的定位精度,在手持设备快速移动的室内数据集TUM-VI上达到了9mm的定位精度。

先来直观的看看视觉效果

看 ORB-SLAM3 疯狂绕圈,稳的很!甚至滑滑梯从黑管子中穿过!

图片
图片

从室内到室外,丝滑闭环

图片
图片

ORB-SLAM3效果展示

上面是定性的结果,下图是量化结果。

图片
图片

从统计数据来看,ORB-SLAM3确实碾压同类算法。功能强大到让SLAM算法研究者感慨“把自己想做的都做了”

VINS即Visual-Inertial navigation Systems,是视觉惯性导航系统的统称,不过我们平时所说的一般是指VINS-Mono/Fusion。香港科技大学飞行机器人实验室(沈邵劼团队)在2018年开源了VINS-Mono算法。第一作者秦通(2019华为天才少年),该论文获2018年机器人顶级期刊IEEE Transactions on Robotics最佳论文奖。它用一个单目相机+惯性测量单元(Inertial Measurement Unit,简称IMU)实现了紧耦合的视觉和惯性联合状态估计,在保证高精度里程计效果的同时,还可以同时估计出传感器外参,IMU零偏以及传感器时延。2019年该团队开源了VINS-Mono的升级版VINS-Fusion,它支持多种视觉惯性传感器类型,包括单目+IMU,双目+IMU,以及纯双目。VINS-Mono和VINS-Fusion在当年一骑绝尘,是非常经典且优秀的VIO框架。

以下是VINS-Mono效果展示,在室外大尺度效果也非常鲁棒,以下是它在香港科技大学操场的SLAM效果:

图片
图片

在手机AR上应用,该算法完胜当前最先进的Google Tango效果如下:

图片
图片

以下是VINS-Fusion在汽车SLAM上的效果:

激光/多传感器融合SLAM

如果SLAM过程使用的主要是激光雷达相关的传感器,一般称之为激光SLAM。目前最知名的、效果最好的激光SLAM是Google发布的Cartographer,以及LOAM、LEGO-LOAM。

Cartographer是Google推出的一套基于图优化的激光SLAM算法,它同时支持2D和3D激光SLAM,可以跨平台使用,支持Lidar、IMU、Odemetry、GPS、Landmark等多种传感器配置。是目前落地应用最广泛的激光SLAM算法之一。

图片
图片

Cartographer建图过程

Cartographer代码最重要的 贡献不仅仅是算法,而是**工程实现实在是太优秀了!**它不依赖PCL,g2o, iSAM, sophus, OpenCV等第三方库,所有轮子都是自己造的,2D/3D的SLAM的核心部分仅仅依赖于Boost、Eigen(线性代数库)、Ceres(Google开源的非线性优化库)等几个底层的库。

这明显不是搞科研的玩儿法,就是奔着产品去的!因为依赖库少,可以直接在产品级嵌入式系统上应用,关键是开源免费,而且效果还针不戳!极大的降低了开发者的门槛。目前在GitHub的star数目是非常高的。

因此Cartographer非常适合于扫地/清洁机器人、仓储物流机器人、送餐机器人等室内服务机器人场景的实时定位和建图。

如果SLAM过程使用了3种以上传感器,比如视觉、激光、IMU、GPS等,一般称之为多传感器融合SLAM。比较知名的是LIO-SAM、LVI-SAM、R3LIVE等。

LIO-SAM 是Tixiao Shan在LeGO-LOAM的扩展,添加了IMU预积分因子和GPS因子:前端使用紧耦合的IMU融合方式,替代原有的帧间里程计,使得前端更轻量;后端沿用LeGO-LOAM,在此基础上融入了GPS观测。同时前端后端相互耦合,提高系统精度。

图片
图片

LIO-SAM效果展示

几何/深度学习三维重建

指用相机拍摄真实世界的物体、场景,并通过计算机视觉技术进行处理,从而得到物体的三维模型。常见的重建方法包括视觉几何三维重建,以及最近的基于 深度学习的三维重建。它是增强现实(AR)、混合现实(MR)、机器人导航、自动驾驶等领域的核心技术之一。三维重建通常需要SFM或者SLAM得到的位姿和地图点作为输入条件,下图是视觉三维重建的基本流程:

图片
图片
图片
图片

视觉几何三维重建效果展示

根据不同的实现方法,我们可以将三维重建分为:传统基于几何的三维重建和深度学习方法三维重建。具体细分如下所示:

图片
图片

传统的重建方法是使用光度一致性等来计算稠密的三维信息。虽然这些方法在理想的Lambertian场景下,精度已经很高。但也有一些常见的局限性,例如弱纹理,高反光和重复纹理等,使得重建困难或重建的结果不完整。因此,传统三维重建方法在重建的完整性等方面仍有很大的改进空间。

近年来深度学习在三维重建上取得了很大的成功。基于学习的方法可以引入比如镜面先验和反射先验等全局语义信息,使匹配更加鲁棒,从而解决传统方法无法克服的难题。因此掌握基于深度学习的三维重建前沿算法非常重要。另外,在这个大数据时代,深度学习已经是大家必须掌握的技能,传统视觉算法已经很难有新的突破,各个领域都在朝深度学习方向研究,近几年各大视觉会议论文都是基于深度学习来实现三维重建,各个大厂招聘也越来越看重深度学习三维重建方法。

图片
图片

下图是我们整理的独家深度学习MVS网络演化图:

图片
图片

下面学习路线以深度学习MVS网络演化图为主线,重点讲解三个优秀的开源框架 MVSNet(经典的深度学习MVS开源库)、PatchMatchNet(有监督MVS网络中最新最佳)、JDACS-MS(无监督MVS网络中最新最佳),并梳理各种变种网络,覆盖目前深度学习MVS最前沿、最优秀的技术

视觉传感器标定

包括常见的单目/鱼眼/双目/阵列相机标定。相机标定是指借助专用的标志物(如棋盘格)来估计相机的图像传感器参数(内参、外参)和镜头参数(畸变系数)。相机标定是一切三维视觉的基础。它广泛应用于双目视觉、手眼机械臂、机器人定位建图、图像拼接、三维重建等场景。

图片
图片

相机标定学习路线

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 视觉深度估计
  • 视觉(惯性)SLAM
  • 激光/多传感器融合SLAM
  • 几何/深度学习三维重建
  • 视觉传感器标定
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档