matlab - 视觉里程计中的图像校正

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

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

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

最佳答案

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

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

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

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

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

祝你好运

关于matlab - 视觉里程计中的图像校正,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30289237/

相关文章:

matlab - 在 MATLAB 中将平面拟合到 N 维点

c# - 使用 C# 或 MATLAB 合并具有不同 channel (R,G,B) 的两个图像

regex - matlab regexprep 具有多个数字的多个字符串

python - 用 Python 在 OpenCV 中加载视频

Android Camera2 API焦距校准

machine-learning - 有没有适用于 MATLAB 的快速提升工具箱?

c++ - 如何使用 sba(稀疏束调整)

python - 使用 Python OpenCV 从图像中删除边框

opencv - cvReprojectImageTo3D 和 CV_32FC3 的问题

c++ - 通过 OpenCV 的相机标定从一个物体得到两个不同的结果