multi-view stereo文档

multi view stereo文档

该文档总结了使用笔者multi view stereo (MVS)的方法对相机进行rectify, 生成深度图的过程, 但愿能给以后的同窗一些帮助。git

MVS简介

Multi View Stereo, 是对于多视图三维重建一系列方法的总称, 简而言之, 就是利用多个相机拍摄的多张照片, 来重建出照片中的场景。github

学习multi view stereo的流程有如下一些经典的资源, 能够点击下面表格里的连接进行下载。macos

内容 描述
multiview stereo a tutorial mutli view stereo的经典教程, 强烈推荐阅读。
pixelwise... MVS colmap团队写的论文
structure from motion 理解structure from motion很是好的材料, 一本书中的一个章节, 专门介绍sfm

完整的multi view stereo pipeline 会有如下的步骤编程

  • input images
  • structure from motion(SFM) => camera parameters, sparse point cloud
  • Muti view stereo(MVS) => depth map, dense point cloud
  • Surface reconstruction(SR) => poisson or delauny reconstruction, mesh
  • texture mapping(TM)=> get mesh with texture

sfm的流程能够用一下这张图来表示windows

MVS工具链

几种开源工程的总结

如前文所述, MVS pipeline主要有四个步骤, SFM, MVS, SR和TM, 这几个步骤分别有如下的开源工具能够参考, 点击连接能够直接转到相应工程中app

  • SFM:iview

    • visual sfm 很是robust的sfm工具, window下能够直接下载打包好的binary, mac和Linux下若是手动编译比较复杂(很是不推荐手工编译, 笔者在这个问题上卡了好几天, 妥协下用windows也是不错的选择)
    • open MVG 笔者没有跑过这个工程, 效果未知, 能够以后尝试
    • colmap 界面简洁好用, 可是只能在windows下装好cuda才可使用dense reconstruction, 推荐使用
  • MVS函数

    • PMVS-CMVS 经典的MVS工具, 首先用CMVS对input image分类, 而后PMVS重建, 融合, 很是适合大规模的数据
    • colmap 比较方便生成深度图
    • openMvs 笔者没有跑过这个工程, 目测不太好跑, 不少人跑的过程当中遇到了问题。
  • SR && TM工具

    • Default 通常visual sfm, colmap都自带了SR, TM的工具, 能够用默认的工具学习

    • meshlab 提供了mesh simplify, smooth, SR等mesh相关的功能, 对于triangular mesh有很好的结果。 建议初学者下载meshlab安装包使用, 若是想deep dive细节, 能够下载vcglib(mesh lab基于这个lib开发的), 编译源码, vcglib用了不少元编程的理念, 仍是很好玩的, 不过流程比较复杂, 慎入。

colmap教程

在这个章节中, 笔者介绍colmap的使用教程。

installation

colmap建议下载pre built binary, 是十分稳定的, 若是想要用dense reconstruction, 请自行安装cuda。

mac系统请点击 macos

windows系统请点击 windows

点完后直接运行, 安装完成。

structure from motion

colmap的流程以下图

第一步是sfm, 须要把全部输入的图片放到一个文件夹下, 而后点击

进行特征提取和匹配, 提取后的结果能够在database management中进行可视化。

以后点击start reconstruction和bundle adjustment进行稀疏重建。

值得一提的是, 在extras->model statistic里有重投影偏差等评判相机参数好坏的参数, 通常比较好的结果在0.5一下。

export model and rectify

在进行稀疏重建后, 能够把model导出到txt文件里。

包括了

  • 相机参数
  • 特征点
  • 3d点云信息

能够经过scripts 里提供的脚本读取相应参数。

若是须要进一步rectify, 能够把参数输入opencv的stereoRectify()函数, 以后initUndistortRecifyMap(), 最后使用remap() 进行rectify。

dense reconstruction and depth map

在下面的界面中按照undistoriont, stereo, fusion ,poisson的流程进行重建

![image-20200229173820634](/Users/edward/Library/Application Support/typora-user-images/image-20200229173820634.png)

![image-20200229172613454](/Users/edward/Library/Application Support/typora-user-images/image-20200229172613454.png)

dense reconstruction的深度图由上图所示, 对于texture不是很丰富的图片, 建议增长 windows_radius和下降filter_min_ncc来提高深度图的准确度。

PMVS教程

PMVS能够参考这篇博客安装https://blog.csdn.net/moneyhoney123/article/details/78454837

须要注意的一个坑点是, 若是图片太少, 会报pmvs2 crash not enough memory须要修改PMVS的配置文件nv.ini, 把minImageNum改成2

相关文章
相关标签/搜索