本文梳理下笔者对Colmap
的各个算法模块的理解,不涉及具体细节。如有错误,欢迎评论指出。
介绍
Colmap
算法的输入为一组图像,输出为相机姿态及稀疏的点云。如图1所示,算法主要分成对应点搜索和增量重建两大模块。
图1.Colmap算法的整体框架
一.对应点搜索
输入为一组图片,输出为场景图(
scene graph
)。
1. 特征提取
在图像上提取sift特征,包含特征点检测和特征点描述。
2. 特征匹配
使用提取的特征点描述子进行匹配,有暴力匹配、顺序匹配、空间匹配、传递性匹配(比如a-b是一对图像,b-c是一对图形,那么a-c也是一对图像)、自定义匹配等,得到一组包含重叠场景的潜在图像对及它们之间的点对应关系。注:这里会构建对应点的轨迹(tracks
),即场景中同一个点在多张图像之间的对应关系。
图2.track的含义
3. 几何验证
利用几何一致性过滤错误匹配,一种是通过估计单应性变换和对极几何(基础矩阵+本质矩