ColmapForVisSat Patches
August 10, 2026 ยท View on GitHub
This repository uses git patch to implement ColmapForVisSat.
Since ColmapForVisSat is a full copy of Colmap, it is difficult to maintain. By relying on git apply <patch> this repository offers a simpler approach to incorporate the latest changes of the original Colmap library.
Different patched Colmap versions (mimicking ColmapForVisSat) can be found here - check the individual branches.
Compatibility
In contrast to the original ColmapForVisSat library, this repository supports current CUDA versions (validated with CUDA 13.2 on Ubuntu 24.04; earlier patch set generations were also validated with CUDA 11.8).
Current patch files are created for the Colmap commit b0af55be2808366609ee2023c5b9a980fdabd1ea (2026-08-05 16:20:14 +0000).
The authoritative value is always the one in compatible_commit.txt.
Apply a set of satellite specific patch files to the original Colmap repository
This repository uses Repository Patcher to apply the patches. Follow the install instructions here and the configuration instructions here.
Afterwards apply the patch files in the patches folder using the instructions here.
Build the patched Colmap repository
- Run
sudo apt-get install libmetis-dev libopenimageio-dev openimageio-tools libopencv-dev libqt5svg5-dev(the OpenImageIO/OpenCV/Qt5Svg packages are required since theb0af55be-era Colmap replaced FreeImage with OpenImageIO and added a Qt5Svg dependency) - If anaconda/miniconda is installed, make sure to run
conda deactivatebefore runningcmake. - Follow the official install insctructions of Colmap for Linux.
For contributors/developers
Update patch files for newer Colmap versions
See the instructions here.
Create a branch for the patched colmap version
git clone https://github.com/SBCV/colmap
cd $PathToSBCVColmap
git switch -c vissat_<patches-commit-hash>
Non-trivial conversion notes
Inconsistencies
-
src/base/reconstruction.cc-->Reconstruction::Normalize()-->if (translation_applied && scale_applied) {- add
const Eigen::Vector3d mean_coord = std::get<2>(bound);const Eigen::Vector3d translation = mean_coord;
- add
-
src/controllers/bundle_adjustment.cc-->void BundleAdjustmentController::Run() {-->- can not uncomment
reconstruction_->Normalize();, since line does not exist. - => uncomment
reconstruction_->Normalize();insrc/ui/bundle_adjustment_widget.cc - keep
reconstruction_->Normalize();insrc/sfm/incremental_mapper.cc, since these are not touched in the adapted colmap version
- can not uncomment
Obsolete ? (TODO)
- src/base/reconstruction.cc --> void Reconstruction::WriteCamerasText() --> file << std::setprecision(PRECISION);
- src/base/reconstruction.cc --> void Reconstruction::WriteCamerasText() --> line << std::setprecision(PRECISION);
- src/base/reconstruction.cc --> void Reconstruction::WriteImagesText() --> file << std::setprecision(PRECISION);
- src/base/reconstruction.cc --> void Reconstruction::WriteImagesText() --> line << std::setprecision(PRECISION);
- src/base/reconstruction.cc --> void Reconstruction::WritePoints3DText() --> file << std::setprecision(PRECISION);
- src/base/reconstruction.cc --> void Reconstruction::WritePoints3DText() --> line << std::setprecision(PRECISION);
- src/mvs/math.h
Questionable Changes (TODO)
src/mvs/patch_match_cuda.cu--> Deletedreturnin line 181/385