[摘抄] SFM 和 Visual SLAM
来自知乎:
SFM和vSLAM基本讨论的是同一问题,不过SFM是vision方向的叫法,而vSLAM是robotics方向的叫法。
vSLAM所谓的mapping,vision方向叫structure;vSLAM所谓的location,我们vision方向叫camera pose。
但是从出发点考虑的话,SFM主要是要完成3D reconstuction,而vSLAM主要是要完成localization。这样设计的优化目标就完全不同了。
从方法论的角度上考虑的话,传统的SFM是不要求prediction的,real-time是不要求的。但是对于vSLAM而言prediction是必须的,因为vSLAM的终极目标是要real-time navigation。
而传统的vSLAM也把主要精力放在prediction上面,而且是借助非camera的外界的手段来predict(运动模型?状态方程?),例如acceleration sensor。
传统SFM则把精力放在feature tracking上面了。
直到最近,SFM开始利用图片间的optical flow做prediction,而vSLAM则更加的注重了feature tracking。所以就目前而言两个领域似有大融和趋势。
Andres Davison做了一个非常精彩的关于15年来基于视觉的SLAM的总结。过去10-15年来最典型的几个SLAM系统如下:
MonoSLAM
PTAM
FAB-MAP
DTAM
KinectFusion


SfM:大家比较熟悉的就是Changchang Wu的 VisualSFM 啦,这是个写的比较溜的非开源福利,Changchang大神一致不公开源码,是他一行行累出来的作品,其中的SiftGPU和PBA也是大神的作品。我也算用过一些不同的SfM代码,各路大神写的,包括一些大牛组的,讲良心VSFM算是我见过鲁棒性最好的 之一(严谨脸),极少出现数据量太大、数据质量(各种因素blabla)差造成的崩、卡、完、“就是没结果”之类,虽说已有岁月包浆,但其精度和稳定性值得信赖的。非说槽点的话,也就是图像匹配和BA的效率不高,各种改进此处略去,如果只是用一下的话还是包您满意的。还有MVE、 OpenMVG (openMVG/openMVG)和 COLMAP(COLMAP - Structure-From-Motion and Multi-View Stereo),现在的框架都必须追求全面,所以稍微看下主页就会发现MVS等功能都是打包的。(bundler还是要说的,但是用起来稍微麻烦,不推荐上手玩)
MVS:PMVS、CMVS,CMPMVS,以及OpenMVS,各种dense层出不穷,本人代码能力有限,对于这块还是望而生畏的(顺吐一下,还是不要去自己编译OpenMVS了。。可能新版本已改观,未求证)。OpenMVS效果还是很赞的,虽说时常出现莫名的罢工,自带了VSFM和OpenMVG的接口,贴心。
SR和TM:CV,CG,CCTV,好吧,其实OpenMVS都有啦,请自行观看cdcseacave/openMVS。
另外,想自己翻来覆去把玩结果的话,Meshlab是很好的。
VisualSfM——OpenMVS,是一套比较简洁的方案,也可以把OpenMVS替换成CMPMVS。另外做重建数据是非常重要的,自己拍的话请尽量量大出奇迹,多一点视角,保证每次拍照位置的距离合适(基 线),实在懒的话就上视频了,找个软件或者自己opencv弄成帧再喂进去(感兴趣的话opencv和matlab也可以自己写重建算法,有高质量库和工程,例如普林的SfM相关课程)。一次拍的不好,可以多拍几次,看下哪里空洞补哪里,新数据加进去再跑一次就好(特征点检测匹配等中间结果慎删)。
想更多了解原理,推荐一本经典教材《计算机视觉中的多视图几何》(Multiple View Geometry in Computer Vision),超级经典。
CCCV 2017讲习班笔记-基于图像的大规模场景三维重建

[摘抄] SFM 和 Visual SLAM的更多相关文章
- 三维重建7:Visual SLAM算法笔记
VSLAM研究了几十年,新的东西不是很多,三维重建的VSLAM方法可以用一篇文章总结一下. 此文是一个好的视觉SLAM综述,对视觉SLAM总结比较全面,是SLAM那本书的很好的补充.介绍了基于滤波器的 ...
- 泡泡一分钟:Topomap: Topological Mapping and Navigation Based on Visual SLAM Maps
Topomap: Topological Mapping and Navigation Based on Visual SLAM Maps Fabian Bl¨ochliger, Marius Feh ...
- Visual SLAM
Visual SLAM 追求直接SLAM技术,而不是使用关键点,直接操作图像强度的跟踪和映射. 作为直接方法,LSD-SLAM使用图像中的所有信息,包括边缘,而基于关键点的方法只能在拐角处使用小块.这 ...
- Comparison of Laser SLAM and Visual SLAM
Comparison of Laser SLAM and Visual SLAM 目前,SLAM技术广泛应用于机器人.无人机.无人机.AR.VR等领域,依靠传感器可以实现机器的自主定位.测绘.路径规划 ...
- 什么是视觉Visual SLAM
什么是视觉Visual SLAM What Is Visual SLAM? What are the origins of visual SLAM? and what are some other a ...
- 论文阅读:Robust Visual SLAM with Point and Line Features
本文提出了使用异构点线特征的slam系统,继承了ORB-SLAM,包括双目匹配.帧追踪.局部地图.回环检测以及基于点线的BA.使用最少的参数对线特征采用标准正交表示,推导了线特征重投影误差的雅克比矩阵 ...
- [SLAM] 01 "Simultaneous Localization and Mapping" basic knowledge
发信人: leecty (Terry), 信区: ParttimeJobPost标 题: 创业公司招SLAM 算法工程师发信站: 水木社区 (Thu Jun 16 19:18:24 2016), 站内 ...
- (转) 实时SLAM的未来及与深度学习的比较
首页 视界智尚 算法技术 每日技术 来打我呀 注册 实时SLAM的未来及与深度学习的比较 The Future of Real-Time SLAM and “Deep Learni ...
- [SLAM] 03. ORB-SLAM2
一年后再读SLAM~ 行业有了不少工程实践方面的突破 一.链接:https://www.zhihu.com/question/53571648/answer/176732257 目前来说,受到业界肯定 ...
随机推荐
- underscore.js学习笔记
一.理清概念 1.Underscore封装了常用的JavaScript对象操作方法,用于提高开发效率,Underscore还可以被使用在Node.js运行环境.从API中,你已经可以看出,Unders ...
- Springboot中如何在Utils类中使用@Autowired注入bean
Springboot中如果希望在Utils工具类中,使用到我们已经定义过的Dao层或者Service层Bean,可以如下编写Utils类: 1. 使用@Component注解标记工具类Statisti ...
- MXPlayer ac3音轨支持问题
下载的MXPlayer 在播放kvm视频的时候没有声音, 说是不支持ac3的音频 到官网下载单独的解码包: https://mxplayerdownloads.com/mx-player-ac3-dt ...
- [干货教程]仿网易云课堂微信小程序开发实战经验
本篇文章想跟大家分享下:我们公司“湖北诚万兴科技”最近刚帮客户定制开发.目前已上线的“哎咆课堂”微信小程序的开发经验分享.首先大概介绍下这个小程序所涉及到的主要技术点:微信登录.微信支付.微信小程序F ...
- docker 搭建lnmp环境以及docker常用命令
1.首先docker 的基本操作. 2.然后命令深入,网络映射. 3.访问docker 内的应用 端口映射网桥之类. docker pull hub.c.163.com/library/php:7.0 ...
- 114、drawable和mipmap 目录下图片的区别
android 在 API level 17 加入了 mipmap 技术,对 bitmap 图片的渲染支持 mipmap 技术,来提高渲染的速度和质量.mipmap 是一种很早就有的技术了,翻译过来就 ...
- macOS Sierra(10.12.6), odoo(11.0), Python(3.5.4)配置
欣闻odoo11支持python3环境了,赶紧在mac平台尝试一下: 前期设置,参考另篇文章:macOS Sierra 10.12.6 odoo 10.0 开发环境配置 因为odoo11尚未正式发布, ...
- scala 隐式详解(implicit关键字)
掌握implicit的用法是阅读spark源码的基础,也是学习scala其它的开源框架的关键,implicit 可分为: 隐式参数 隐式转换类型 隐式调用函数 1.隐式参数 当我们在定义方法时,可以把 ...
- 【Java核心技术】类型信息(Class对象 反射 动态代理)
1 Class对象 理解RTTI在Java中的工作原理,首先需要知道类型信息在运行时是如何表示的,这是由Class对象来完成的,它包含了与类有关的信息.Class对象就是用来创建所有“常规”对象的,J ...
- Solve Error: nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmt.lib(newaop.obj)
Error: nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)&quo ...