[摘抄] 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 目前来说,受到业界肯定 ...
随机推荐
- 记录php中一种骚操作
$options = array( 'config' => array( 'aaa' => 111, 'bbb' => 222, ), 'headers' => array( ...
- 用VSCode写Vue要用到的配置
[本文出自天外归云的博客园] 文件-首选项-设置-打开settings.json-用户设置区域填写: { "workbench.colorTheme": "Monokai ...
- .NET内存泄漏(之 静态事件)
一.事件引起的内存泄露 1.不手动注销事件也不发生内存泄露的情况 我们经常会写EventHandler += AFunction; 如果没有手动注销这个Event handler类似:EventHan ...
- dma 测试例子
#include <linux/module.h> #include <linux/slab.h> #include <linux/sched.h> #includ ...
- Windows下pip安装及更新出现“UnicodeEncodeError: 'ascii' codec can't encode character u'\u258c' in position 8: ordinal not in range(128)”问题解决办法
Windows下pip安装及更新出现“UnicodeEncodeError: 'ascii' codec can't encode character u'\u258c' in position 8: ...
- Web 呼起 APP
1. iOS iOS 9+,用 universal links,可以在微信和 safari 中呼起 APP,并定位到指定 View iOS 8-,用 iframe + scheme,在微信中不可以呼起 ...
- AOP 技术原理——代理模式全面总结
前言 非常重要的一个设计模式,也很常见,很多框架都有它的影子.定义就不多说了.两点: 1.为其它对象提供一个代理服务,间接控制对这个对象的访问,联想 Spring 事务机制,在合适的方法上加个 tra ...
- JAVA并发编程——守护线程(Daemon Thread)
在Java中有两类线程:用户线程 (User Thread).守护线程 (Daemon Thread). 所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称 ...
- Ubuntu下创建新用户后,不能使用管理员用户下安装的Anaconda
解决办法: 将管理员用户下Anaconda的安装环境添加到新用户下的环境变量里,具体操作: 系统切换到新用户下: vim .bashrc #添加Anaconda的环境变量 source .bashrc ...
- docker 应用-1(安装以及基础命令)
Docker 安装 还是看官方文档吧TAT https://docs.docker.com/engine/getstarted/step_one/ 理解docker镜像和容器 镜像就是docker容器 ...