Colmap-PCD:一种用于图像到点云配准的开源工具

文章:Colmap-PCD: An Open-source Tool for Fine Image-to-point cloud Registration

作者:Chunge Bai , Ruijie Fu and Xiang Gao

编辑:点云PCL

代码:https://github.com/XiaoBaiiiiii/colmap-pcd.git

公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。侵权或转载联系微信cloudpoint9527。

摘要

先进的单目相机重建技术主要依赖于运动恢复结构(Structure from Motion,SfM)方案。然而这些方法通常产生的重建结果缺乏关键的尺度信息,随着时间的推移,图像的累积导致不可避免的漂移问题。相比之下,基于激光雷达扫描帧的地图方法在大规模城市场景重建中很受欢迎,因为它们具有精确的距离测量能力,这在基于视觉的方法中基本上是缺失的。研究人员尝试利用同时进行的激光雷达和相机测量来追求在地图结果中实现精确的尺度和颜色细节。然而这些结果受外参校准和时间同步精度的影响。本文提出了一种新颖且经济高效的重建方案,利用预先建立的激光雷达地图作为固定约束,有效解决了单目相机重建中存在的尺度问题。据我们所知,我们的方法是第一个将图像配准到点云地图上而无需同步捕获相机和激光雷达数据的方法,使我们能够在各种感兴趣的区域重建更多细节。为了促进这一领域的进一步研究,我们发布了Colmap-PCD,这是一个利用Colmap算法的开源工具,可以实现对图像到点云地图的精确细致的配准。

主要贡献

实现图像与其重建对象之间的精确2D-3D对应关系对于准确的图像定位至关重要,一种有前景的方法涉及在图像和激光雷达平面之间建立对应关系,激光雷达平面可以被视为来自激光雷达点云地图的重建对象的替代3D特征。为此,我们选择使用Colmap,这是一个基于经典的运动恢复结构(Structure-from-Motion,SfM)方案的稳健软件工具。在此基础上通过将预先建立的激光雷达地图作为固定约束纳入因子图优化过程中,来增强管线。这个包含有助于确保图像的重建尺度与激光雷达地图的尺度密切匹配,从而增强了注册过程的准确性。我们的方法使用自行收集的数据集进行评估,结果清晰地展示了其在标准Colmap方法上的卓越性能。更具体地说,我们的方法产生了一个带有准确尺度的重建结果,超出了原始Colmap的能力范围。总体而言,本文提出了三个重要贡献:

1)引入Colmap-PCD,一种图像到点云配准方案,通过使用激光雷达地图优化图像定位。它产生具有准确尺度信息的精确定位和重建结果,无需同步激光雷达和相机数据收集。

2)通过对自行收集的数据集进行全面测试,展示了Colmap-PCD的有效性。

3)向研究社区发布了一个开源工具和数据集,用户界面如图1所示。

图1:Colmap-PCD的地图用户界面,输入数据包括点云和图像。

内容概述

Colmap简要概述

对应点搜索:对应搜索过程包括特征提取和特征匹配,通过识别跨越各种输入图像的匹配2D特征点来确定潜在的场景重叠。为增强图像匹配的可靠性,Colmap通过在不同的转换条件下计算内点数来选择最可信的变换模型。

初始化:选择一个适当的图像对进行初始重建,确保它与多个图像共享足够的共同观测。然后,利用三角测量生成初始的3D重建点集。

选择并配准下一张图像:选择一张与当前模型具有更多共同可见点并具有更均匀分布模式的图像作为下一张要配准的图像。通过PnP将图像配准到模型。

三角化测量:对新图像执行三角测量,将新场景集成到现有的3D结构中。由于噪声,Colmap将单个3D点的特征轨迹视为一组测量,可以进行配对。使用直接线性变换(DLT)方法计算配对测量的3D点,通过RANSAC进行递归采样和调整采样区域,获得可靠的三角测量结果。

增量捆集调整:在每次三角测量后,进行局部捆集调整(BA)以调整新配准图像和其他共享更多共同观测的已配准图像的参数和3D点位置。

全局捆集调整:执行全局捆集调整以计算所有已配准图像的最佳3D模型和参数。为节省时间,与先前的全局优化相比,当模型的体积增长到一定程度时将进行全局捆集调整(BA)。

Colmap-PCD算法

Colmap-PCD通过将从视觉图像中重建的3D点与从LiDAR点云地图中提取的平面匹配,旨在同时最小化重投影误差和3D点与关联LiDAR平面之间的距离。整个流程如图2所示。

图2:Colmap-PCD的流程,蓝色框中的过程属于原始Colmap,红色框中的过程是与LiDAR相关的过程

投影

  • 将LiDAR点云投影到已知的相机成像平面In。
  • 划分LiDAR点云为固定大小的体素,通过四条线形成四边形金字塔。
  • 通过遍历体素中的LiDAR点,将其从世界坐标系转换到相机坐标系,并投影到成像平面。

图3:将LiDAR点投影到相机成像平面的四棱锥中,四棱锥的顶点代表相机中心。

点到平面关联

  • 将3D点与LiDAR点关联,使其尽可能与所属的LiDAR平面匹配。
  • 使用深度投影和最近邻搜索两种方法进行点对平面关联。
  • 在深度投影中,通过计算角度选择最小的LiDAR点作为相应的LiDAR点。
  • 最近邻搜索方法用于所有点对平面关联过程。

图4:原始图像和深度图像。黄色点表示从图像中提取的2D特征点。在深度图中,颜色越深,距离越近。

初始化

  • 初始化图像需要大致已知的相机位姿。
  • 初始图像和其位姿手动设置,位姿不需要精确。
  • 通过投影获取初始2D特征点的相应LiDAR点,建立初始3D模型。
  • 随着图像数量增加,初始3D模型逐渐收敛到正确状态。

捆集调整

  • 有增量束调整、批量束调整和整体地图束调整三种类型。
  • 在新图像的三角测量后,执行增量BA减轻累积误差。
  • 执行批处理BA以节省时间,构建包含相机位姿和3D点的3D模型。
  • 整体地图BA用于进一步优化整个模型,将2D特征、图像位姿、3D点和LiDAR点添加到因子图中进行优化。

图5:用于捆集调整的因子图

基于已知位姿的增量重建

如果通过一些传感器(如GPS)的测量已经知道了大致相机位姿,可以使用已知位姿开始增量重建。

实验

验证了Colmap-PCD的有效性和尺度准确性。我们在校园收集了三个数据集,如图7所示。每个数据集都有一个预建的LiDAR点云地图、450张图像和相应的相机内参。

图7: 自行采集的点云地图

定位结果

图8显示了Colmap-PCD和原始Colmap的重建结果。左图和中图显示了Colmap-PCD的重建结果。左图包括LiDAR地图和3D重建点,而中图只显示了3D重建点。右图显示了Colmap的重建结果,包括LiDAR地图和3D重建点。红色的金字塔表示相机位姿。显然,重建结果几乎与LiDAR生成的地图完美对齐,表明LiDAR点云地图在图像定位过程中提供了积极的约束。然而,原始Colmap的建图尺度与实际环境显著不同。

图8: Colmap-PCD和Colmap的重建结果

图9显示了从图像反投影到LiDAR点云的结果,显然非常准确。该结果表明Colmap-PCD能够实现对图像定位所需的精度。

图9:彩色点云

LiDAR点对图像定位的影响

第一个实验考察了可以用于改善姿态估计过程的LiDAR平面数量。通过点对平面关联搜索平面。如图10所示,x轴表示解决的图像位姿数量,y轴表示在单次迭代中利用的LiDAR平面计数。紫色线表示通过投影实现LiDAR平面与3D点之间的匹配,黄色线表示通过最近邻搜索和投影成功关联的LiDAR平面的总计数。可以观察到大量LiDAR平面有助于图像定位。

图10:增量捆集调整中使用的平面数量(室内,室外1,室外2)

第二个实验展示了每次局部束调整前后的点对平面距离的趋势。如图11所示,距离在每次迭代后收敛到最小值,表明3D点能够与点云地图中的适当位置很好地对齐。

图11:3D点与相应LiDAR平面之间的距离(室内,室外1,室外2)

重投影误差分析

这个实验展示了重投影误差的变化。如图12所示,紫色线表示平均重投影误差,而黄色区域描绘了重投影误差协方差的分布。

图12: 重投影误差(室内,室外1,室外2)

我们拍摄了靠近LiDAR地图原点的第一张图像,因此初始位置和方向被设置为0。如表I所示,初始图像的最终定位结果表明,随着图像数量的增加,即使提供了相对较大的初始位置误差,初始图像的位姿也能逐渐收敛到正确的结果。

总结

本文介绍了一种方案通过将异步获取的图像与LiDAR点云对准,以获得具有准确比例的定位结果。通过对自行收集的数据集进行实验,该方法在图像累积方面表现出一定的有效性和稳定性。此外该方案允许在重建区域进行灵活的细节级调整,使其适用于协作式大规模场景重建。总的来说,我们的算法为图像定位和大规模场景重建任务做出了贡献,为该领域未来的研究提供了有价值的见解。