1

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.

Shepard
  • 801
  • 3
  • 9
  • 17

2 Answers2

0

cv::getOptimalNewCameraMatrix can do the job.

Shepard
  • 801
  • 3
  • 9
  • 17
0

I think for your case the best solution is to use cv::fisheye module from Open CV 3.4.X. (C++, MS Windows). Undistorted image will be much larger then initial, but it will have some finite size.

In my case I used cv::fisheye::calibrate to make K and D (camera matrix and radial distortion coeffitients matrix). Then I used cv::fisheye::initUndistortRectifyMap to produce maps for X and Y coordinates. And finally I used cv::remap to undistort image from fisheye camera via maps from initUndistortRectifyMap.