COLMAP使用笔记

zxl19 2021-12-10

三维重建工具COLMAP使用笔记。

安装

sudo apt install colmap

运行

在命令行中

colmap -h

在可视化界面中

colmap gui

重建步骤

新建项目

  1. File->New Project
  2. 设置Database为存储.db文件的路径;
  3. 设置Images为存储图片的路径;

特征提取

  1. Processing->Feature extraction
  2. Camera model根据相机结构选择,以PINHOLE为例;
  3. 勾选Custom Parameters,输入预先标定的相机内参(中间无空格分隔),PINHOLE相机模型内参包括fx,fy,cx,cy
  4. 如有GPU,勾选use_gpu
  5. 点击Extract

特征匹配

  1. Processing->Feature matching
  2. 选择匹配方法,以Exhaustive为例,经测试相比于Sequential耗时更长,但重建效果更好;
  3. 如有GPU,勾选use_gpu
  4. 点击Run

三维重建

  1. Reconstruction->Reconstruction Options->Bundle->Camera parameters,取消勾选refine_focal_lengthrefine_principal_pointrefine_extra_params
  2. Reconstruction->Start reconstruction

结果保存和查看

结果保存

  1. File->Save project,替换保存project.ini文件;
  2. File->Export model as text,导出重建结果;

结果查看

  1. File->Import model,导入重建结果;

注意事项

  1. 建议在重建前先标定相机内参,在重建过程中设置不优化相机内参,防止重建失败;
  2. 使用ZED 2相机可以获得去畸变后的图片以及对应的相机内参(发布在camera_info话题中,每次开机自标定后内参会有细微不同),此时可直接采用PINHOLE相机模型;
  3. 一般来说采用OpenCV相机模型可以满足要求,模型参数包括fx,fy,cx,cy,k1,k2,p1,p2,在标定时径向畸变和切向畸变选择两参数模型;
  4. Xbbei/super-colmap使用SuperPoint代替COLMAP原来使用的SIFT特征来提取特征点,获得了更加鲁棒的特征点,提高了重建结果的质量,zxl19/super-colmap在其基础上添加了手动回环检测;
  5. 迭代结束时重投影误差一般在0.8个像素左右;

参考

  1. colmap/colmap
  2. COLMAP Documentation
  3. Xbbei/super-colmap
  4. magicleap/SuperPointPretrainedNetwork
  5. rpautrat/SuperPoint