论文
论文代码
资料
cvpr2017 COLMAP
文章目录
- 2. 本文贡献
- 2.1 Scene Graph Augmentation 场景图增强
- 2.2 Next Best View Selection下一个最佳视图选择
- 2.3 鲁棒高效的三角化
- 2.4 BA(Bundle Adjustment)
- 2.4.1 参数化求解方法
- 2.4.2 过滤
- 2.4.3 再三角化(RT)
- 2.4.4 迭代精化
- 2.5 冗余视图处理
- 3. summary
分为Correspondence Search和Incremental Reconstruction两个部分。
Correspondence Search流程如下:
对所有输入图像进行特征提取,一般使用SIFT算法。
使用提取的特征点描述子进行匹配。可以通过暴力方法穷举所有可能的匹配对,但在大场景情况下效率不高。
对匹配完成的图像对中的匹配点对进行精化,利用对极几何关系进行处理,去除误匹配点对。
Incremental Reconstruction流程如下:
初始化阶段,选择一对初始的匹配图像对。这个选择非常重要,对后面的重建过程影响很大。通常需要精心筛选。
利用对极几何关系分解获得初始图像对的位姿,并通过三角化生成三维点。
逐步将新的图像加入重建系统。对于每张新图像,通过PnP估计其位姿,再进行三角化生成新的三维点。
随后进行BA优化,校正位姿和三维点的误差。在BA过程中,会滤除外点,提高重建质量。
重复步骤3和4,直至所有图像都被加入重建系统。
总结:Correspondence Search流程主要是对图像进行特征提取和匹配的过程,用于获取匹配点对。Incremental Reconstruction流程则是根据匹配点对进行逐步的位姿估计、三维点生成和优化,实现增量式的重建过程。
2. 本文贡献
现有的SfM系统在重建的完整性和鲁棒性(completeness and robustness)上还是存在缺陷。本文对此进行了改进,主要贡献包括:
- 一种提升初始化和三角化鲁棒性的几何验证方法
- 一种最大化鲁棒性和准确性的下一最佳匹配图像选择策略
- 一种可以获得更为完整的场景结构且计算代价更小的鲁棒三角化方法
- 一种迭代BA、重三角化、外点滤除策略,显著提升重建完整性和精度,减轻漂移影响
- 一种用于挖掘密集图像集间的冗余视图的高效BA参数化方法
2.1 Scene Graph Augmentation 场景图增强
-
估计F矩阵:通过计算特征点的对极几何关系,得到图像对的基础矩阵F。如果内点数大于预设阈值NF,认为该图像对通过了几何验证。
-
估计H矩阵:针对一般场景,通过计算特征点的单应性关系,得到图像对的单应矩阵H,并统计内点数NH。如果NH/NF小于某个预设的阈值εHF,判定为一般场景。
-
估计E矩阵:对于经过相机校准的图像,估计图像对的本质矩阵E,并计算内点数NE。如果NE/NF大于某个预设的阈值εEF,判定为校准正确的情况。
-
判断场景类型:首先满足步骤2和3,称为一般校准场景。然后根据内点数NE和NF的比例判断场景类型。如果NE/NF大于某个预设的阈值εEF,判定为纯旋转(全景)场景;如果NE/NF小于某个预设的阈值εEF,判定为平面场景。
-
检测WTF图像:为了排除带有水印、时间戳、边框等干扰的图像,通过估计图像之间的相似变换并计算边缘内点数NS。如果某对图像的NE/NF或NE/NF超过预设阈值εEF,认为这是一对带有WTF的图像,不将其纳入场景图中。
-
场景图类型:根据场景图中图像对的情况,标记场景图的类型为出现最频繁的情形(一般、全景、平面)。
-
初始图像对选择:在构建场景图时,倾向于选择非全景的、经过相机校准的图像对作为初始图像对。
2.2 Next Best View Selection下一个最佳视图选择
下一最佳视图选择对位姿估计的质量、三角化的完整性与精度都有很大影响。作者提到,一个流行的方法是,找到一张能观察到最多已经三角化过的点的图像。但是,有时该图像的观测条件数并不好。有研究表明,如果匹配点的分布越均匀,那么其重建的结果也会更好。因此,作者提出一种使用多尺度格网来度量匹配点分布状况的方法。
如上图所示,作者将图像划分成不同尺度格网,然后对不同尺度的格网点分布状况进行打分,这样可以同时考虑到点的数量与分布的影响。总的来说,点的数量越多,分布越均匀,则该图像的得分越高。上图中纵向是点分布的差异与得分差异的对比,横向是点数量与得分的对比。分数的计算方式如下所示:
对不同匹配图像进行打分后,选择得分最高的图像作为下一最佳匹配图像。实验表明,使用该策略可以提升重建的鲁棒性和精度。
2.3 鲁棒高效的三角化
2.4.1 参数化求解方法
使用Cauchy核函数作为鲁棒损失函数来应对outliers的影响。依据不同大小的重建问题,使用不同的求解策略。对于数百张图像的情况,使用sparse方法进行求解;对于更多张的图像,使用PCG进行求解。对不同问题,采用不同的相机模型进行求解。
2.4 BA(Bundle Adjustment)
是作者提出的一种优化策略,旨在减少计算代价。该策略包括参数化求解方法、过滤、再三角化和迭代精化等步骤。
2.4.1 参数化求解方法
为了应对异常值(outliers)的影响,作者使用Cauchy核函数作为鲁棒损失函数。根据重建问题的规模,采用不同的求解策略。对于数百张图像的情况,使用sparse方法进行求解;对于更多张图像,使用PCG进行求解。同时,针对不同的问题,采用不同的相机模型进行求解。
2.4.2 过滤
每次进行BA过程时,会将重投影误差较大的三维点进行过滤。在优化过程中,首先自由优化相机焦距和畸变参数,然后进行全局BA。在全局BA后,对视野不正常或畸变参数较大的相机进行剔除,视为错误估计。
2.4.3 再三角化(RT)
为了提高重建场景的完整性,对于之前被过滤掉但偏差不大的三维点,进行再三角化。此过程不提高三角化的阈值,只对误差低于过滤阈值的观测进行再三角化。
2.4.4 迭代精化
由于漂移或错误的位姿估计,通常会有许多三维点被错误地过滤掉。为了提高结果精度,采用两步BA的迭代精化方法。因此,进行迭代的BA、RT和过滤步骤,直到被过滤掉的观测点和再三角化点减少。在大多数场景下,第二轮迭代后会显著提升结果的精度。
2.5 冗余视图处理
BA是SfM性能的瓶颈。因此,作者针对大重叠度场景提出一种高效的相机分组优化策略,代替了昂贵的图割操作。与将很多相机聚类到一个子图上相比,作者将场景分割成很多小的、高度重叠的相机组,然后将每组相机使用一个(自由)相机来代替(这样可以减少BA优化过程中自由参数的数量)。
通过图像之间的共视程度来决定哪幅图像归于同一组。具体的,对于一个具有n个三维点的场景,使用一个{0,1}向量来表示每张图像的观测,若观测到该三维点,则为1,否则为0。然后通过交集/并集来获得共视程度,如下式所示: