File size: 8,240 Bytes
2144a4e
 
 
 
 
 
bf8363f
 
94eb0bb
2144a4e
 
 
94eb0bb
 
2144a4e
94eb0bb
2144a4e
 
 
 
 
 
 
 
 
 
bf8363f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2144a4e
bf8363f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2144a4e
 
 
 
bf8363f
2144a4e
 
 
 
 
 
 
 
 
 
 
 
bf8363f
 
6f07800
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2144a4e
94eb0bb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2144a4e
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/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