add colmap
Browse files- glomap_reconstruction.sh +29 -37
glomap_reconstruction.sh
CHANGED
|
@@ -1,11 +1,17 @@
|
|
| 1 |
#!/bin/bash
|
| 2 |
|
| 3 |
-
#
|
| 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 |
-
#
|
| 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 "
|
| 24 |
-
echo "
|
| 25 |
-
echo "Experiment
|
| 26 |
-
echo "
|
| 27 |
-
echo "
|
| 28 |
-
echo "
|
| 29 |
-
echo "
|
| 30 |
-
echo "
|
| 31 |
-
echo "
|
|
|
|
|
|
|
| 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 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
python Baselines/glomap/colmap_to_vslamlab.py $sequence_path $exp_folder $exp_id $verbose $rgb_txt
|
| 45 |
|
| 46 |
-
#
|
| 47 |
-
|
| 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 |
-
#
|
| 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 |
|