ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Camera calibration and fish eye cameras

asked 2014-03-04 20:16:21 -0600

aswin gravatar image

HI all, Can camera_calibration package be used to calibrate fish eye cameras?

edit retag flag offensive close merge delete

4 Answers

Sort by » oldest newest most voted

answered 2014-03-04 21:15:59 -0600

updated 2014-03-04 21:16:39 -0600

The quality of calibration will depend on the type of lens you´re using. For very high FOV lenses, camera calibration will likely fail or give unusable results, as the pinhole camera model that is used behind the scenes via OpenCV does not work with high FOV (> 180 deg, projecting points onto an image plane and all that). See also this answer at stackoverflow. For moderate fish-eye effect, calibration might work, though.

Your best bet is probably using OCamCalib for determining proper calibration (see also comment in the link I posted above). After determining calibration parameters, you should be able to use your own variants of the world2cam and cam2world functions (If possible, you could even provide a ROS package with their implementation, so everybody can use them ;) ).

edit flag offensive delete link more


Thank you. I dont have a fish eye lens with me at the moment. Will try it out when I get one. OCamCalLib looks promising

aswin gravatar image aswin  ( 2014-03-05 17:46:49 -0600 )edit

answered 2018-08-14 14:17:04 -0600

DavidTorresOcana gravatar image


Perhaps too late, but I added this functionality (fisheye calibration and rectification with OpenCV>3) in this fork: image_pipeline

You can calibrate (with a tool) and rectify fisheye cameras.

The results for high FOV (+180deg) are better that those achieved with the current implementation

edit flag offensive delete link more

answered 2014-03-04 20:38:42 -0600

ahendrix gravatar image

Short answer: Probably yes. It should be easy to try, and should only take 15-30 minutes to try once you have a calibration target printed.

Long answer: You can probably use the camera calibration package to compute the appropriate camera intrinsics values for you camera. You may see a lot of cropping if you use the computed intrinsics with the stock image_proc to do rectification.

edit flag offensive delete link more

answered 2014-09-30 13:26:16 -0600

lucasw gravatar image

updated 2016-04-25 15:51:06 -0600

It looks like OpenCV 3.0.0 (and maybe earlier?) has fisheye calibration support:

I've used it a few times and the results are okay, reprojection errors seem to run higher but that maybe goes along with using a fisheye lens.

There aren't any python cv2 function definitions in that section though, but this issue says the python is done. I think some of the camera_calibration quality metrics won't report goodness if the chessboard can't get into every corner of image, so a fisheye camera that has a black border around a circle may not do well.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2014-03-04 20:16:21 -0600

Seen: 11,620 times

Last updated: Apr 25 '16