-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multiple (fisheye) camera calibration more fragile with bigger calibration dataset size? #231
Comments
So I calibrated another set of cameras and discovered the I'd still be very interested why there is this very strong correlation between dataset size and likelihood of calibration failure. |
Have you visualized the april tag detection results? The underlying library is intended to be used with rectified images, meaning using it in this fashion can cause you to lose out on perfectly detectable tags and that might potentially be causing your issues. As far as I know kalibr does tag extraction only once on unrectified images. It may be beneficial to calibrate the intrinsics separately, and then feeding rectified images to kalibr to see if the behavior improves. |
Yes, the April tag detections look fine from visual inspection. It's also possible to run calibration on different time slices of the dataset (the smaller the slice, the higher the likelihood of not getting As for your suggestions to split up optimization, I'd be interested in that, but as far as I'm aware this kind of functionality is not exposed in kalibr at the moment (i.e. would require some implementation effort). |
@skohlbr
Just for some future visitors here. |
Hi, can you provide a dataset where this occurs? Thanks |
Hi @goldbattle I'll check, it's been a while :) |
@goldbattle actually found one of the old datasets. Available via this link: https://energyrobotics.sharepoint.com/:f:/s/ExternalSharing/EoTso8wWoghPkuJ8ONb3KJoBCBC7Z8oPL4DDx4sKcvg-Ew?e=0AfRrQ Calibration worked for me (for one of the cameras) by running below command line. The other cameras gave NaN results, so might be good test case |
Hi , @skohlbr. Best regards, |
Hi @Nick-0814 , you're right, calibrating a single Insta fisheye cam with two lenses doesn't work with kalibr (to the best of my knowledge). The trick is to use 2 cameras and arrange them 90 deg offset from each other, so they have mutual observations. Example (of older Insta cams) from a few years ago: |
Thanks so much!!! @skohlbr Best regards, |
So you have to take care you get all the images and IIRC you might need some tooling so their timestamps are all synced up (i.e. the different cameras might have non-matching timestamps as they're not synced, and you gotta fake that, otherwise kalibr will complain). For that reason, you also should make sure to only capture static scenes if possible (perhaps by selectively triggering the 4x image capture). |
@skohlbr |
As described in #226, we calibrate multiple fisheye camera against each other using kalibr with varying degree of success. Sometimes calibration works, sometimes it does not, and it is very hard to know the reason why it sometimes fails and sometimes works. Very often, the initial projection estimates are full of
nan
values. I seem to have noticed that this actually is more likely the higher the number of image samples in the dataset is. I would expect that imperfections of real camera data could be a reason for this, but I can observe exactly the same effect on datasets collected in simulation, which are pretty much perfect (i.e. no time sync offsets, blur, non-rigid mounting, lighting variance...). If there are any hints or ideas on why that is (and what could be done to improve success rate) that would be useful.The text was updated successfully, but these errors were encountered: