cvlab-epfl / multiview_calib

Single and multiple view camera calibration tool
59 stars 13 forks source link

Question about the landmarks.json #7

Closed aligeniewcp22 closed 2 years ago

aligeniewcp22 commented 2 years ago

Hi, Leonardo. Thanks for your explanations last time. I am trying to use your calibration tool now. However, I am a little confused about the generation of "landmarks.json". From the tutorial, it seems I need to annotate thousands of points manually and align these points at multiple views, which keeps me from getting started. Can you give me some suggestions about how to obtain the "landmarks.json" file conveniently, or some other auxiliary tools? If so, I will appreciate it so much.

lcit commented 2 years ago

Hello! The landmarks.json file contains the image locations of some common objects seen in each view. The precision of these points is directly correlated with the precision of the resulting calibration. Usually these keypoints are manually annotated and they do not have to be thousands but something in the range 10-100 might be good already. If you do not want to manually annotate them you have to implement a custom detection algorithm (i.e. neural networks for object detections or other depend what you have on the scene) that detect common objects such as a drone or a tennis ball. But this requires a bit of experience.

aligeniewcp22 commented 2 years ago

Thanks. If so, I can use the inner corners detected in the last step "intrinsic estimation" as the landmarks, right? For example, the chessboard with 6 x 9 inner corners has 54 points, which is in the range 10-100, and maybe the number is already enough? Moreover, under fixed multiple cameras, I can also change the pose of the chessboard to get more landmark points, right?

lcit commented 2 years ago

I want to clarify a few points. This tool recovers the intrinsics and extrinsics parameter of a set of fixed cameras with overlapping field of view. In the (initial) extraction of the intrinsic parameters (i.e. using compute_intrinsics.py), the cameras do not need to be in the final setup and can move. That means that you can recover the intrinsics for each camera separately. To extract the extrinsics, the cameras are fixed. If the landmarks you want to use for the extrinsics calibration are static, you can calibrate the cameras using one picture per view. If your landmarks are not static, you have to acquire videos and make sure that these have the same frame rate and that are temporally synchronized. This because each landmark is associated with a temporal index.

The easiest way to calibrate would be to place some objects in the scene and then manually annotate some common points like in examples/simple_box. If you want to use the checkerboard for your landmark, you have to move the checkerboard so that you do not have coplanar points and for that you have to take videos. Taking videos means you have to synchronize them unless you have some multi-camera system that does that for you.

lcit commented 2 years ago

Can I close this?

coder681 commented 1 day ago

Can you tell us how did you get to create landmarks.json in your example drone_rolex ? (it's not easy to get it manually and it's less accurate when the views are quite different) Thank you