Hi,
I'm trying to calibrate a stereo camera setup using OpenCV's standard calibrateCamera()
and stereoCalibrate()
functions. The cameras are mounted in a smartphone, approximately 35 mm apart from each other and they face the same direction.
The problem is that the stereo reconstruction using the results of the calibration gives huge distortions of the reconstructed scene. I think that this may be caused by wrong extrinsic parameters (relative rotation and translation of the cameras). Especially the translation look suspicious to me. As far as I understand, the length of the translation vector should be comparable to the distance between the cameras. However, the length of the T
vector resulting from my calibration varies between 16.7 and 23.4 mm, depending on which of the following approaches I use:
Checkerboard calibration pattern, square size 19x19 mm, 12x10 corners: a. Independent intrinsic calibration of the cameras with
calibrateCamera()
, then stereo calibration withstereoCalibrate()
using the cameras' matrices and distortions found in the intrinsic calibration as ultimate (CV_CALIB_FIX_INTRINSIC
) b. Independent intrinsic calibration of the cameras withcalibrateCamera()
, then stereo calibration withstereoCalibrate()
using the cameras' matrices and distortions from intrinsic calibration as the initial values for optimization (CV_CALIB_USE_INTRINSIC_GUESS
)Asymmetric circle grid, 9x3 circles, grid size 30.2 x 30.2 mm - the same two options a and b, as in point 1.
One-step calibration using
stereoCalibrate()
only.
Have you got any experience with this problem? The detailed results of the calibration are attached in the PDF here. I also attach the original images I use, should anybody want to check the calibration themselves.