看了许多与本人研究方向有关的论文,经常涉及到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;
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后面的部分用机器学习或深度学习的方法来还原真实世界的感官。
|