multi view stereo文档

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

MVS简介

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

学习multi view stereo的流程有以下一些经典的资源, 可以点击下面表格里的链接进行下载。

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的流程可以用一下这张图来表示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DvUkYteJ-1585842008588)(/Users/edward/Library/Application Support/typora-user-images/image-20200229164917881.png)]

MVS工具链

几种开源工程的总结

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

  • SFM:

    • 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的流程如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8uD21KjB-1585842008589)(/Users/edward/Library/Application Support/typora-user-images/image-20200229171456151.png)]

第一步是sfm, 需要把所有输入的图片放到一个文件夹下, 然后点击

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yktRb4MB-1585842008589)(/Users/edward/Library/Application Support/typora-user-images/image-20200229171703066.png)]

进行特征提取和匹配, 提取后的结果可以在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的流程进行重建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-soQGmU7d-1585842008590)(/Users/edward/Library/Application Support/typora-user-images/image-20200229173820634.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dB0RSR3k-1585842008590)(/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

multi-view stereo教程相关推荐

  1. 多目立体视觉(Multiple View Stereo, MVS)

    多目立体视觉(Multiple View Stereo,MVS) 概念   定义:可以用来从照片中提取几何图形的线索有: 纹理.散焦.阴影.轮廓和立体匹配.多目立体视觉(MVS)是一组以立体匹配为主要 ...

  2. Vayo-Gerber View安装教程

    今天给大家录制了一个望友Gerber View软件的安装教程,这个软件可以替代CAM350.GC2000等看图,中文界面.操作也非常简单,测量&查看.转DXF.层对齐.镜像查看.层对齐.颜色填 ...

  3. SAP CDS view自学教程之六:如何在CDS view里消费table function

    Let's try to resolve one real issue now. What we want to achieve is: in CRM we need a CDS view which ...

  4. SAP CDS view自学教程之八:SAP Fiori Elements里不同类型的annotation

    Part1 – how to test odata service generated by CDS view Part2 – what objects are automatically gener ...

  5. 查看计算机或网络资源列表的命令,dos命令net view图文教程,显示网络计算机列表查看共享资源...

    大家好,我是老盖,首先感谢观看本文,本篇文章做的有视频,视频讲述的比较详细,也可以看我发布的视频. 今天我们学习net命令中的view,它这个命令可以查看网络计算机列表和共享的资源. 直接输入net ...

  6. UE4 C++使用Multi Theard的教程

    ==前言== 之前尝试在Tick中遍历整个ULevel中的Actor,并取每个Actor的Type name的时候,发现获取到20+个的时候,UE4就会崩溃[也许是遍历到自己然后访问到自己了..... ...

  7. vnc view使用教程

    有两个软件 vnc view  和vnc server 比如A电脑连接B电脑 那么A电脑上只要安装vnc view就可以了,B电脑上需安装vnc server vnc view  和vnc serve ...

  8. COLMAP简易教程(命令行模式)

    完整的 multi view stereo pipeline 会有以下步骤 structure from motion(SfM)==> camera parameters, sparse poi ...

  9. 计算机视觉,图像处理 经典代码paper整理(很全很强大!)

    转自:Jia-Bin Huang 同学收集了很多计算机视觉方面的代码 ,链接如下: https://netfiles.uiuc.edu/jbhuang1/www/resources/vision/in ...

最新文章

  1. mysql 连续签到天数_天天拿帮会通宝 帮会签到真给力
  2. ASP.NET MVC 入门9、Action Filter 与 内置的Filter实现(介绍)
  3. java实现短信上行源码_Java 发送短信验证码 示例源码
  4. 电脑最忌的18个小动作
  5. Intel Haswell/Broadwell架构/微架构/流水线 (8)-Broadwell微架构
  6. 01.查找的基本概念
  7. ASP.NET--表达式、运算符与分支结构
  8. SQL执行insert into后返回主键ID
  9. 使用 WebSphere Portlet Factory 构建基于 Web2.0 的灵活 SOA 前端
  10. opencv对图片的变换
  11. gmt绘制江苏省高程异常图
  12. 智慧城市是如何用大数据建成的?
  13. 分享一个免费开源的视频录制软件(OBS)
  14. python-matplotlib绘图 -应用subplots_adjust()方法解决图表与画布的间距问题
  15. TextView跑马灯
  16. oracle取得组内行号,行号
  17. 库存JAVA_Java解决高并发下商品库存更新
  18. 超平面与半空间Euclid 球和椭球 超平面分离定理和 支撑超平面定理
  19. SSL/TLS部署最佳实践
  20. AllegroPCB里面设置好颜色,光绘文件artwork和其他板子相关参数怎么重复应用到其他板子里面

热门文章

  1. 世界国家及中国各省市级地图ArcGIS MXD/SHP/QGIS/JSON/SQL数据文件【免费下载】
  2. where条件中有权限校验的自定义函数优化方法
  3. OpenEmu添加Core和bios
  4. 导入项目出现: Unable to resolve target ‘android-10′ 解决办法
  5. 医学统计学 第八章( t 检验)
  6. Android自定义键盘的几个小点
  7. [源码和文档分享]基于Android Studio实现的学生蹭课APP
  8. 10免费图标生成器网页设计师
  9. Mac解压Rar,7z,Zip,Winrar?Mac解压缩软件测评,推荐Mac上免费好用的解压软件,高效解压神器帮您解决苹果电脑的解压缩问题
  10. 抽象数据类型线性表的定义与实现