[论文]Colmap-PCD: An Open-source Tool for Fine Image-to-point cloud Registration
- 摘要
- SFM方法计算存在尺度问题,以及累积误差的问题
- 激光建图是可以对SFM进行有效的互补,但是激光与图像的重建需要对图像和激光进行标定,以及时间同步。
- 本方法可以通过使用已知的激光构建的地图作为约束,解决单目视觉重建中存在的尺度等问题。
- 方法

2.1. 整个流程还是跟原来的SFM的流程基本一致,只是在这个过程中添加了激光点云的约束。如上图红色部分所示。
2.2. 如下图所示,将激光点云划分到锥形金字塔的体素网格内,并从世界坐标系转换到相机坐标系投影到相机平面,如果这个激光点恰好落在了图像2d的特征点上,那么会被看作是这个特征点的候选关联雷达点。候选的原因是,会存在多个雷达点恰好投影到同一个图像像素位置上,最后选择与图像点的距离最近的那个雷达点作为特征点的对应点。

2.3. 点和平面的关联意味着找到一个SFM方法三角化的3D点与一个雷达点相关联。这个3D点应该与雷达点越近越好。关联一个3D点与一个雷达的平面有两种方法,深度投影方以及最近邻搜索法。其中深度投影法主要用在流程图中第一步的点到平面的关联中,方法如下所示:
- 假设3D点以及对应的2D特征点和tracks是已知的,那么将激光雷达点云根据上述的第二个步骤的方法投影到图像的平面,其中因为3D点存在多个2D点,因此会有多个激光点与此3D点相关联,对于这些激光雷达点,计算连接激光雷达点和投影二维特征点的直线与激光雷达平面法向量之间的角度,最后选择角度最小的激光点作为该3D点与雷达点的关联。
- 最近邻搜索方法:给定一个3D点Xk,使用kd树来搜索与Xk具有最短欧几里德距离的LiDAR点。随着Xk优化次数的增加,搜索距离呈线性减小。相应激光雷达点所在的平面被视为Xk的相应激光雷达平面。
2.4. 初始化,初始的图像需要已知相机的pose才能去初始化重建流程,也就是需要pose先三角化得到3D点。其中初始化的图像的pose可以通过在colmap_PCD的界面进行设置得到,此外如果存在GPS的信息,也可以通过GPS的先验作为初始值。其中初始值不需要是很准确的,因为随着优化处理,pose会慢慢收敛到准确的结果。
2.5. BA
-
误差计算
1. 传统的3D点投影到图像平面,计算重投影误差。
2. 因为计算得到了3D点与激光点的对应关系,因此可以将激光点作为3D点的约束,计算3D点与激光平面法向量与激光点到平面法向量的距离作为损失。 -
BA方法
1. 增量式BA,增量式BA主要在拥有相同的特征的图像之间进行计算。因为新注册的图像只会对周围匹配的图像有影响。对于一个新注册的图像来说,它的状态是否会被调整依赖它的2D特征的tracks的数量,如果达到一定的阈值,那么设为不调整,否则进行优化调整。
2. Batch BA方法,在同一个区域的pose的图像是存在相关性的,如下图所示,以图像In为中心,固定半径为圆,图像在圆内就被添加去BA优化,此外蓝色的3D点不会被圆内的图像所观测到,因此设置为常量不去优化。紫色的3D点以及黄色的3D点会被圈内的图像观测到,因此会被添加到优化中。

-
实验
3.1. 如下图所示,左边两列是此论文方法的效果,最右侧一列是colmap的效果,存在明显的尺度问题。

3.2. 重投影误差分析,如下图所示,y轴是像素误差,x轴是图像的数量,可见随着图像数量的增加,系统能够保持稳定性。

- 总结
4.1. 论文介绍了一种全新的计算图像pose的方法,利用了激光雷达的信息可以有效解决单目视觉重建的尺度问题,但是论文并没有详细介绍,是否可以解决大规模视觉重建的累积误差的问题,以及实验走一段很长的轨迹,累积误差是多少。
4.2. 总的来说论文有还是有可取之处,例如计算3D点与激光平面的距离添加到误差计算中,去作为3D点的约束优化pose是一个不错的思路。
