我正在尝试通过 matlab 实现视觉里程计算法。根据 http://en.wikipedia.org/wiki/Visual_odometry 中的步骤 2 .我需要在特征检测、匹配和运动估计之前进行图像校正。我想我需要像 matlab 中的函数 ( here ) 那样去扭曲图像。匹配特征后是否可以使用原来的内参数和外参数进行运动估计?我认为内参是针对失真图像的。
我对 Matlab 的相机校准工具箱中的内容感到困惑。固有矩阵只能将像素变回扭曲的平面。如果我根据 wiki 中的步骤 2 在特征检测之前先进行图像校正。我认为原始的内在矩阵会导致一些错误。
最佳答案
以下是您需要执行的步骤:
- 使用校准估计相机的内在参数 目标。您可以使用 Matlab 相机校准工具箱,或 http://www.vision.caltech.edu/bouguetj/calib_doc/
- 花点时间执行此步骤并确保校准正确 正确的。校准工具箱将为您提供有关性能如何的统计数据 校准是。确保重投影误差(和标准 偏差)小。还要确保收集覆盖相机视野的校准目标的图像,这些图像具有各种姿势
您获得的校准包括 3x3 内在矩阵 (K) 未失真的图像,以及失真系数的矢量。
使用 K 和失真系数使图像“不失真”。
- 取消扭曲所有图像并将它们保存到磁盘。
- 从这一点开始,使用未失真的图像(使用矩阵 K) 执行 VO 或其他任务。
免责声明。您可以在不扭曲图像的情况下进行 VO,但是根据图像失真的程度,使用原始图像可能会影响特征/描述符检测器。在失真和未失真之间进行映射的每次迭代也需要更多工作
祝你好运
关于matlab - 视觉里程计中的图像校正,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30289237/