| #!/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 |
|
|
| |
| 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}" |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| echo " colmap model_converter ..." |
| colmap model_converter \ |
| --input_path ${exp_folder_colmap}/0 --output_path ${exp_folder_colmap} --output_type TXT |
|
|
|
|
|
|