Update: OpenCV 2.4.10 adds a new fisheye namespace that might work better than the code below.
I’m using 150 degree wide-angle lenses for a stereo setup, and they are difficult to calibrate with OpenCV. A few must-have points:
- When searching for chessboard matches, you must not use CALIB_CB_FAST_CHECK.
- You need to calibrate each camera individually and then attempt the stereo calibration using the CV_CALIB_USE_INTRINSIC_GUESS flag.
- You must use CV_CALIB_RATIONAL_MODEL.
- I use about 30 chessboard images for each individual camera, making sure to cover the entire image with points and about 10 images for stereo calibration. I’ve found that more images on the stereo calibration does not help and actually may make it worse.
- Flags I use for calibration: CV_CALIB_RATIONAL_MODEL, CV_CALIB_USE_INTRINSIC_GUESS, CV_CALIB_FIX_PRINCIPAL_POINT.