三维重建系列之COLMAP: Structure-from-Motion Revisited
干货第一时间送达
SFM 基本套路回顾
检索匹配
特征匹配:可以是任何一种特异性较强的特征,如SIFT(COLMAP默认),主要为后续的特征匹配服务; 匹配阶段,将输入的图像两两之间进行匹配(可以发现,这一步的时间复杂度非常大),得到潜在的场景重合部分; 几何校验:初始匹配的外点势必很多,此时需要滤出外点。通常情况下会用到基础矩阵(未标定)/本质矩阵(已标定)以及单应矩阵(纯旋转/共面)。图像经过上述三个步骤之后的输出为「scene graph」,即图像是节点,几何校验后的匹配对是边。
增量重建
本算法的创新点
提出了一种多模型几何校验策略:提高了初始化与三角化的鲁棒性; 后续最优帧选择策略:提升位姿结算鲁棒性与精度; 提出鲁棒三角化方法:使得重建的场景结构更加完整; 提出迭代BA,重三角化以及外点滤除策略对重建的完整性与精度都有贡献; 高效BA参数化方法对稠密图像的重建具有帮助;
场景图增强
首先估计基础矩阵,若此时的内点数大于,则认为图像对满足几何校验通过; 然后估计单应矩阵,记内点数为;若,则认为该场景为常规场景( general scene
);对于已经标定的相机,估计本质矩阵,记内点数为; 若,则认为此时相机标定参数是符合要求的; 若此时场景符合标定且为常规场景,通过分解本质矩阵得到相机位姿,然后对点三角化,计算三角化点点平均角度;随后利用该角度判断场景是纯旋转(pure rotation, panoramic)还是平面(planar scenes, planar)。 最后一步是为了应对网络图片存在的问题而设计的,网络图像可能存在的问题有水印(watermarks)/时间戳(timestamps)/镶边(frames), WTFs。此时计算图像对的相似矩阵,记录图像对在图像边缘的内点数;若此时,则认为该场景为WTFs,此时该图像不加入场景图。
后续最优帧选择
鲁棒高效三角化
足够大的三角化角度; 三角化点深度为正,且该点的重投影误差小于阈值;
random sampler
;另外,为了能够保证以置信度为的概率至少选择一对无外点的最小解集,该过程至少重复进行次。BA优化
参数化:LBA中使用柯西核函数应对外点;当优化中有数百个相机时,使用PCG求解器; 滤外点:BA之后,由于相机位姿/地图点发生了变化,此时会有很多不符合要求的观测,删除掉那些重投影误差较大的观测;然后检查几何校验条件是否满足;对于GBA,还要检查相机是否退化; 重三角化(post Re-Triangulation, post RT):由于BA对位姿进行了优化,这使得之前由于不准确/错误位姿导致无法三角化的点有了能够被重新三角化的可能性,所以在BA之后执行一步重三角化(类比于BA之前的三角化); 迭代优化:受到外点的影响,一次BA通常会导致很大一部分点被滤除,然后经过post RT对地图点进行了扩充;作者提到,上述过程需要多做几遍,一般是做完第二遍之后模型的完整性就会得到非常不错的提升。
冗余视角删除
实验
模块测试
系统测试
总结
参考
赞 (0)