码迷,mamicode.com
首页 > 其他好文 > 详细

[摘抄] SFM 和 Visual SLAM

时间:2018-04-04 23:24:42      阅读:710      评论:0      收藏:0      [点我收藏+]

标签:岁月   cli   dict   方案   颜色   原理   大牛   lock   pre   

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是一件很爽的事情,像创世一般,比如几天重建个罗马,几天重建个世界啥的。

[摘抄] SFM 和 Visual SLAM

标签:岁月   cli   dict   方案   颜色   原理   大牛   lock   pre   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!