colmap的三维重建使用简介,首先colmap的安装传送门在我另一篇中有记录。
本篇记录一下使用方法。
1.数据集获取
首先是数据集问题,可以下载自己想试着重建的数据集保存。
通过colmap -h
和colmap gui
打开colmap的界面。
2.新建项目
首先点击file新建项目“New Project”
,弹出窗口,首先建立database,命名为scan1,后缀的db是它自动带上的,然后在Image中选择自己想要重建的图像。
3.特征点提取
之后就可以进行特征点提取,点击processing中的Feature extraction
,其中可以什么都不动,使用默认项,也可以自己修改,比如相机模型一般选择针孔模型,也可以换别的。然后点击Extract
4.特征点匹配
特征提取之后,需要进行特征匹配,点击processing中的Feature matching
,其中可以什么都不动,使用默认项,也可以自己修改,然后点击run
。
5.稀疏点云重建
然后就是稀疏点云重建。这里点击“reconstruction”中的“start reconstruction”进行一键式重建,整个过程将会自动进行增量式重建,我们可以从旁边的log框内查询当前状态。
1.右侧显示中,可以看出,
Registering image #39(49) :当前正在新增第39个视角
=> Image sees 337 / 503 poin :当前影像可以看到已有点云的337个
Pose refinement report :姿态细化信息
Residuals:672
Parameters:8 //参数
Iterations:8 //迭代次数
time:0.0055149
Initial cost:0.62589
Final cost:0.55798
Termination:covergence
Continued observation:3 //继续观察
Added observations:47 //新增观察点
2.进行姿态估计(Pose Refinement Report),再进行BA优化
Bundle adjustment report :BA优化
Residuals:12142
Parameters:1082 //参数
Iterations:12 //迭代次数
time:0.167065
Initial cost:0.515275
Final cost:0.504027
Termination:covergence
Merged observations:110//合并观察? 整体稀疏点云融合测量点110个
Completed observations:XXX //完成观察
Filtered observation 41 //过滤观察 滤除测量点41个
Changed observation XXX
最后进行三角测量(Retriangulation)新增观测点111个。
上述过程结束后,进行迭代全局的BA优化,优化已有相机的姿态和三维稀疏点云坐标。
6.稠密点云重建
点击“reconstruction”中的“dense reconstruction”,弹出稠密重建窗口,并点击“select”选择生成文件存放的目录,首先新建workspace的保存路径。
然后对窗口前三个选项一次点击。
Undistortion: 影像去畸变
stereo:深度估计
深度估计结束后,可以得到“photometric”和“geometric”下的深度图和法向量图。由之前提及的原理,COLMAP会利用光学一致性(photometric)同时估计视角的深度值和法向量值,并利用几何一致性(geometric)进行深度图优化,因此可以点击“Depth Map”和“Normal Map”,即可得到对应视角的深度图和法向量图。
Fusion:稠密重建
通过meshlab,可以更清晰的看到重建结果。meshlab需要自己安装。
7.匹配矩阵
通过点击“Extras”中的“Match Matrix”可以导出当前场景的匹配矩阵。
从匹配矩阵中看出数据集之间相机运动规律,若相机围绕物体呈圆周采样,匹配矩阵将有条带出现且若途中各个条带的平行关系越紧致,则说明相机的运动控制越严格。
8.深度估计时间
表1 深度图估计运行时间对比(单位:分钟)数据参考文章
7.其中一些内容
1.photometric光度
Depth map 深度图
normal map 法线图
2.geometric几何
Depth map 深度图
normal map 法线图
COLMAP可以用于快速三维重建,代码封装良好。但缺点为深度图估计速度过慢,且在深度图估计精度上略低于深度学习的方法。