SLAM、SFM、MVG与MVS的区别和联系

看了许多与本人研究方向有关的论文,经常涉及到SLAM、SFM、MVG、MVS的范畴,这几个部分有很大的相似之处,但侧重点有所不同,所以根据目标所设计的策略有所不同。

以下是本人的理解,如果有问题,欢迎在评论区指出、探讨。

1.SLAM(Simultaneous Localization and Mapping),也称为CML (Concurrent Mapping and Localization)

顾名思义,同步定位与建图,目的是让在未知的环境中的机器人(无人机、无人车等等)边走边确定自己的定位的同时描绘周围场景。

从任务需求中可知,这是一个实时性要求高的感知任务,便于后续的决策。因此SLAM的重点在于实时地精确导航,无偏差建图、渲染场景的优先级低一些。

1.1实时性的要求是它区别于后面的SFM的本质:

1.操作数据不同。SLAM输入多是有时序的连贯图像(也有可能是其他传感器信息,这里主要说的是VSLAM),无法一次获取所有图像,为了实时性还可能主动丢弃过去的部分信息

  • SFM则可以一次输入全部图像(主要是无序的),可以利用所有信息进行优化

2.时间要求不同。SLAM的实时性导致了许多有利于精确定位的耗时方法无法应用于online;

  • 而SFM主要是离线工作,不惜牺牲时间换取精度

3.时间需求不同。SLAM是实时Online的,任务是正在进行时,所以我们非常有必要知道实时获取图像的位姿信息,以便后续的Prediction、决策规划(是个动态问题

  • 而SFM是离线Offline的,图像信息在之前已经全部采集好了,不会重点关注于具体某一处的位姿信息。

2.SFM(Structure from Motion)

其核心目的是3D Reconstruction

这里的Structure个人认为就是VSLAM里的mapping
SFM里的Camera Pose个人认为就是VSLAM里的Localization

SLAM与SFM的区别在1.1已经解释了,从中也可以看出两者其实有很大的联系,个人认为VSLAM其实是SFM的子集,随着硬件、算力的革新,两者未来会更加相似:

  • SLAM现阶段还是主要关注real-time、prediction、navigation,突破实时性问题时就会在mapping上发力。
  • SFM主要精力还在于精准度上,为后面的MVS做准备,有余力时就会在实时性上发力,增量式sfm和VSLAM的边界就更模糊了。

3. MVG(Multiple View Geometry)和MVS(Multiple View Stereovision)

多视图几何(MVG)和多视图立体视觉(MVS)的任务不同:

  • 前者是骨头架子,从数据(图像和相机内参)中恢复相机位置和方向;还可以输出稀疏的3D点云(通过从照片中观察到的特征点进行三角测量来构建),个人认为MVG在这里就是SFM,从字面上MVG应该是SFM的本质(不知大家有何见解?)。
  • 后者是皮包骨头,得到密集的三维重建;一般输入是MVG得到的相机位姿和对应的图像,输出可以是密集的点云、刻面曲面(网格)或一组平面,这些平面可以可视化为场景的真实3D渲染。

三维重建真实场景一般的pipeline:
SfM(Structure from Motion)+MVS(Multi View Stereo)+SR(Surface Reconstruction)+TM(Texture Mapping),如下图(源)
在这里插入图片描述

现在的趋势是SFM后面的部分用机器学习或深度学习的方法来还原真实世界的感官。

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SFM(Structure from Motion)和SLAM(Simultaneous Localization and Mapping)是计算机视觉和机器人领域中的两个重要研究方向。 深入SFM,首先要了解其基本概念。SFM是一种从图像序列中重建三维场景的方法。它通过分析图像中物体和摄像机的运动来推导出场景的结构和摄像机的轨迹。在SFM中,我们使用了特征点匹配、三维点云重建等技术来实现场景的重建。此外,SFM还可以用于姿态估计、虚拟现实等领域。 在学习SFM时,我们需要掌握深度学习技术和计算机视觉基础知识。了解深度神经网络、卷积神经网络、循环神经网络等深度学习模型对于理解SFM中的特征点检测、匹配和姿态估计等步骤非常重要。同时,了解摄像机成像原理、特征描述子、三维点云重建算法等知识也是必不可少的。 深入SLAM,首先需要了解其基本概念。SLAM是一种同时定位和地图构建的技术,用于机器人或自主系统实时建立环境的地图并同时估计自身的位置。SLAM主要关注于解决机器人在未知环境中自主导航的问题。SLAM算法通常包括前端和后端两个模块。前端负责对环境进行感知,通过传感器(如激光雷达、摄像头等)获取数据。而后端负责估计机器人的轨迹和构建地图。 学习SLAM时,我们需要掌握激光雷达、摄像头等传感器的工作原理以及数据处理方法。此外,了解滤波器理论、优化算法(如最小二乘法、非线性优化等)也是必要的。同时,学习SLAM框架(如ORB-SLAM、LSD-SLAM等)的实现原理和代码实现可以帮助我们更好地理解SLAM算法。 总结而言,深入SFMSLAM需要掌握深度学习、计算机视觉和机器人相关的知识。通过学习基本概念、核心算法和实际应用,我们可以更好地理解和应用SFMSLAM技术。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值