视觉里程计、相机参数

Visual Odometry, Camera Parameters

我正在研究视觉里程计并观看了 Cyrill Stachniss 教授的视频记录,这些视频记录可作为 YouTube 2015/16 Playlist about Photogrammetry I & II 获得。

首先,如果我想创建自己的数据集(比如用于 VO 的 KITTI 数据集或牛津校园数据集),我用相机拍摄的图像的属性应该是什么。 它们只是图像吗?或者,它们是否有一些特殊的属性?也就是说,如何使用单目或立体相机创建自己的数据集。

谢谢。

要从图像中获取外在参数和内在参数,您必须从不同的角度获得一组已知形状的图像。这不是你自己完成的小任务,通过常见的 CV 库/解决方案有一个内置的相机校准实用程序(我必须处理 OpenCV 库和 Matlab CV 包,它们通常是相同的)。通常它是用一个黑白棋盘格或其他简单的几何图案。

然后使用已知的相机参数,您可以操纵您自己的数据集。

Matlab camera calibration reference

OpenCV camera calibration tutorials

如果你想用你的数据集对一些视觉里程计算法进行基准测试,你肯定需要相机的内在参数及其姿态。

  • 正如@f4f 回答中所说,内部校准通常是使用您倾斜和旋转的棋盘的一些图像完成的(参见 opencv)。 这将为您提供诸如焦距、光学中心以及失真系数等参数,这些参数可能很重要,具体取决于您的相机。

  • 在每一帧获取相机的姿势(即外部参数)可能比较棘手。通常,地面实况是使用来自其他传感器(跟踪系统、IMU、GPS 等)的信息获得的。你可以看看:TUM RGB-D SLAM Dataset and the corresponding paper。他们解释了他们如何使用动作捕捉系统来获得真实姿势。

  • 记录相机帧的获取时间也很有趣(每帧一个时间戳)。

创建您自己的视觉里程计数据集并非易事。如果你只是想创建一个数据集 "for fun" 或者做一些实验,如果你只有一个相机可用,我会说你可以尝试一些已知效果很好的方法(比如 ORB-SLAM)。这将为您提供很好的相机姿势近似值(您可能需要手动修复未知比例)。