I a got stereo pair of cameras: camera 1 and camera2. Camera 2 is to the right of camera 1. I want to calibrate them to get the relativ position from cam1 to cam2 using the stereoCalibrate() function. Therefore I use a checkerboard (7,11) with a side length of 5 mm. The corners are find by the method findChessboardCornersSB() (OpenCV: Camera Calibration and 3D Reconstruction) for images taken by cam1 and cam2. I am using the same pictures to calibrate cam1 and cam2 separately using the function calibrateCamera() to get the intrinsic camera parameters + distortion coefficients.
After I calibrated the cameras, I calibrate the stereo pair. I dont missmatch images taken by cam1 with images taken by cam2. The result of the calibration is the following:
The question is, why is T[0] negativ? It doesnt reflect the real world. Cam2 is to the right of cam1, so it should be at least positiv. +6.5cm could be the case.
But from the description of the function stereoCalibrate() (OpenCV: Camera Calibration and 3D Reconstruction) it is written:
“R: […] In more technical terms, the tuple of R and T performs a change of basis from the first camera’s coordinate system to the second camera’s coordinate system […]” and my assumption is that cam1 (the left one) is the first camera and cam2 is the second camera (the right one). Im passing the found corners in image1 as imagePoints1 and the found corners in image2 as imagePoints2, so no missmatch.
this is stereo calibration. the translation is in 3D space, not in screen space. units of the translation vector are whatever units the calibration target is specified in.
the translation from the right frame to the left frame should add.