chenxinfeng4 / multiview_ball_calib

A python tutorial to use ball calibrating multiview camera system.
30 stars 7 forks source link

I am very interested in your project. However, I have a question about it: for the external parameter calibration using three spheres, do they need to be shaken like a single sphere, or can they be moved to any position? #1

Open UselessHua opened 9 months ago

chenxinfeng4 commented 9 months ago

Calibration using three spheres is similar as one sphere mostly. While doing the bundle adjustment, the three spheres will be threated one by one without structure information, just triple the single sphere data. After that, the structure of three spheres is used to restore the world axis length (correct the t vector, not K, dist nor R).

UselessHua commented 9 months ago

Thank you for your reply! I would like to ask, when recovering scale information, is it necessary to hang the three spheres in the same manner as using a single sphere? Can I recover scale information by arbitrarily moving the three spheres in an overlapping field of view?

chenxinfeng4 commented 9 months ago

To recover the scale information, you can simply just move one sphere to two distanced positions (that is DISTANCE_A). In compare, you calculate the distance in camera 3D space (DISTANCE_B). The scale s = DISTANCE_A/DISTANCE_B, and let the camera param t=t*s.

Now, redo the calculation in camera space (DISTANCE_B2). You will get DISTANCE_B2==DISTANCE_A.

The "three spheres method" is to define the DISTANCE_B as the manner above.