[摘抄] 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的,但是对于vSLAM而言prediction是必须的,因为vSLAM的终极目标是要real-time navigation。对于传统SFM而言,real-time是不要求的。

而传统的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

  

  日常场景,基于多视角Multi-view重建,不使用RGBD方式的话,就选SfM(Structure from Motion)+MVS(Multi View Stereo)+SR(Surface Reconstruction)+TM(Texture Mapping)套路啦,这是传统基于多视几何的路子,原理就是利用多张图像间的特征点匹配求解相机内外参数和三维空间点的位置,也就是稀疏点云(一堆点),之后再让它浓一点,变成连续的,再加点颜色和纹理,data flow大致是:

当然做到dense点云的话看起来就比较逼真了,想把点连起来变成连续多边形网格(也就是表面)再加上纹理信息,就是可以各种玩的3D模型了。商业软件很多了,上面已经有一些不错的例子,Pix4Dmapper是一款专门用于无人机航拍图像重建的产品,效率质量惊人,当然用于地面场景应用也是可以的。如果不怕麻烦的话,这里主要介绍一些research的例子:

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),超级经典,反正我是没好好读完过。

自己从图片一步步重建出逼真的model是一件很爽的事情,像创世一般,比如几天重建个罗马,几天重建个世界啥的。

原文地址:https://www.cnblogs.com/yhlx125/p/8719194.html

时间: 2024-10-10 18:14:46

[摘抄] SFM 和 Visual SLAM的相关文章

ICCV研讨会:实时SLAM的未来以及深度学习与SLAM的比较

这篇短文写的很好,我把它copy到这里供大家学习 上一届「国际计算机视觉大会(ICCV:International Conference of Computer Vision )」成为了深度学习(Deep Learning)技术的主场,但在我们宣布卷积神经网络(ConvNet)的全面胜利之前,让我们先看看计算机视觉的「非学习(non-learning)」几何方面的进展如何.同步定位与地图构建(SLAM: Simultaneous Localization and Mapping )可以说是机器人

关于CV、SLAM、机器人导航的碎碎念

接触SLAM有半年左右,这段时间,我们跟进最新的开源算法,并根据实际情况修改了一些算法源码,实现机器人的slam.路径规划和避障行为.而我也从一个距离门口18条大街的小白顺利入了门. 之前由于基础薄弱,对计算机视觉.SLAM.机器人导航的一些概念不太明确,导致在选方案和传感器的时候,大方向有点模糊,没能跳出局部看全局,走了一些弯路.随着学习的深入,对一些基础知识也有了相对清晰的概念,最近试着梳理了一下相关的东西,也算是自己总结. 先祭出一张我自己徒手画的框图: 1.之前一直认为,机器人导航用的地

A Multi-Sensorial Simultaneous Localization and Mapping (SLAM) System for Low-Cost Micro Aerial Vehicles in GPS-Denied Environments

一种在无GPS环境中设计的面向低价微型飞行器的多传感器同步定位成图系统 学术编辑:Gonzalo Pajares Martinsanz收到:2017年1月25日:接受:2017年4月5日:发布时间:4月8日201 Abstract: One of the main challenges of aerial robots navigation in indoor or GPS-denied environments is position estimation using only the ava

SLAM论文阅读笔记

[1]陈卫东, 张飞. 移动机器人的同步自定位与地图创建研究进展[J]. 控制理论与应用, 2005, 22(3):455-460. [2]Cadena C, Carlone L, Carrillo H, et al. Past, Present, and Future of Simultaneous Localization and Mapping: Toward the Robust-Perception Age[J]. IEEE Transactions on Robotics, 2016

详解SLAM的典型应用及分类

SLAM是Simultaneous localization and mapping缩写,意为"同步定位与建图",主要用于解决机器人在未知环境运动时的定位与地图构建问题,为了让大家更多的了解SLAM,以下将从SLAM的应用领域.SLAM框架.SLAM分类(基于传感器的SLAM分类)来进行全面阐述,本文仅对没有接触过SLAM的新人进行的科普. 一.SLAM的典型应用领域 机器人定位导航领域:地图建模.SLAM可以辅助机器人执行路径规划.自主探索.导航等任务.国内的科沃斯.塔米以及最新面世

g2o vs GTSAM vs HOG-Man

摘自 Comparison of Optimization Techniques for 3D Graph-based SLAM  Doaa M. A.-Latif et al. (2013) Ain Shams University  PDF This paper presents a comparison of the recent methods for graph optimization in terms of translation, rotation, and trajectory

闲的时候看看(怎么可能有闲的时候)

<程序猿幼崽上路指南> UNIX编程艺术UNIX网络编程代码大全// apache的源码<Pragmatic Programmer>.<The Art of UNIX Programming>.<Elements of Programming Style>和<The Productive Programmer>Large-Scale C++ Software Design 分析与设计://c++的对象机制,设计模式,大规模设计Object-Ori

cvpr2015总结

CNN Hypercolumns for Object Segmentation and Fine-Grained LocalizationBharath Hariharan, Pablo Arbeláez, Ross Girshick, Jitendra Malik Improving Object Detection With Deep Convolutional Networks via Bayesian Optimization and Structured PredictionYuti

56 Facial Recognition Research Groups to Watch

56 Facial Recognition Research Groups to Watch The research of facial recognition has been a fascinating journey. It began in the 1960s with Woody Bledsoe, Helen Chan Wolf, and Charles Bisson who created programs to assist with basic face recognition