视觉里程计中的图像校正

3
我正在尝试通过matlab实现视觉里程计算法。根据http://en.wikipedia.org/wiki/Visual_odometry中的第2步,我需要在特征检测、匹配和运动估计之前进行图像校正。我认为我需要像matlab中的函数(here)一样对图像进行去畸变处理。在匹配特征后,我能否使用原始的内部和外部参数进行运动估计?我认为内部参数是针对畸变图像的。
我感到困惑的是,在Matlab的相机标定工具箱中,内部矩阵只能将像素转回畸变平面。如果我根据维基百科的第2步先进行图像校正再进行特征检测,我认为原始的内部矩阵会引起一些误差。
3个回答

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

    使用K和畸变系数对图像进行“去畸变”处理。

  4. 将所有图像进行去畸变处理并保存到磁盘中。
  5. 从此时开始,使用经过去畸变处理的图像(使用矩阵K)执行VO或其他任务。
免责声明。您可以在不对图像进行消畸变的情况下执行VO,但是根据图像失真的程度,使用原始图像可能会影响特征/描述符检测器。此外,在扭曲和未扭曲之间进行映射每次迭代需要更多工作量。
祝好运。

0

是的,我知道libviso2。它使用的图像似乎没有畸变。我认为它首先对图像进行了校正。但是我不知道如果我先进行图像校正,内部和外部矩阵是否仍然有效?因为校准工具箱说内部矩阵只能将点转回到畸变平面。 - 游尚霖
很有可能他们确实使用未经畸变的图像。正如在这些示例中所示,你可以使用工具箱在校准相机后对图像进行去畸变处理。 - Andrzej Pronobis
如果我先对图像进行去畸变处理,我是否仍然可以使用相同的内参和外参矩阵?还是需要对每个图像进行去畸变处理并估计新的内参和外参矩阵? - 游尚霖

0
要使用 undistortImage 函数,您需要使用 相机校准应用程序 或计算机视觉系统工具箱中的 estimateCameraParameters 函数来校准您的相机。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接