看了许多与本人研究方向有关的论文,经常涉及到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),如下图(源):

Storm实时分析系统 slam实时性_Storm实时分析系统

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