rameau-fr / MC-Calib

A generic and robust calibration toolbox for multi-camera systems
MIT License
377 stars 54 forks source link

Multi-camera non-overlapping calibration output is unreasonable #36

Closed DonovanZhu closed 1 year ago

DonovanZhu commented 1 year ago

System information (version)

Vision system

One of the image is like this:

00146

The calib_param.yml file is as follow: calib_param_Non-overlapping.txt

Problem:

A list of images taken by each camera. We could call the four lists A/B/C/D. At first, I tried calibrate all of them together. However, the output makes no sense. As you can see, the intrinsics are too small and the extrinsics are too big:

calibrated_cameras_data.txt reprojection_error_data.txt

The strange is, I get rid of the image list "D", and only calibrate images "A/B/C". Without other changes (even same images as before), the output then seems good:

calibrated_cameras_data.txt reprojection_error_data.txt

Then I try only use images lists "C/D", the results are reasonable:

calibrated_cameras_data.txt reprojection_error_data.txt

Finally, I set fix_intrinsic to "1", and calibrate all the four cameras together. The outputs are also not good. And it changes a lot every time I rerun the program again. reprojection_error_data.txt calibrated_cameras_data.txt

Why this happens? How do I fix this problem. Thanks!

DonovanZhu commented 1 year ago

I found that before non-overlapping handeye calibration step, the reprojection errors are still small. But after that step, the calibration result seems unreasonable. Then I change the bootstrapped he technique to traditional method, the problems are solved and the final output is normal right now.

Is there any suggestions for using the bootstrapped he technique?

rameau-fr commented 1 year ago

Hello, Thank you very much for using MC-Calib and for your detailed feedback! It's great to hear that you were able to identify the cause of your problem; for now, I would like to suggest that you try using MC-Calib without the bootstrapped HE strategy and instead rely on the normal technique, as everything is refined non-linearly afterwards. Initially, we developed the bootstrapped technique to improve the speed and robustness. We extensively tested this approach, but it seems that your scenario is causing difficulties with the bootstrapped technique. Without analyzing your data, it's hard to pinpoint the exact problem. However, I would be happy to take a closer look if you would be willing to share your data with me.

Thank you again for your feedback. We greatly appreciate it, as it helps us improve this toolbox.

zjp-tju commented 9 months ago

fickbob