Using CALIB_FIX_PRINCIPLE_POINT flag, but calibration result still see changes in Principle Point

asked 2019-11-18 13:08:33 -0500

Hugheschen gravatar image

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

edit retag flag offensive close merge delete