相机camera:具有分辨率、内参、畸变参数、zoom-factor和lens(不知道这两个怎么翻译)等属性的物理模型;
图片image:JEPG或PNG这样的bitmap文件;
我下载的是第一个数据集,一共100张图片
colmap gui // 打开gui界面
File > New project // 创建新工程,目标文件夹结构应该如下文所示
需要指定:
①新建的database存放路径(/home/&&&/code_data/colmap_test/database.db);
②原图片路径(/home/&&&/code_data/colmap_test/images);
这里一个比较坑的地方是点New但是没办法指定存放路径,需要你自己选定一个文件夹然后加上"/database.db",点Save后会自动在目标位置生成一个database.db。
colmap假定所有的图片都在一个给定的文件夹中,其支持多种图片格式并会自动递归地寻找文件夹中的所有图片。一些稠密重建、去畸变等后处理操作需要留出对应的文件夹。涉及到的所有数据存在colmap中的一个SQLite database file中。
官方给的文件夹格式:
/path/to/project/...
+── images
│ +── image1.jpg
│ +── image2.jpg
│ +── ...
│ +── imageN.jpg
+── database.db
+── project.ini
图片存放路径:/path/to/project/images(为了高效都存在一块)
数据存储文件:/path/to/project/database.db
工程配置文件:/path/to/project/project.ini
特征提取和匹配作为重建的第一步,这样只需读取图片一次。
Processing > Extract features // 打开特征提取配置
// 确定相机配置
Extract // 提取特征
①确定相机内参,包括相机模型+从EXIF提取相机参数或自己制定+所有图片间是否共享内参等,相机参数是重建过程中需要考虑的重要一部分;
②可以直接从外部text files导入feature,暂时用不到不讲了;
提取过程如下,100张图片用了1.2mins。
在图像之间寻找匹配。
Processing > Match features // 打开特征匹配配置
// 选择匹配模式
Run // 开始匹配
匹配过程如下,选择Exhaustive Matching没有GPU加速,100张图片用了57分钟(真的慢)。
一共有六种匹配模式:
①Exhaustive Matching:两两图像之间进行一一匹配,在图像数目较小的情况下可以使用,会取得最好的效果。block size确定每次从磁盘读取多少图片,从源代码看就是将匹配任务按照block size分批次了;
②Sequential Matching:对于有序的图片集合,该方法可以根据序号间的关系寻找匹配关系,有基于词典树的回环检测环节,(类似SLAM)。图片名必须按照序号命名好;
Vocabulary Tree Matching:按照词典树的匹配情况寻找匹配关系,适合大数据集;
④Spatial Matching:空间上最接近的图片构成匹配,适合有准确空间位置的数据集;
⑤Transitive Matching:利用已有的匹配关系建立新的匹配关系。如:A匹配B,B匹配C,则A匹配C;
⑥Custom Matching:手动确认匹配关系
Reconstruction > Start
重建步骤:
①寻找初始匹配对;
②不断注册新图片并三角化新的点
如果重建失败尝试寻找更多匹配+自己设定初始匹配
在sparse reconstruction的基础上,通过深度和法向量恢复出dense reconstruction
Reconstruction > Start
Undistortion
Stereo
Fusion
Poisson
Delaunay
Dense Reconstruction需要GPU,这个电脑没装,所以暂时到此为止了。