I understand the above question is vast and vague. But to put into context: I'm trying to determine the accuracy of pose and position estimation of a camera. I have spent weeks calibrating and trying different methods and different sized boards, lighting, distances etc.
The methods I have tried:
- OpenCV's built in calibration method
- Matlab Calibration Toolbox
- Matlab calibration App
- Manually adjusting values.
Description:
- Using about 20 images of various orientations and locations in front of the camera for each
- For a 9x6 checkerboard of sizes 25mm, 32mm and 50mm blocks
- At both resolutions of 1280x720 and 1920x1080
- At distances ranging between 500mm for the smaller board to 2000mm for the larger one
In all cases I have followed strict guidelines as per this link How to verify the correctness of calibration of a webcam?
In all combinations of the above factors, I get results that are a few millimeters off (+- 15mm) My intrinsics for 25mm blocks at 1280x720 for the above methods span as follows:
- OpenCV's built in calibration method > fx = 1269.4 fy = 1269.49 cx = 639.5 cy = 359.5
- Matlab Calibration Toolbox > fx = 1259.53 fy = 1260.76 cx = 661.3 cy = 306.5
- Matlab calibration App > fx = 1255.1 fy = 1254.8 cx = 652.6 cy = 340.7
- Manually adjusting values. > Various results, none stable with exception of cx = 639.5 cy = 359.5
This should not be the case. The position of the camera relative to the origin of the board should be accurate to an average of a millimeter or two, if not submillimeter accuracy when dealing with distances of under 1 meter. Unless I am mistaken?
My question is, what is an ideal, simple calibration method, for an HD webcam, with little distortion?