I have a wide angle camera, the specifications say it is around 150°, but to me seems more ~100° horizontal and ~80° vertical. Anyway, once calibrated these fields of view are reduced by ~20 degrees each.
This is true for both the values returned by cv::calibrationMatrixValues function and the rectified frames, in which relatively big external portions are cropped.
Is this behavior normal? If it is, can I avoid this problem using the newer Fisheye camera model? With Fisheye is it possible to know the measured FOVs? I cannot find something like fisheye::calibrationMatrixValues.
答案 0 :(得分:0)
cv :: getOptimalNewCameraMatrix可以完成这项工作。
答案 1 :(得分:0)
对于您的情况,我认为最好的解决方案是使用Open CV 3.4.X中的cv :: fisheye模块。 (C ++,MS Windows)。未失真的图像会比初始图像大得多,但会具有一定的大小。
在我的情况下,我使用cv :: fisheye :: calibrate制作了K和D(相机矩阵和径向失真系数矩阵)。然后,我使用cv :: fisheye :: initUndistortRectifyMap生成X和Y坐标的地图。最后,我使用cv :: remap通过initUndistortRectifyMap中的地图使鱼眼镜头的图像不失真。