Hello!
I am using several of the IMX577 M12 modules, which come with a 75 deg H-FoV lens. I am having error in my camera calibration, specifically in the focal length. Although the error isn't giant, it is very significant for my application.
Based off the resolution of (4056, 3040)
, the pixel size of 1.55 um
and the H-FoV of 75 degrees
, I can calculate my expected focal length to be 4.096558636989045 mm
, or 2642.9410561219647 px
. I have also experimentally determined the focal length by setting up a chaurco board perpendicular to my camera, measuring the Z-distance, and looking at the FoV. I also get roughly this number (within 10 px or so) doing this. So, I am fairly confident that this is the result I am looking for.
Now, when I perform my calibration, I get a focal length of something closer to 2530 px
. This is across several cameras, and I have gone through great effort to get the highest quality calibration possible.
- I get good re-projection error (~0.7 px).
- I am using a high quality board from calib.io. I have tried two separate boards from them, as well as a printed out board on paper, and I always get within a few pixels of this result.
- I am mounting my camera to a tripod, and making sure there is no motion what so ever.
- I have good lighting with no glare.
- My lens is focused well.
- I am taking data mainly at my expected working distance (which is where the lens is focused).
- I have lots of varied data, and I have many examples of foreshortening, which I know is important for focal length.
- I am using lots of images. I have tried as few as 10-15 and as many as 100, and always get roughly this result.
My distortion parameters come out great, but the intrinsic matrix is always slightly wrong. Just to confirm I wasn't going crazy, I have also ran the images collected through Matlab, as well as my own OpenCV implementation, and I get the exact same results.
What could be going on here?