【问题标题】:Image correction in visual odometry视觉里程计中的图像校正
【发布时间】:2015-07-29 03:11:57
【问题描述】:

我正在尝试通过 matlab 实现视觉里程计算法。根据http://en.wikipedia.org/wiki/Visual_odometry 中的步骤 2。我需要在特征检测、匹配和运动估计之前进行图像校正。我想我需要像 matlab 中的函数 (here) 那样不扭曲图像。匹配特征后可以使用原始的内参和外参进行运动估计吗?我认为内在参数适用于失真图像。

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

【问题讨论】:

    标签: matlab computer-vision camera-calibration matlab-cvst


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

        使用 K 和失真系数来“不失真”图像。

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

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

      祝你好运

      【讨论】:

        【解决方案3】:

        首先,有几个用于 matlab 的视觉里程计库。其中之一是http://www.cvlibs.net/software/libviso/

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

        【讨论】:

        • 是的,我知道 libviso2。它使用的图像似乎没有失真。我认为它首先没有扭曲图像。但我不知道我是否先进行图像校正。内在和外在矩阵仍然有效吗?因为标定工具箱说,内在矩阵只能将点转回扭曲平面。
        • 他们很可能确实使用了未失真的图像。如示例vision.caltech.edu/bouguetj/calib_doc/htmls/example.html 所示,您可以在校准相机后使用工具箱来消除图像失真。
        • 如果我先不扭曲我的图像。我还能使用相同的内在和外在矩阵吗?还是对每张图像进行不失真并估计新的内在和外在矩阵?
        猜你喜欢
        • 1970-01-01
        • 2015-01-30
        • 2020-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-15
        相关资源
        最近更新 更多