fontan commited on
Commit
faf2b9c
·
1 Parent(s): fa6f5bd

add colmap

Browse files
Files changed (1) hide show
  1. glomap_reconstruction.sh +29 -37
glomap_reconstruction.sh CHANGED
@@ -1,11 +1,17 @@
1
  #!/bin/bash
2
 
3
- # Function to split key-value pairs and assign them to variables
4
  matcher_type="exhaustive"
5
  use_gpu="1"
6
  verbose="0"
7
  settings_yaml=""
 
 
 
 
 
8
 
 
9
  split_and_assign() {
10
  local input=$1
11
  local key=$(echo $input | cut -d':' -f1)
@@ -13,52 +19,40 @@ split_and_assign() {
13
  eval $key=$value
14
  }
15
 
16
- # Split the input string into individual components
17
  for ((i=1; i<=$#; i++)); do
18
  split_and_assign "${!i}"
19
  done
20
 
21
  exp_id=$(printf "%05d" ${exp_id})
22
 
23
- echo "Sequence Path: $sequence_path"
24
- echo "Experiment Folder: $exp_folder"
25
- echo "Experiment ID: $exp_id"
26
- echo "Verbose: $verbose"
27
- echo "matcher_type: $matcher_type"
28
- echo "use_gpu: $use_gpu"
29
- echo "settings_yaml: $settings_yaml"
30
- echo "calibration_yaml: $calibration_yaml"
31
- echo "rgb_txt: $rgb_txt"
 
 
32
 
 
33
  exp_folder_colmap="${exp_folder}/colmap_${exp_id}"
34
  rm -rf "$exp_folder_colmap"
35
  mkdir "$exp_folder_colmap"
36
 
37
- export QT_QPA_PLATFORM_PLUGIN_PATH="$CONDA_PREFIX/plugins/platforms"
38
-
39
  # Run COLMAP scripts for matching and mapping
40
- ./Baselines/glomap/colmap_matcher.sh $sequence_path $exp_folder $exp_id $matcher_type $use_gpu ${settings_yaml} ${calibration_yaml} ${rgb_txt}
41
- ./Baselines/glomap/glomap_mapper.sh $sequence_path $exp_folder $exp_id ${verbose} ${settings_yaml} ${calibration_yaml} ${rgb_txt}
42
-
43
- # Convert COLMAP outputs to a format suitable for VSLAM-Lab
44
- python Baselines/glomap/colmap_to_vslamlab.py $sequence_path $exp_folder $exp_id $verbose $rgb_txt
45
 
46
- # Get colmap stats
47
- colmap_stats_csv="${exp_folder}/${exp_id}_colmap_stats.csv"
48
- if [[ ! -f "$colmap_stats_csv" ]]; then
49
- echo "File,Cameras,Images,Registered Images,Points,Observations,Mean Track Length,Mean Observations per Image,Mean Reprojection Error" > "$colmap_stats_csv"
50
- fi
51
- colmap_stats=$(pixi run -e colmap colmap model_analyzer --path "$exp_folder_colmap" 2>&1)
52
- cameras=$(echo "$colmap_stats" | grep -oP "(?<=Cameras: )\d+")
53
- images=$(echo "$colmap_stats" | grep -oP "(?<=Images: )\d+")
54
- registered_images=$(echo "$colmap_stats" | grep -oP "(?<=Registered images: )\d+")
55
- points=$(echo "$colmap_stats" | grep -oP "(?<=Points: )\d+")
56
- observations=$(echo "$colmap_stats" | grep -oP "(?<=Observations: )\d+")
57
- mean_track_length=$(echo "$colmap_stats" | grep -oP "(?<=Mean track length: )\d+\.\d+")
58
- mean_observations_per_image=$(echo "$colmap_stats" | grep -oP "(?<=Mean observations per image: )\d+\.\d+")
59
- mean_reprojection_error=$(echo "$colmap_stats" | grep -oP "(?<=Mean reprojection error: )\d+\.\d+")
60
- echo "$exp_folder_colmap,${cameras:-0},${images:-0},${registered_images:-0},${points:-0},${observations:-0},${mean_track_length:-0},${mean_observations_per_image:-0},${mean_reprojection_error:-0}" >> "$colmap_stats_csv"
61
 
 
62
  if [ "$verbose" -eq 1 ]; then
63
  exp_folder_colmap="${exp_folder}/colmap_${exp_id}"
64
  rgb_path="${sequence_path}/$(awk '{print $2}' "${rgb_txt}" | awk -F'/' 'NR==1 {print $1}')"
@@ -66,8 +60,6 @@ if [ "$verbose" -eq 1 ]; then
66
  colmap gui --import_path "${exp_folder_colmap}/0" --database_path ${database} --image_path ${rgb_path}
67
  fi
68
 
69
-
70
- # Remove colmap data
71
- rm -rf ${exp_folder_colmap}
72
-
73
 
 
1
  #!/bin/bash
2
 
3
+ # Default values
4
  matcher_type="exhaustive"
5
  use_gpu="1"
6
  verbose="0"
7
  settings_yaml=""
8
+ sequence_path=""
9
+ exp_folder=""
10
+ exp_id=""
11
+ calibration_yaml=""
12
+ rgb_txt=""
13
 
14
+ # Function to split key-value pairs and assign them to variables
15
  split_and_assign() {
16
  local input=$1
17
  local key=$(echo $input | cut -d':' -f1)
 
19
  eval $key=$value
20
  }
21
 
22
+ # Read Inputs
23
  for ((i=1; i<=$#; i++)); do
24
  split_and_assign "${!i}"
25
  done
26
 
27
  exp_id=$(printf "%05d" ${exp_id})
28
 
29
+ echo -e "\n================= Experiment Configuration ================="
30
+ echo " Sequence Path : $sequence_path"
31
+ echo " Experiment Folder : $exp_folder"
32
+ echo " Experiment ID : $exp_id"
33
+ echo " Verbose : $verbose"
34
+ echo " Matcher Type : $matcher_type"
35
+ echo " Use GPU : $use_gpu"
36
+ echo " Settings YAML : $settings_yaml"
37
+ echo " Calibration YAML : $calibration_yaml"
38
+ echo " RGB TXT : $rgb_txt"
39
+ echo "============================================================"
40
 
41
+ # Create folder to save colmap files
42
  exp_folder_colmap="${exp_folder}/colmap_${exp_id}"
43
  rm -rf "$exp_folder_colmap"
44
  mkdir "$exp_folder_colmap"
45
 
 
 
46
  # Run COLMAP scripts for matching and mapping
47
+ export QT_QPA_PLATFORM_PLUGIN_PATH="$CONDA_PREFIX/plugins/platforms"
48
+ colmap_args="$sequence_path $exp_folder $exp_id $settings_yaml $calibration_yaml $rgb_txt"
49
+ ./Baselines/colmap/colmap_matcher.sh $colmap_args $matcher_type $use_gpu
50
+ ./Baselines/glomap/colmap_mapper.sh $colmap_args
 
51
 
52
+ # Convert COLMAP outputs to a format suitable for VSLAM-LAB
53
+ python Baselines/colmap/colmap_to_vslamlab.py $sequence_path $exp_folder $exp_id $verbose $rgb_txt
 
 
 
 
 
 
 
 
 
 
 
 
 
54
 
55
+ # Visualization with colmap gui
56
  if [ "$verbose" -eq 1 ]; then
57
  exp_folder_colmap="${exp_folder}/colmap_${exp_id}"
58
  rgb_path="${sequence_path}/$(awk '{print $2}' "${rgb_txt}" | awk -F'/' 'NR==1 {print $1}')"
 
60
  colmap gui --import_path "${exp_folder_colmap}/0" --database_path ${database} --image_path ${rgb_path}
61
  fi
62
 
63
+ # # Remove colmap data
64
+ # rm -rf ${exp_folder_colmap}
 
 
65