OpenCV 的 Pinhole 校准模型降低了 FOV,我应该使用 Fisheye 吗?

OpenCV's Pinhole calibration model reduces FOV, should i use Fisheye?

我有一个广角相机,规格上说它大约是 150°,但对我来说似乎水平大约 100°,垂直大约 80°。无论如何,一旦校准,这些视野就会分别减少约 20 度。

对于cv::calibrationMatrixValues函数返回的值和校正帧都是如此,其中相对较大的外部部分被裁剪。

这种行为正常吗?如果是,我可以使用较新的鱼眼相机型号来避免这个问题吗?使用 Fisheye 是否可以知道测量的 FOV?我找不到类似 fisheye::calibrationMatrixValues.

的内容

cv::getOptimalNewCameraMatrix 可以完成这项工作。

我认为对于您的情况,最好的解决方案是使用 Open CV 3.4.X 中的 cv::fisheye 模块。 (C++,MS Windows)。未失真的图像将比初始图像大得多,但尺寸有限。

在我的例子中,我使用 cv::fisheye::calibrate 来制作 K 和 D(相机矩阵和径向畸变系数矩阵)。然后我使用 cv::fisheye::initUndistortRectifyMap 生成 X 和 Y 坐标的地图。最后,我使用 cv::remap 通过 initUndistortRectifyMap 中的贴图消除鱼眼相机的图像失真。