视觉里程计中的图像校正

Image correction in visual odometry

我正在尝试通过 matlab 实现视觉里程计算法。根据 matlab 中 http://en.wikipedia.org/wiki/Visual_odometry. I need to do image correction before feature detection, matching and motion estimation. I think I need to undistort image like the function (here) 中的第 2 步。匹配特征后是否可以使用原来的内参数和外参数进行运动估计?我认为内参数是针对失真图像的。

我对 Matlab 的相机校准工具箱中的内容感到困惑。固有矩阵只能将像素变回扭曲的平面。如果我根据 wiki 中的步骤 2 在特征检测之前先进行图像校正。我认为原始的内在矩阵会导致一些错误。

首先,matlab 已经存在几个视觉里程计库。其中之一是 http://www.cvlibs.net/software/libviso/

但是,如果您打算自己实现它并正在寻找一种方法来校正您的图像,您可以使用相机校准 matlab 工具箱获取 intrinsic/extrinsic 相机参数:http://www.vision.caltech.edu/bouguetj/calib_doc/

以下是您需要执行的步骤:

  1. 使用标定估计相机的内在参数 目标。您可以使用 Matlab 相机校准工具箱,或 http://www.vision.caltech.edu/bouguetj/calib_doc/
  2. 花点时间执行此步骤并确保校准正确 正确的。校准工具箱将为您提供有关性能如何的统计数据 校准是。确保重投影误差(和标准 偏差)小。还要确保收集覆盖相机视野的校准目标的图像,这些图像具有各种姿势
  3. 您获得的校准包括 3x3 内在矩阵 (K) 未失真的图像,以及失真系数的向量。

    使用 K 和畸变系数来 "undistort" 图像。

  4. 取消扭曲所有图像并将它们保存到磁盘。
  5. 从这一点开始,使用未失真的图像(与矩阵 K) 执行VO或其他任务。

免责声明。您可以在不失真图像的情况下进行 VO,但根据使用原始图像的图像失真程度,可能会影响 feature/descriptor 检测器。每次迭代在失真和未失真之间进行映射也需要更多工作

祝你好运

要使用 undistortImage 功能,您需要使用计算机视觉系统工具箱中的 Camera Calibrator AppestimateCameraParameters 功能校准相机。