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 umand 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?