I performed camera calibration using aruco markers. Since the intrinsic matrix is K = [fx 0 cx; 0 fy cy; 0 0 1]
and where fx = image_width/2 and fy = image_height/2
. I performed the calibration twice and the results are:
CASE 1
camera_matrix: !!opencv-matrix
rows: 3
cols: 3
dt: d
data: [ 1.7837087835808685e+004, 0., 9.4648597205501767e+002, 0.,
1.7846680517567835e+004, 6.2655678552312384e+002, 0., 0., 1. ]
distortion_coefficients: !!opencv-matrix
rows: 1
cols: 5
dt: d
data: [ 1.3214125616841757e-001, 1.3720591379476604e+001,
4.1379706976846960e-003, 3.2630160993931338e-002,
7.2446581087476508e-002 ]
CASE 2
camera_matrix: !!opencv-matrix
rows: 3
cols: 3
dt: d
data: [ 3.9925887362481939e+004, 0., 9.6015637557091463e+002, 0.,
3.5268399261164773e+003, 5.9886507612381956e+002, 0., 0., 1. ]
distortion_coefficients: !!opencv-matrix
rows: 1
cols: 5
dt: d
data: [ 4.4338539084399781e-001, 4.9217843346948866e+000,
5.8004377137432547e-002, 1.1762688789809046e-004,
-5.4097967557812456e+002 ]
The resolution of the image is 1920*1200, so cx
and cy
should be 960 and 600.
In the 2nd case, cx
and cy
are as expected; the re-projection error is large. In other case cx
and cy
are not matching but the re-projection error is quite low (less than 1).
So now which results can be considered and best and how can fx
and fy
be defined in general?