【问题标题】:FishEye lens calibration with OpenCv 3.0使用 OpenCv 3.0 进行 FishEye 镜头校准
【发布时间】:2015-01-03 20:56:27
【问题描述】:

我必须使用鱼眼镜头校准我的相机。

首先,我使用带有 CV_CALIB_RATIONAL_MODEL 标志的 OpenCv 2.4 来获得更好的结果,但这还不够。 之后,我看到OpenCv 3.0有鱼眼校准功能。

我计算我的 objectPoints 并使用 findChessboardCorners() 获取我的 imagePoints,它们似乎是正确的。

我的问题是使用 fisheye::calibrate。 我返回的值(例如重投影误差、内在矩阵和失真系数)是错误的。它们是 -nan 值。

有人知道我做错了什么吗?

谢谢

【问题讨论】:

  • 请出示代码。
  • 这里也一样。这方面有什么进展吗?

标签: c++ opencv


【解决方案1】:

对于新的 OpenCV 3.0 鱼眼功能,我发现除非指定了 cv::fisheye::CALIB_RECOMPUTE_EXTRINSIC 标志(例如 38 像素重投影错误),否则我没有获得可用的内在校准。另外,我指定了cv::fisheye::CALIB_FIX_SKEW。当然,您应该尽可能多地指定cv::fisheye::CALIB_FIX_Kx 标志。

对于我的镜头,这是一个非常简单的微型镜头,但径向畸变很大,正常的 OpenCV 校正功能无法产生准确的校正。使用上述标志并修复K2=K3=K4=0,我能够获得良好的结果。

【讨论】:

  • 可以看到你的代码吗?我找不到鱼眼相机校准教程。
  • @artoon:几乎没有任何代码可以展示。这只是对cv::fisheye::calibrate 的单行函数调用。我发现参数很明显,因为它们与常规的 cv::calibrateCamera 函数几乎相同,只是有一组不同的标志。它几乎是一个替代品。 (注意我使用默认参数作为终止标准参数)。如果您也不熟悉cv::calibrateCamera 函数,我建议您阅读其中的一些 OpenCV 相机校准教程/示例。
  • 你能解释一下固定 K 参数是如何影响校准的吗?我对鱼眼立体的整改太差了..
猜你喜欢
  • 2023-03-15
  • 2013-12-05
  • 1970-01-01
  • 2012-10-12
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
相关资源
最近更新 更多