多视图几何三维重建实战系列之COLMAP

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

多视图几何三维重建实战系列之COLMAP

1  基于MVS的三维重建技术流程

对于数据采集。多视角数据来源广泛,我们主要使用的是开源数据集和自采数据进行试验。

对于稀疏重建。我们主要利用SfM进行稀疏重建。SfM,(Structure From Motion,从运动中恢复结构),是一种从一组不同视角下拍摄的无序或有序影像中,同时恢复场景三维结构和相机姿态的技术。本文主要以增量式SfM为主,目的是得到场景中的相机姿态和表示场景结构的稀疏点云(图2)。增量式SfM选择无序影像进行特征匹配,并进行几何纠正、三角测量恢复稀疏点云结构,通过已有点云重新估计相对姿态,再进行局部和全局的BA优化。之后逐步向已有的结构中增加视角或影像,进行三角测量和姿态估计,再进行BA优化修正结构数据,最后输出全部的相机参数和稀疏三维点云。

多视图几何三维重建实战系列之COLMAP

图3 深度图估计框架

对于稠密重建,目的是恢复场景的稠密点云。利用深度图配准原理融合深度图,恢复稠密点云。

3.COLMAP实际操作

以传统方法COLMAP为例,介绍的三维重建的实际操作,行文结构按照数据采集、稀疏重建、深度图估计、稠密重建等四个步骤,希望读者可以参考本节,利用开源数据集或者自采数据,跑通基于传统方法(COLMAP)的三维重建技术。

3.1数据集

3.1.1数据采集

1)DTU数据集

DTU数据集[1]是针对于MVS而专门拍摄并处理的室内数据集(图4)。利用一个搭载可调节亮度灯的工业机器臂对一个物体进行多视角的拍摄,每个物体所拍的视角都经过严格控制,所以可以获取每个视角的相机内、外参数。

多视图几何三维重建实战系列之COLMAP

图4 DTU原始数据集

整个数据集由124个不同的物体或场景组成,每个物体共拍摄49个视角,每个视角共有7中不同的亮度,因此,每个物体或场景文件夹内部共有343个图片。每张影像的分辨率为1600×1200。(该数据集还包含带有深度图真值的训练影像集,我们将在之后文章中介绍如何利用该数据集训练神经网络。)

2)Tanks and Temples数据集

不同于DTU数据集,Tanks and Temples数据集[2]采集的是室外场景。这个数据集主要用于验证我们使用的网型和开源软件泛化能力,验证其是否对光照变化大、存在动态目标的场景仍具备较为精确地重建能力(图5)。

多视图几何三维重建实战系列之COLMAP

图6  目标目录

百度云盘链接:

https://pan.baidu.com/s/1Wb9E6BWCJu4wZfwxm_t4TQ#list/path=%2F

密码:s2v2

4) 自采数据采集要求

经过笔者多次实验,自采数据主要有以下几点要求:

  • 尽量使用单反相机或专业数码相机进行数据采集,如果要用手机进行采集,请使用单摄像头的手机进行数据采集。

  • 尽量选择纹理丰富的外界环境进行数据采集,避免玻璃围墙、瓷砖和打蜡地板等强反光材料环境

  • 尽量选择光照明亮,且光照条件变化不剧烈的环境,最好选择室内环境。如室内客厅,开启客厅大灯进行灯光补偿。

  • 尽量围绕重建物体或环境采集较多的影像,且在采集过程中控制快门速度,避免模糊。

接下来介绍COLMAP,笔者推荐大家使用Linux(Ubuntu)系统进行以下代码的编译与运行。以下所有程序的下载和编译都将基于Linux系统(Ubuntu)。传统方法暂时不需要GPU的加持,但之后的深度学习方法还是需要我们使用GPU,所以这里笔者建议各位读者,如果时间充裕,可先自行配置NVIDIA驱动,并安装CUDA9.0以上版本。笔者环境配置为:驱动版本 418.56, CUDA版本10.1, GTX960M,显存4GB(图7)。

多视图几何三维重建实战系列之COLMAP

图8 COLMAP图形界面

之后,新建项目:点击”file”,再点击“New Project”,弹出“project”窗口,点击“New”新建工程文件,将该工程文件保存在Scan1目录下,并点击“Select”选择场景原始图片所在的目录。最后点击“save”保存。

多视图几何三维重建实战系列之COLMAP

图10 特征提取

3)特征匹配

其次进行特征匹配,操作也十分简单,点击“processing”中的“Feature Matching”, 弹出选择窗体。同样,这里面的参数都可以选择默认的参数,然后点击“Run”,即可进行特征匹配(图11)。

多视图几何三维重建实战系列之COLMAP

图12 增量式重建过程

如图13,当前正在新增第39个视角,当前影像可以看到已有点云的337个,进行姿态估计(Pose Refinement Report),再进行BA优化,整体稀疏点云融合测量点110个,滤除测量点41个,最后进行三角测量(Retriangulation)新增观测点111个。上述过程结束后,进行迭代全局的BA优化,优化已有相机的姿态和三维稀疏点云坐标。

多视图几何三维重建实战系列之COLMAP

图14  稀疏重建结果

3.4深度图估计与优化

1)深度估计与优化原理

在COLMAP中,匹配代价构造、累计、估计和优化是封装在一起的,利用GEM模型进行求解。与视差估计框架一样,深度估计框架也分为如下四个步骤:匹配代价构造,代价累积,深度估计,深度图优化[5]。

多视图几何三维重建实战系列之COLMAP

多视图几何三维重建实战系列之COLMAP

图15 稠密重建窗口——去除图像畸变

3)操作2 – 深度估计

点击“stereo”,即可进行场景深度估计。(这里会有视觉上的卡顿,属于正常现象,一般来说,这里电脑是无法再进行其他事情的(至少笔者的电脑是这样),所以大家可以选择休息一下。)深度估计结束后,可以得到“photometric”和“geometric”下的深度图和法向量图。由之前提及的原理,COLMAP会利用光学一致性(photometric)同时估计视角的深度值和法向量值,并利用几何一致性(geometric)进行深度图优化,我们可以点击“Depth Map”和“Normal Map”,即可得到我们对应视角的深度图和法向量图(图16)。

多视图几何三维重建实战系列之COLMAP

图17 从左到右:Scan1原图,初始深度图,优化后深度图

通过观察结果(图17)发现,COLMAP可以获得较为精确的深度估计值,但在深度图完整度和深度连续性方面仍存在一些问题,深度图存在较多漏洞。

3.5稠密重建

先说操作,同样在该界面下,点击“Fusion”即可进行基于深度图融合的稠密重建。而该原理就是对估计出来的深度图,首先通过配准进行深度图融合,然后通过式3),按照投影方法进行点云恢复。

多视图几何三维重建实战系列之COLMAP

多视图几何三维重建实战系列之COLMAP

19 匹配矩阵

从匹配矩阵中看出数据集之间相机运动规律,若相机围绕物体呈圆周采样,匹配矩阵将有条带出现(图19-b),且若途中各个条带的平行关系越紧致,则说明相机的运动控制越严格。

例如Scan10中的上三角区中有平行排布的红色线条(图19-a),这是因为该数据集[1]在采样过程相机运动间隔受到严格规定(图20-a),而对于Tank and Tample[2]数据集,匹配矩阵的平行关系不紧致(图19-b),说明相机运动未受到严格限制(图20-b),只是简单的圆周运动。

通过对比发现,Scan10 可以通过较少的视图得到相同完整度和精度的重建结果,说明采集相片集过程中的前期控制对重见效果有影响。

多视图几何三维重建实战系列之COLMAP

结果表明,COLMAP深度估计的时间会随相片数量增多而增加。效率低于OpenMVS和深度学习方法。(不同机器上运行的时间不同)

4.3 深度图估计结果

多视图几何三维重建实战系列之COLMAP

多视图几何三维重建实战系列之COLMAP

多视图几何三维重建实战系列之COLMAP

▲长按加微信群或投稿

多视图几何三维重建实战系列之COLMAP

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

整理不易,请给工坊点赞和在看 多视图几何三维重建实战系列之COLMAP

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览210166 人正在系统学习中

来源:3D视觉工坊

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年7月11日
下一篇 2020年7月11日

相关推荐