colmap / glomap

GLOMAP - Global Structured-from-Motion Revisited
BSD 3-Clause "New" or "Revised" License
1.5k stars 101 forks source link

Pass an extrinsic/ intrinsic constraint? #85

Open antithing opened 3 months ago

antithing commented 3 months ago

Hi, I have an sfm problem consisting of 3 cameras, two of which are a constrained stereo pair.

Can I pass the stereo intrinsic/ extrinsic matrix as a constraint to give more accurate intrinsic data from the 3rd camera, as well as accurately give world scale?

Thanks!

smbonilla commented 3 months ago

I haven't tested this, but glomap only replaces colmap's incremental mapper, so you should be able to use the functionality of setting intrinsics same as you do for colmap.

For example, you can try (fair warning - i didn't try this tho):


colmap feature_extractor \
--database_path $DATASET_PATH/database.db \
--image_path $IMAGE_PATH \
--image_list_path $DATASET_PATH/images_used_for_recon.txt \
--ImageReader.single_camera 1 \
--ImageReader.camera_model $YOUR_CAM_MODEL \
--ImageReader.camera_params $YOUR_CAM_PARAMS

colmap exhaustive_matcher \
--database_path $DATASET_PATH/database.db

mkdir $DATASET_PATH/sparse

glomap mapper \
--database_path $DATASET_PATH/database.db \
--image_path $IMAGE_PATH \
--output_path $DATASET_PATH/sparse 
lpanaf commented 3 months ago

Hi, thanks for your interest. So far, we are not supporting the explicit constraint on the relative camera pose. But for the intrinsic, @smbonilla is correct that you can specify it when extracting camera features.

antithing commented 3 months ago

Thanks! Would passing the intrinsic data for 2 cameras likely improve the calculated intrinsic for a third?

If I know the extrinsic between the stereo pair, I could calculate the scale factor to get to world scale, right?