colmap / colmap_reconstruction.sh
vslamlab's picture
Upload folder using huggingface_hub
e8ace62 verified
#!/bin/bash
# Default values
matcher_type="exhaustive"
use_gpu="1"
verbose="0"
settings_yaml=""
sequence_path=""
exp_folder=""
exp_id=""
calibration_yaml=""
rgb_csv=""
camera_name="rgb_0"
# Function to split key-value pairs and assign them to variables
split_and_assign() {
local input=$1
local key=$(echo $input | cut -d':' -f1)
local value=$(echo $input | cut -d':' -f2-)
eval $key=$value
}
# Read Inputs
for ((i=1; i<=$#; i++)); do
split_and_assign "${!i}"
done
exp_id=$(printf "%05d" ${exp_id})
echo -e "\n================= Experiment Configuration ================="
echo " Sequence Path : $sequence_path"
echo " Experiment Folder : $exp_folder"
echo " Experiment ID : $exp_id"
echo " Verbose : $verbose"
echo " Matcher Type : $matcher_type"
echo " Use GPU : $use_gpu"
echo " Settings YAML : $settings_yaml"
echo " Calibration YAML : $calibration_yaml"
echo " RGB CSV : $rgb_csv"
echo " Camera Name : $camera_name"
echo "============================================================"
# Create folder to save colmap files
exp_folder_colmap="${exp_folder}/colmap_${exp_id}"
rm -rf "$exp_folder_colmap"
mkdir "$exp_folder_colmap"
# Run COLMAP scripts for matching and mapping
export QT_QPA_PLATFORM_PLUGIN_PATH="$CONDA_PREFIX/plugins/platforms"
colmap_args="$sequence_path $exp_folder $exp_id $settings_yaml $calibration_yaml $rgb_csv"
./Baselines/colmap/colmap_matcher.sh $colmap_args $matcher_type $use_gpu $camera_name
./Baselines/colmap/colmap_mapper.sh $colmap_args $camera_name
# Convert COLMAP outputs to a format suitable for VSLAM-LAB
python Baselines/colmap/colmap_to_vslamlab.py $sequence_path $exp_folder $exp_id $verbose $rgb_csv $camera_name
# Visualization with colmap gui
if [ "$verbose" -eq 1 ]; then
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}"
database="${exp_folder_colmap}/colmap_database.db"
colmap gui --import_path "${exp_folder_colmap}/0" --database_path ${database} --image_path ${rgb_path}
fi
# # Remove colmap data
# rm -rf ${exp_folder_colmap}