Paper: Recalibrating the KITTI Dataset Camera Setup for Improved Odometry Accuracy

综述

核心:

  1. 角点采用 直线角点,增加了ransac筛选点。
  2. 求解时初始值附近采用栅格法求解最优值。

摘要

  • 提出了一种用于 KITTI 数据集多相机设置的一次性校准的新方法。在较低的校准重投影误差和较低的视觉里程计误差的意义上,该方法产生更好的校准参数。我们进行了实验,展示了三种不同的里程计算法,即 SOFT2、ORB-SLAM2 和 VISO2,使用建议的校准参数显着提高了里程计精度。此外,我们的里程计 SOFT2 与所提出的校准方法相结合,在官方 KITTI 记分牌上实现了最高准确度,平移误差为 0.53%,旋转误差为 0.0009 度/米,甚至优于基于 3D 激光的方法。

标定的创新点

  • 不是直接检测角点,而是在 RANSAC 过程中检测线段,一旦标定板几何形状恢复并找到相邻边缘,就会使用线交叉点以亚像素精度计算精确的角点位置
  • 执行模板匹配,并且所提出的方法显示出比 [19] 和 OpenCV 中的方法更小的重投影误差。
  • 为了进一步提高里程计的准确性,我们还对 24 个参数中的 4 个进行了网格搜索优化,其中板的配置没有强烈限制优化问题。

内容

默认校准

  • 为提高校准精度,KITTI 是使用 libcbdetect 的多板单图像方法 [19] 校准的。但有缺陷:首先,可以放入单个图像的板的数量是有限的。然后,由于所有 12 块板都位于同一张图像中,它们都离相机适度远,并且在近距离视图中不可能有一块板会施加几个具有高信噪比的约束,因为它会占用图像的很大一部分。其次,所有方块都相对较小,导致相对于方块大小更高的角位置不确定性,并且板方向有偏差,即所有板都向图像中心倾斜。第三,图像的大部分没有被电路板覆盖,这可以通过标准校准程序轻松避免。
  • KITTI 使用广泛使用的径向切线模型来校准镜头畸变。 鉴于此,下一步是找到 2D 角位置,本质上,任何方法只要能检测到所有角点都可以,但需要特别注意角点位置的亚像素细化。 校准参数对拐角位置的变化非常敏感,在优化过程之前获得准确的拐角位置至关重要。
  • 亚像素求解:OpenCV 亚像素角点cornerSubPixel() : 垂直向量乘积为0 这一特性,q 即待求的亚像素, p i p_i pi即q周围的点,属于群众,坐标已知。
    ( p i − q ) {(p_i-q)} (piq)即第一个向量, p i p_i pi处的灰度, G i G_i Gi即第二个向量。有: G i ∗ ( p i − q ) = 0 G_i*(p_i-q)=0 Gi(piq)=0,展开: G i ∗ q = G i ∗ p i {G_i *q = G_i * p_i} Giq=Gipi,最小二乘求解: G i T G i q = G i T G i p i {G_i^T G_i q = G_i^T G_i p_i} GiTGiq=GiTGipi,有 q = ( G i T G i ) − 1 ∗ ( G i T G i ) q = (G_i^TG_i)^{-1}*(G_i^TG_i) q=(GiTGi)1(GiTGi)
  • 然而,在 KITTI 校准图像的情况下,libcbdetect 和 OpenCV 中使用的细化方法并没有达到最佳效果,这背后有几个可能的原因。 首先,由于非漫射闪电,一些板子曝光过度导致白色方块比黑色方块稍大。 拐角的相对边缘并不完全在同一条线上,并且违反了细化解决方案所基于的观察。 其次,所有的板子都离相机相对较远,正方形看起来很小,边长只有 20 甚至 6 个像素。 这解释了我们在实验中获得的 9 × 9 像素的最大细化窗口大小,接近 [19] 中提到的 11 × 11。 这个邻域大小的信噪比似乎是更准确的角定位的限制因素

建议立体相机校准

  • 我们首先描述如何检测角点和细化位置,然后是板匹配和优化。 最后,使用网格搜索对参数子集进行细化,以产生最终值,从而提高三种经过测试的视觉里程计算法的准确性。

角点检测与细化

  • 我们不是直接检测角点,而是类似于 AprilTag 2 [5] 检测针对棋盘正方形边的线段。 一旦恢复标定板的几何形状并找到相邻边缘,精确的角位置将计算为两条线的交点。
  • 整个过程从 Canny 边缘检测器开始。 首先,将图像转换为浮点数,所有后续操作均以浮点数执行,以最大程度地减少数据丢失。 图像用 5 × 5 像素的高斯滤波器平滑,平滑后的图像用 Sobel 滤波器卷积,产生水平 G x 和垂直 G y 方向的图像导数。 由此,可以确定边缘梯度和方向: G = G x 2 + G y 2 {G=\sqrt {G_x^2 +G_y^2}} G=Gx2+Gy2 Θ = a t a n 2 ( G y , G x ) {\Theta = atan2(G_y,G_x)} Θ=atan2(Gy,Gx)
  • 寻找角点的任务变成了寻找末端非常接近的四类不同线段的任务。为了减少异常值的数量,只连接具有相似长度的段,并在创建与相邻段的连接图后重建板。第一个角始终是恰好有两个连接的角:一个向右,一个向下。首先,我们开始向右移动,添加新的角直到我们到达没有正确连接的角。此时,如果存在向下连接,则我们向下移动然后向左移动,遵循蛇形图案,直到到达没有向下连接的结束角。在每一行的末尾,我们将角的数量与前一行进行比较,如果这些数字不匹配,则丢弃当前模式。 在这里插入图片描述
  • 最后,角位置细化如下。 为每个角找到该线的两个方程,一个通过两个水平相邻的线段,另一个通过两个垂直相邻的线段。 对于每条线,使用 RANSAC 程序来抑制异常值,如果到线的距离低于阈值并且点梯度方向在某个角度公差内垂直于线,则接受异常值。 计算出直线方程后,精确的角位置被确定为这两条直线的交点。
    在这里插入图片描述

标定板的匹配和优化

  • 每个相机产生总共 9 个内在参数(fx , fy , cu , cv , k 1 , k 2 , k 3 , k 4 , k 5 ),即焦距,主点和镜头畸变参数,以及每个相机的 6 个外部参数,
  • 我们使用接近默认 KITTI 解决方案的某个值初始化焦距,同时将具有图像中心和失真参数的主点设置为零。通过平均棋盘到图像平面的单应性[24]来初始化外部参数。最后,使用 Levenberg-Marquard 算法最小化平方重投影误差的总和。

校准参数细化

  • 我们显示了关于焦距 fx和左相机主点坐标cu的重投影误差。我们通过将参数固定为特定值来进行灵敏度分析,然后进行校准优化。参数在初始最小值附近采样,左右各一个像素步长。虽然焦距和主点的变化显着影响测距精度,但校准重投影误差并非如此。
  • 我们得出的结论是,所提供的标定板配置对校准的约束不足以准确估计所有参数。因此,我们决定改变目标函数并搜索焦距和主点,以最小化 KITTI 评估指标中误差的旋转部分。
  • 我们在初始最小值周围采用网格搜索,以便在校准过程中固定探测值。然后,使用获得的校准参数的里程计评估训练序列的旋转误差,并在距初始值 10 个像素的邻域内找到最佳参数。在最小化旋转误差的同时,使用网格搜索仅获得三个参数,即左相机的 f x 和 (c u , c v )。
  • 在下一步中,我们专注于主要取决于估计的立体基线的比例。基线和相机之间的相对角度之间存在很强的相关性。强制基线为不同的值会导致围绕 y 轴的相机俯仰角发生变化,同时保留几乎相同的重投影误差(注意局部相机坐标系是右手坐标系,z 轴指向光轴方向)。在某种程度上,系统无法消除精确解附近的基线和俯仰角之间的歧义,因为不同的三角测量设置会导致类似的重投影误差。因此,很难用里程计评估精确的基线,因为轨迹比例也可能取决于俯仰角。最后,通过网格搜索优化了总共 4 个参数:左相机的 f x 和 (c u , c v ),以及基线。

实验结果

  • 我们证明了获得的校准参数对三种不同视觉里程计的有效性:SOFT2 [20]、ORB-SLAM2 [21] 和 VISO2 [22]。这些算法在本质上也不同:SOFT2 最小化点到线 (2D-2D) 距离并仅对除比例外的所有运动参数使用左相机,ORB-SLAM2 映射 3D 点并通过局部束调整来细化它们的位置,而 VISO2 是纯帧到帧里程计,可最大限度地减少从单个视差帧投影的 3D 点的重投影误差。由于我们的方法需要里程计来细化校准参数的子集,我们注意到这可能会导致对该特定方法的偏见。尽管如此,我们的新校准参数改进了三种算法中的每一种。在本实验中,我们使用 ORB-SLAM2 进行参数细化。表 II 显示了从 fx = 975 像素、(cu , cv ) = (700, 247) 像素和基线 = 0.539 m 为 SOFT2、ORB-SLAM2 和 VISO2 播种的参数的结果,对于每个训练序列以及整体平均结果。为了强调纯里程计漂移,关闭了 ORB-SLAM2 的闭环功能。该实验是在原始 KITTI 序列上进行的,其中图像在用于里程计之前用新参数进行了预校正。每个里程计在大多数轨迹上都显示出显着改善,平均平移误差改善了 30%,旋转误差改善了 50%。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值