colmap是用于三维重建的经典软件
三维重建流程
基于MVS的三维重建技术流程包括以下步骤:数据采集,稀疏重建,深度图估计和稠密重建;
稀疏重建
稀疏重建的基本流程如下图所示,最终得到场景中的相机姿态和表示场景结构的稀疏点云;
我们主要利用SfM进行稀疏重建
SfM,(Structure From Motion,从运动中恢复结构),是一种从一组不同视角下拍摄的无序或有序影像中,同时恢复场景三维结构和相机姿态的技术。
增量式SfM选择无序影像进行特征匹配,并进行几何纠正、三角测量恢复稀疏点云结构,通过已有点云重新估计相对姿态,再进行局部和全局的BA优化。之后逐步向已有的结构中增加视角或影像,进行三角测量和姿态估计,再进行BA优化修正结构数据,最后输出全部的相机参数和稀疏三维点云。
colmap GUI使用
输入
工程结构如下图所示:
File > New project,选择数据库文件和图像文件夹
处理
1.特征提取
processing - Feature Extraction
只需要将相机模型选择为“Pinhole”模型即可,其他参数默认可以不变。一般我们采集的影像是携带有EXIF文件的,所以这里,需要选上“Parameters from EXIF”,意思是从EXIF中提取相机内参数。之后点击“Extract”即可进行特征提取.
2.特征匹配
processing -> Feature Matching,选择默认的参数,然后点击“Run”
3. 增量式重建
reconstruction - > start reconstruction
增量式重建是个逐渐增加视角,并进行迭代优化重投影误差的过程。目的是计算不同视图的相机参数、得到场景的稀疏点云和确定不同视图与点云之间的可视关系。整个过程将会自动进行增量式重建,我们可以从旁边的log框内查询当前状态。
结束后,就可以获得目标场景稀疏点云和各个视角的相机姿态
输出
COLMAP 使用二进制文件格式(扩展名为.bin,机器可读、速度快)来存储稀疏模型。此外,COLMAP 提供了将稀疏模型存储为文本文件(扩展名为.txt,人类可读、慢)的选项。
在这两种情况下,信息都被分成三个文件,分别是关于相机、 图像和点的信息。包含这三个文件的任何目录构成一个稀疏模型。
File > Export model 和 File > Export model as text可以分别导出bin和txt文件
可以用File > Import model导入模型
colmap 命令行
特征提取
colmap feature_extractor --database_path p2/database.db --image_path p2/images
特征匹配
colmap exhaustive_matcher --database_path p2/database.db --SiftMatching.max_num_matches 5768
设置max_num_matches,防止超出显存
建稀疏图
mkdir p2/sparse
colmap mapper --database_path p2/database.db --image_path p2/images --output_path p2/sparse
https://zhuanlan.zhihu.com/p/184978050
https://blog.csdn.net/X_kh_2001/article/details/82591978#t9
https://colmap.github.io/install.html