SLAM和SFM有什么区别?

快速获得最新干货

本文转自3D视觉工坊

自古以来,人们惆怅千年要解决的问题: 定位、定向. 当然了还有我是谁?我在哪里?

在这个时候, SLAM与SFM 横空出世. 这两兄弟叱咤乾坤,成为人们解决上述问题的得力帮手.

SFM

SFM即Structure From Motion.

它也称之为传统三维重建,这是一门计算机视觉学科的分支, 特点是把数据采集回来,然后离线处理.常见应用就是重建某建筑物的3D地图.

下面附上一些三维重建的效果图:



SLAM

SLAM也被称为SimultaneousLocalizationandMapping,翻译过来叫同时定位与建图.

SALM是一个概念不是算法,SLAM包含多个模块,每个模块都有多种算法.每种算法很复杂的,此处还是保护好自己头发!

整(萨日朗什么意思?萨日朗是一种红色的花,细小的茎叶,白色象蒜一样的鳞茎,火红的花冠向上卷起,内蒙古草原的人们叫它萨日朗花。 蒙语萨日朗花,翻译成汉语就是草原上的山丹花,象征夫妻和睦,也象征多子多福。)个SLAM框架可以分为前端和后端.根据不同的前端需求,我们采用不同的后端策略,后端也提出了众多的算法理论,这些基本都是关于优化方面的东西,还是要好好保护头发.

附上一些SLAM效果图


区别

关于这两者区别与联系,知乎已有前辈给出了很鲜明的解释.

SFM和SLAM基本讨论的是同一问题,不过SFM是vision方向的叫法,而SLAM是robotics方向的叫法.

SLAM所谓的Mapping,SFM叫structure;SLAM所谓的Location,SFM方向叫camera pose.

但是从出发点考虑的话,SFM主要是要完成3D reconstuction,而SLAM主要是要完成localization.这样设计的优化目标就完全不同了.

从方法论的角度上考虑的话,传统的SFM是不要求prediction的,real-time是不要求的.但是对于SLAM而言prediction是必须的,因为SLAM的终极目标是要real-time navigation.

而传统的SLAM也把主要精力放在prediction上面,而且是借助非camera的外界的手段来predict(运动模型?状态方程?).例如acceleration sensor.

传统SFM则把精力放在feature tracking上面了.

直到最近,SFM开始利用间的optical flow做prediction,而SLAM则更加的注重了feature tracking.所以就目前而言两个领域似有大融和趋势.

SLAM要求实时,数据是线性有序的,无法一次获得所有图像,部分SLAM算法会丢失过去的部分信息;基于图像的SFM不要求实时,数据是无序的,可以一次输入所有图像,利用所有信息.

SLAM是个动态问题,会涉及到滤波,运动学相关的知识,而SFM主要涉及的还是图像处理的知识.

联系

基本理论是一致的,都是多视角几何.

传统方法都需要做特征值提取与匹配.

都需要优化投影误差.

回环矫正和SfM的全局注册方法是同一件事情.