该文档总结了使用笔者multi view stereo (MVS)的方法对相机进行rectify, 生成深度图的过程, 希望能给之后的同学一些帮助。
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 会有以下的步骤
sfm的流程可以用一下这张图来表示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DvUkYteJ-1585842008588)(/Users/edward/Library/Application Support/typora-user-images/image-20200229164917881.png)]
如前文所述, MVS pipeline主要有四个步骤, SFM, MVS, SR和TM, 这几个步骤分别有以下的开源工具可以参考, 点击链接可以直接转到相应工程中
SFM:
MVS
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建议下载pre built binary, 是十分稳定的, 如果想要用dense reconstruction, 请自行安装cuda。
mac系统请点击 macos
windows系统请点击 windows
点完后直接运行, 安装完成。
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一下。
在进行稀疏重建后, 可以把model导出到txt文件里。
包括了
可以通过scripts 里提供的脚本读取相应参数。
如果需要进一步rectify, 可以把参数输入opencv的stereoRectify()
函数, 之后initUndistortRecifyMap()
, 最后使用remap()
进行rectify。
在下面的界面中按照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可以参考这篇博客安装https://blog.csdn.net/moneyhoney123/article/details/78454837
需要注意的一个坑点是, 如果图片太少, 会报pmvs2 crash not enough memory需要修改PMVS的配置文件nv.ini, 把minImageNum改为2