【问题标题】:Intrinsic Camera Matrix after image rectification图像校正后的固有相机矩阵
【发布时间】:2020-11-10 15:00:36
【问题描述】:

我有一个鱼眼相机,我已经使用 OpenCV 提供的校准功能正确校准了它。因此,我得到了一个 3x3 Intrinsic Camera Matrix K 和带有失真参数的向量。

使用最后 2 个,我可以使用函数 estimateNewCameraMatrixForUndistortRectifyinitUndistortRectifyMap 校正输入图像,以获得 2 个转换映射,我稍后将其用作函数 remap 的输入。作为输出,我得到了一个未失真的图像,其中保持了平行线。

我的问题基本上是……

  • 我可以继续使用从校准中得到的 K 内在矩阵和未失真的图像吗?
  • 由于不失真,固有矩阵 K 是否发生了某种变化?如果这是真的,那么我该如何计算新的 K?

提前致谢。

【问题讨论】:

  • 如果你同时计算内在函数和失真系数,你可以保持 K 不变。如果您独立执行这两个步骤,您应该使用失真图像创建新的内在函数(并在校准期间修复失真系数)。如果您想更改内在函数,例如为了获得更大的图像(有时不失真裁剪掉图像部分),您可以在 initUndistortRectifyMap 期间指定新的内在函数,但是您喜欢。
  • @Micka 我使用文件 /opencv/samples/cpp/tutorial_code/calib3d/camera_calibration.cpp 进行了校准。正如你指出的那样,我同时得到了内在和扭曲。可以将来自estimateNewCameraMatrixForUndistortRectify 的新内在矩阵(按照您的建议计算以获得更大的图像)用于单应性计算吗?还是只对 initUndistortRectifyMap 操作有效?
  • 它应该对重新映射(未失真)的图像有效

标签: opencv computer-vision camera-calibration


【解决方案1】:

正如@micka 在 cmets 中指出的那样,在校准相机并消除图像失真后,我可以继续使用estimateNewCameraMatrixForUndistortRectify 输出的新相机矩阵 K。这回答了我之前的 2 个问题。

【讨论】:

  • 无论您将newCameraMatrix 参数设置为initUndistortRectifyMap,都将是未失真图像的K。如果将此参数留空,则主点可能与您想要的不同。
猜你喜欢
  • 2020-01-25
  • 1970-01-01
  • 2012-04-28
  • 2015-07-06
  • 2013-10-07
  • 2011-05-13
  • 1970-01-01
  • 2015-03-16
  • 2014-07-30
相关资源
最近更新 更多