Incorrect result from camera calibrator app
13 views (last 30 days)
Show older comments
I used the camera calibrator app to calibrate lens distortion and I specified correct checkerboard size of 8mm. The calibration goes fine and i'm able to undistort images and points. However, the plot from showextrinsics() shows camera at 8mm distance from object but in reality it is 140mm. Why is this wrong?
My setup has a camera looking downwards and pattern is placed at the same working distance in all 30+ images where the lens is focused.
Calibration settings: All default settings - Standard lens, 2 coeffs, no tangential distortion, no skew, etc.
4 Comments
Giridharan Kumaravelu
on 19 Mar 2024
Would you mind providing us with the calibration images to help troubleshoot this behavior?
Accepted Answer
Giridharan Kumaravelu
on 22 Mar 2024
Edited: Giridharan Kumaravelu
on 22 Mar 2024
Thanks for providing the calibration images. This is a limitation of the technique (Zhang's algorithm) that camera calibrator app uses, that it cannot calibrate a camera with calibration images that are coplanar. To accurately calibrate a camera with the app, you need some variance in the calibration images in the z-direction. Even a little wiggle in the z direction could avoid this degenerate configuration.
3 Comments
Giridharan Kumaravelu
on 29 Mar 2024 at 14:53
The camera calibration algorithm in MATLAB jointly optimizes for the intrinsics (including distortion parameters) and extrinsics. So, all the results are degenerate and invalid although the undistortion may look normal.
If you are in a position to vary the z-distances, you might as well capture the calibration images by varying the z-distance and you can arrive at the correct pixel-to-mm.
With respect to your questions related to the example, here is a typical workflow of measuring planar objects:
- Calibrate the camera for intrinsics in any location.
- Calibrate the camera for extrinsics in the workplace with the known intrinsics from step 1 and with the help of calibration pattern. Do not move the camera after this step to avoid invalidating the extrinsics. (Extrinsics is the relative position of the camera w.r.t the calibration pattern).
- You can remove the calibration pattern and start measuring planar objects that are in the same plane as the calibration pattern.
To answer your question, the estimations will still be accurate even if the checkerboard is removed after step 2 mentioned above. But if the camera is moved after step 2, then you need repeat step 2 to accurately measure objects.
It is true that you can gauge distances to "planar" objects, after calibration step but only with the help of a calibration target like a checkerboard or an apriltag.
More Answers (0)
See Also
Categories
Find more on MATLAB Support Package for USB Webcams in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!