|
|
#!/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 |
|
|
|
|
|
|
|
|
|