glomap / glomap_mapper.sh
fontan's picture
update inputs to colmap 3.13.3
6f07800
#!/bin/bash
echo "Executing glomapMapper.sh ..."
sequence_path="$1"
exp_folder="$2"
exp_id="$3"
settings_yaml="$4"
calibration_yaml="$5"
rgb_csv="$6"
exp_folder_colmap="${exp_folder}/colmap_${exp_id}"
rgb_dir=$(awk -F, 'NR==2 { split($2,a,"/"); print a[1]; exit }' "$rgb_csv")
rgb_path="${sequence_path}/${rgb_dir}"
calibration_model=$(grep -oP '(?<=Camera0\.model:\s)[\w]+' "$calibration_yaml")
echo " camera model : $calibration_model"
optimize_intrinsics="0"
skip_view_graph_calibration="1"
if [ "${calibration_model}" == "UNKNOWN" ]
then
optimize_intrinsics="1"
skip_view_graph_calibration="0"
fi
# Reading settings from yaml file
ba_iteration_num=$(yq '.ba.iteration_num // 3' $settings_yaml)
retriangulation_iteration_num=$(yq '.retriangulation.iteration_num // 1' $settings_yaml)
skip_preprocessing=$(yq '.skip.preprocessing // 0' $settings_yaml)
skip_view_graph_calibration=$(yq '.skip.view_graph_calibration // 0' $settings_yaml)
skip_relative_pose_estimation=$(yq '.skip.relative_pose_estimation // 0' $settings_yaml)
skip_rotation_averaging=$(yq '.skip.rotation_averaging // 0' $settings_yaml)
skip_global_positioning=$(yq '.skip.global_positioning // 0' $settings_yaml)
skip_bundle_adjustment=$(yq '.skip.bundle_adjustment // 0' $settings_yaml)
skip_retriangulation_stage=$(yq '.skip.retriangulation_stage // 0' $settings_yaml)
skip_pruning=$(yq '.skip.pruning // 0' $settings_yaml)
ViewGraphCalib_thres_lower_ratio=$(yq '.ViewGraphCalib.thres_lower_ratio // 0.1' $settings_yaml)
ViewGraphCalib_thres_higher_ratio=$(yq '.ViewGraphCalib.thres_higher_ratio // 10.0' $settings_yaml)
ViewGraphCalib_thres_two_view_error=$(yq '.ViewGraphCalib.thres_two_view_error // 2.0' $settings_yaml)
RelPoseEstimation_max_epipolar_error=$(yq '.RelPoseEstimation.max_epipolar_error // 1.0' $settings_yaml)
TrackEstablishment_min_num_tracks_per_view=$(yq '.TrackEstablishment.min_num_tracks_per_view // -1' $settings_yaml)
TrackEstablishment_min_num_view_per_track=$(yq '.TrackEstablishment.min_num_view_per_track // 3' $settings_yaml)
TrackEstablishment_max_num_view_per_track=$(yq '.TrackEstablishment.max_num_view_per_track // 100' $settings_yaml)
TrackEstablishment_max_num_tracks=$(yq '.TrackEstablishment.max_num_tracks // 10000000' $settings_yaml)
GlobalPositioning_optimize_positions=$(yq '.GlobalPositioning.optimize_positions // 1' $settings_yaml)
GlobalPositioning_optimize_points=$(yq '.GlobalPositioning.optimize_points // 1' $settings_yaml)
GlobalPositioning_optimize_scales=$(yq '.GlobalPositioning.optimize_scales // 1' $settings_yaml)
GlobalPositioning_thres_loss_function=$(yq '.GlobalPositioning.thres_loss_function // 0.1' $settings_yaml)
GlobalPositioning_max_num_iterations=$(yq '.GlobalPositioning.max_num_iterations // 100' $settings_yaml)
BundleAdjustment_optimize_rotations=$(yq '.BundleAdjustment.optimize_rotations // 1' $settings_yaml)
BundleAdjustment_optimize_translation=$(yq '.BundleAdjustment.optimize_translation // 1' $settings_yaml)
BundleAdjustment_optimize_intrinsics=$(yq '.BundleAdjustment.optimize_intrinsics // 1' $settings_yaml)
BundleAdjustment_optimize_points=$(yq '.BundleAdjustment.optimize_points // 1' $settings_yaml)
BundleAdjustment_thres_loss_function=$(yq '.BundleAdjustment.thres_loss_function // 1.0' $settings_yaml)
BundleAdjustment_max_num_iterations=$(yq '.BundleAdjustment.max_num_iterations // 200' $settings_yaml)
Triangulation_complete_max_reproj_error=$(yq '.Triangulation.complete_max_reproj_error // 15.0' $settings_yaml)
Triangulation_merge_max_reproj_error=$(yq '.Triangulation.merge_max_reproj_error // 15.0' $settings_yaml)
Triangulation_min_angle=$(yq '.Triangulation.min_angle // 1.0' $settings_yaml)
Triangulation_min_num_matches=$(yq '.Triangulation.min_num_matches // 15' $settings_yaml)
Thresholds_max_epipolar_error_E=$(yq '.Thresholds.max_epipolar_error_E // 1.0' $settings_yaml)
Thresholds_max_epipolar_error_F=$(yq '.Thresholds.max_epipolar_error_F // 4.0' $settings_yaml)
Thresholds_max_epipolar_error_H=$(yq '.Thresholds.max_epipolar_error_H // 4.0' $settings_yaml)
Thresholds_min_inlier_num=$(yq '.Thresholds.min_inlier_num // 30.0' $settings_yaml)
Thresholds_min_inlier_ratio=$(yq '.Thresholds.min_inlier_ratio // 0.25' $settings_yaml)
Thresholds_max_rotation_error=$(yq '.Thresholds.max_rotation_error // 10.0' $settings_yaml)
echo " glomap mapper ..."
database="${exp_folder_colmap}/colmap_database.db"
glomap mapper \
--database_path "${database}" \
--image_path "${rgb_path}" \
--output_path "${exp_folder_colmap}" #\
# --ba_iteration_num "${ba_iteration_num}" \
# --retriangulation_iteration_num "${retriangulation_iteration_num}" \
# --skip_preprocessing "${skip_preprocessing}" \
# --skip_view_graph_calibration "${skip_view_graph_calibration}" \
# --skip_relative_pose_estimation "${skip_relative_pose_estimation}" \
# --skip_rotation_averaging "${skip_rotation_averaging}" \
# --skip_global_positioning "${skip_global_positioning}" \
# --skip_bundle_adjustment "${skip_bundle_adjustment}" \
# --skip_retriangulation "${skip_retriangulation_stage}" \
# --skip_pruning "${skip_pruning}" \
# --ViewGraphCalib.thres_lower_ratio "${ViewGraphCalib_thres_lower_ratio}" \
# --ViewGraphCalib.thres_higher_ratio "${ViewGraphCalib_thres_higher_ratio}" \
# --ViewGraphCalib.thres_two_view_error "${ViewGraphCalib_thres_two_view_error}" \
# --RelPoseEstimation.max_epipolar_error "${RelPoseEstimation_max_epipolar_error}" \
# --TrackEstablishment.min_num_tracks_per_view "${TrackEstablishment_min_num_tracks_per_view}" \
# --TrackEstablishment.min_num_view_per_track "${TrackEstablishment_min_num_view_per_track}" \
# --TrackEstablishment.max_num_view_per_track "${TrackEstablishment_max_num_view_per_track}" \
# --TrackEstablishment.max_num_tracks "${TrackEstablishment_max_num_tracks}" \
# --GlobalPositioning.optimize_positions "${GlobalPositioning_optimize_positions}" \
# --GlobalPositioning.optimize_points "${GlobalPositioning_optimize_points}" \
# --GlobalPositioning.optimize_scales "${GlobalPositioning_optimize_scales}" \
# --GlobalPositioning.thres_loss_function "${GlobalPositioning_thres_loss_function}" \
# --GlobalPositioning.max_num_iterations "${GlobalPositioning_max_num_iterations}" \
# --BundleAdjustment.optimize_rotations "${BundleAdjustment_optimize_rotations}" \
# --BundleAdjustment.optimize_translation "${BundleAdjustment_optimize_translation}" \
# --BundleAdjustment.optimize_intrinsics "${BundleAdjustment_optimize_intrinsics}" \
# --BundleAdjustment.optimize_points "${BundleAdjustment_optimize_points}" \
# --BundleAdjustment.thres_loss_function "${BundleAdjustment_thres_loss_function}" \
# --BundleAdjustment.max_num_iterations "${BundleAdjustment_max_num_iterations}" \
# --Triangulation.complete_max_reproj_error "${Triangulation_complete_max_reproj_error}" \
# --Triangulation.merge_max_reproj_error "${Triangulation_merge_max_reproj_error}" \
# --Triangulation.min_angle "${Triangulation_min_angle}" \
# --Triangulation.min_num_matches "${Triangulation_min_num_matches}" \
# --Thresholds.max_epipolar_error_E "${Thresholds_max_epipolar_error_E}" \
# --Thresholds.max_epipolar_error_F "${Thresholds_max_epipolar_error_F}" \
# --Thresholds.max_epipolar_error_H "${Thresholds_max_epipolar_error_H}" \
# --Thresholds.min_inlier_num "${Thresholds_min_inlier_num}" \
# --Thresholds.min_inlier_ratio "${Thresholds_min_inlier_ratio}" \
# --Thresholds.max_rotation_error "${Thresholds_max_rotation_error}"
# colmap image_undistorter \
# --image_path "${rgb_path}" \
# --input_path "${exp_folder_colmap}/0" \
# --output_path "${exp_folder_colmap}" \
# --output_type COLMAP \
# --max_image_size 2000
# colmap patch_match_stereo \
# --workspace_path "${exp_folder_colmap}" \
# --workspace_format COLMAP \
# --PatchMatchStereo.cache_size 64 \
# --PatchMatchStereo.filter true \
# --PatchMatchStereo.window_step 2 \
# --PatchMatchStereo.geom_consistency true
echo " colmap model_converter ..."
colmap model_converter \
--input_path ${exp_folder_colmap}/0 --output_path ${exp_folder_colmap} --output_type TXT