Using CALIB_FIX_PRINCIPLE_POINT flag, but calibration result still see changes in Principle Point
Hello all,
I am developing my own camera calibration code using Charuco board. Following the idea of fixing the principle point, in order to see how other parameters behave, I found the CALIB_FIX_PRINCIPLE_POINT flag.
In my code, I included 3 flags - CALIB_FIX_ASPECT_RATIO, CALIB_USE_INTRINSIC_GUESS, and CALIB_FIX_PRINCIPLE_POINT. Then I initialized a "guessed" camera matrix as:
cameraMatrix = Mat::eye(3, 3, CV_64F);
cameraMatrix.at< double >(0, 0) = 4000;
cameraMatrix.at< double >(1, 1) = 4000;
cameraMatrix.at< double >(2, 2) = 1;
cameraMatrix.at< double >(0, 2) = 1560;
cameraMatrix.at< double >(1, 2) = 2104;
repError =aruco::calibrateCameraCharuco(allCharucoCorners, allCharucoIds, charucoboard, imgSize,
cameraMatrix, distCoeffs, rvecs, tvecs, calibrationFlags);
I was expecting the calibration result would provide me with a updated camera matrix that contains new estimate of focal length and fixed principle point at (1560, 2104). But result had shown a different principle point coordinates.
Did I do something wrong? Or is this the behavior that I should expect?
Any help would be appreciated!
Hughes