Skip to content

Commit 543e744

Browse files
authored
Merge pull request #18 from colmap/upload/legacy_3.13
2 parents cca5268 + 5274f16 commit 543e744

File tree

186 files changed

+59455
-1714
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

186 files changed

+59455
-1714
lines changed

_sources/cli.rst.txt

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ If you want to run COLMAP on a computer without an attached display (e.g.,
8585
cluster or cloud service), COLMAP automatically switches to use CUDA if
8686
supported by your system. If no CUDA enabled device is available, you can
8787
manually select to use CPU-based feature extraction and matching by setting the
88-
``--SiftExtraction.use_gpu 0`` and ``--SiftMatching.use_gpu 0`` options.
88+
``--FeatureExtraction.use_gpu 0`` and ``--FeatureMatching.use_gpu 0`` options.
8989

9090
Help
9191
----
@@ -149,7 +149,6 @@ The available commands can be listed using the command::
149149
poisson_mesher
150150
project_generator
151151
rig_configurator
152-
rig_bundle_adjuster
153152
sequential_matcher
154153
spatial_matcher
155154
stereo_fusion
@@ -166,32 +165,44 @@ the available options, e.g.::
166165
Options can either be specified via command-line or by defining
167166
them in a .ini project file passed to ``--project_path``.
168167

169-
-h [ --help ]
170-
--project_path arg
171-
--database_path arg
172-
--image_path arg
173-
--image_list_path arg
174-
--ImageReader.camera_model arg (=SIMPLE_RADIAL)
175-
--ImageReader.single_camera arg (=0)
176-
--ImageReader.camera_params arg
177-
--ImageReader.default_focal_length_factor arg (=1.2)
178-
--SiftExtraction.num_threads arg (=-1)
179-
--SiftExtraction.use_gpu arg (=1)
180-
--SiftExtraction.gpu_index arg (=-1)
181-
--SiftExtraction.max_image_size arg (=3200)
182-
--SiftExtraction.max_num_features arg (=8192)
183-
--SiftExtraction.first_octave arg (=-1)
184-
--SiftExtraction.num_octaves arg (=4)
185-
--SiftExtraction.octave_resolution arg (=3)
186-
--SiftExtraction.peak_threshold arg (=0.0066666666666666671)
187-
--SiftExtraction.edge_threshold arg (=10)
188-
--SiftExtraction.estimate_affine_shape arg (=0)
189-
--SiftExtraction.max_num_orientations arg (=2)
190-
--SiftExtraction.upright arg (=0)
191-
--SiftExtraction.domain_size_pooling arg (=0)
192-
--SiftExtraction.dsp_min_scale arg (=0.16666666666666666)
193-
--SiftExtraction.dsp_max_scale arg (=3)
194-
--SiftExtraction.dsp_num_scales arg (=10)
168+
-h [ --help ]
169+
--default_random_seed arg (=0)
170+
--log_to_stderr arg (=1)
171+
--log_level arg (=0)
172+
--project_path arg
173+
--database_path arg
174+
--image_path arg
175+
--camera_mode arg (=-1)
176+
--image_list_path arg
177+
--descriptor_normalization arg (=l1_root)
178+
{'l1_root', 'l2'}
179+
--ImageReader.mask_path arg
180+
--ImageReader.camera_model arg (=SIMPLE_RADIAL)
181+
--ImageReader.single_camera arg (=0)
182+
--ImageReader.single_camera_per_folder arg (=0)
183+
--ImageReader.single_camera_per_image arg (=0)
184+
--ImageReader.existing_camera_id arg (=-1)
185+
--ImageReader.camera_params arg
186+
--ImageReader.default_focal_length_factor arg (=1.2)
187+
--ImageReader.camera_mask_path arg
188+
--FeatureExtraction.type arg (=SIFT)
189+
--FeatureExtraction.max_image_size arg (=3200)
190+
--FeatureExtraction.num_threads arg (=-1)
191+
--FeatureExtraction.use_gpu arg (=1)
192+
--FeatureExtraction.gpu_index arg (=-1)
193+
--SiftExtraction.max_num_features arg (=8192)
194+
--SiftExtraction.first_octave arg (=-1)
195+
--SiftExtraction.num_octaves arg (=4)
196+
--SiftExtraction.octave_resolution arg (=3)
197+
--SiftExtraction.peak_threshold arg (=0.0066666666666666671)
198+
--SiftExtraction.edge_threshold arg (=10)
199+
--SiftExtraction.estimate_affine_shape arg (=0)
200+
--SiftExtraction.max_num_orientations arg (=2)
201+
--SiftExtraction.upright arg (=0)
202+
--SiftExtraction.domain_size_pooling arg (=0)
203+
--SiftExtraction.dsp_min_scale arg (=0.16666666666666666)
204+
--SiftExtraction.dsp_max_scale arg (=3)
205+
--SiftExtraction.dsp_num_scales arg (=10)
195206

196207

197208
The available options can either be provided directly from the command-line or

_sources/faq.rst.txt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ To increase the number of matches, you should use the more discriminative
8383
DSP-SIFT features instead of plain SIFT and also estimate the affine feature
8484
shape using the options: ``--SiftExtraction.estimate_affine_shape=true`` and
8585
``--SiftExtraction.domain_size_pooling=true``. In addition, you should enable
86-
guided feature matching using: ``--SiftMatching.guided_matching=true``.
86+
guided feature matching using: ``--FeatureMatching.guided_matching=true``.
8787

8888
By default, COLMAP ignores two-view feature tracks in triangulation, resulting
8989
in fewer 3D points than possible. Triangulation of two-view tracks can in rare
@@ -121,7 +121,7 @@ Example of images.txt::
121121

122122
4 0.698777 0.714625 -0.023996 0.021129 -0.048184 0.004529 -0.313427 2 image0004.png
123123

124-
Each image above must have the same ``image_id`` (first column) as in the database (next step).
124+
Each image above must have the same ``image_id`` (first column) as in the database (next step).
125125
This database can be inspected either in the GUI (under ``Database management > Processing``),
126126
or, one can create a reconstruction with colmap and later export it as text in order to see
127127
the images.txt file it creates.
@@ -217,9 +217,9 @@ camera centers of a subset or all registered images. The 3D similarity
217217
transformation between the reconstructed model and the target coordinate frame
218218
of the geo-registration is determined from these correspondences.
219219

220-
The geo-registered 3D coordinates can either be extracted from the database
221-
(tvec_prior field) or from a user specified text file.
222-
For text-files, the geo-registered 3D coordinates of the camera centers for
220+
The geo-registered 3D coordinates can either be extracted from the database
221+
(tvec_prior field) or from a user specified text file.
222+
For text-files, the geo-registered 3D coordinates of the camera centers for
223223
images must be specified with the following format::
224224

225225
image_name1.jpg X1 Y1 Z1
@@ -232,7 +232,7 @@ In case of GPS coordinates, a conversion will be performed to turn those into
232232
cartesian coordinates. The conversion can be done from GPS to ECEF
233233
(Earth-Centered-Earth-Fixed) or to ENU (East-North-Up) coordinates. If ENU coordinates
234234
are used, the first image GPS coordinates will define the origin of the ENU frame.
235-
It is also possible to use ECEF coordinates for alignment and then rotate the aligned
235+
It is also possible to use ECEF coordinates for alignment and then rotate the aligned
236236
reconstruction into the ENU plane.
237237

238238
Note that at least 3 images must be specified to estimate a 3D similarity
@@ -339,22 +339,22 @@ external dense reconstruction software as an alternative, as described in the
339339
:ref:`Tutorial <dense-reconstruction>`. If you have a GPU with low compute power
340340
or you want to execute COLMAP on a machine without an attached display and
341341
without CUDA support, you can run all steps on the CPU by specifying the
342-
appropriate options (e.g., ``--SiftExtraction.use_gpu=false`` for the feature
342+
appropriate options (e.g., ``--FeatureExtraction.use_gpu=false`` for the feature
343343
extraction step). But note that this might result in a significant slow-down of
344344
the reconstruction pipeline. Please, also note that feature extraction on the
345345
CPU can consume excessive RAM for large images in the default settings, which
346346
might require manually reducing the maximum image size using
347-
``--SiftExtraction.max_image_size`` and/or setting
347+
``--FeatureExtraction.max_image_size`` and/or setting
348348
``--SiftExtraction.first_octave 0`` or by manually limiting the number of
349-
threads using ``--SiftExtraction.num_threads``.
349+
threads using ``--FeatureExtraction.num_threads``.
350350

351351

352352
Multi-GPU support in feature extraction/matching
353353
------------------------------------------------
354354

355355
You can run feature extraction/matching on multiple GPUs by specifying multiple
356-
indices for CUDA-enabled GPUs, e.g., ``--SiftExtraction.gpu_index=0,1,2,3`` and
357-
``--SiftMatching.gpu_index=0,1,2,3`` runs the feature extraction/matching on 4
356+
indices for CUDA-enabled GPUs, e.g., ``--FeatureExtraction.gpu_index=0,1,2,3`` and
357+
``--FeatureMatching.gpu_index=0,1,2,3`` runs the feature extraction/matching on 4
358358
GPUs in parallel. Note that you can only run one thread per GPU and this
359359
typically also gives the best performance. By default, COLMAP runs one feature
360360
extraction/matching thread per CUDA-enabled GPU and this usually gives the best
@@ -374,15 +374,15 @@ or the following:
374374
memory. Consider reducing the maximum number of features.
375375

376376
during feature matching, your GPU runs out of memory. Try decreasing the option
377-
``--SiftMatching.max_num_matches`` until the error disappears. Note that this
377+
``--FeatureMatching.max_num_matches`` until the error disappears. Note that this
378378
might lead to inferior feature matching results, since the lower-scale input
379379
features will be clamped in order to fit them into GPU memory. Alternatively,
380380
you could change to CPU-based feature matching, but this can become very slow,
381381
or better you buy a GPU with more memory.
382382

383383
The maximum required GPU memory can be approximately estimated using the
384-
following formula: ``4 * num_matches * num_matches + 4 * num_matches * 256``.
385-
For example, if you set ``--SiftMatching.max_num_matches 10000``, the maximum
384+
following formula: ``4 * num_matches * num_matches + 4 * num_matches * 256`` for SIFT.
385+
For example, if you set ``--FeatureMatching.max_num_matches 10000``, the maximum
386386
required GPU memory will be around 400MB, which are only allocated if one of
387387
your images actually has that many features.
388388

_sources/install.rst.txt

Lines changed: 56 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,19 @@ Dependencies from the default Ubuntu repositories::
8888
libgmock-dev \
8989
libsqlite3-dev \
9090
libglew-dev \
91-
qtbase5-dev \
92-
libqt5opengl5-dev \
91+
qt6-base-dev \
92+
libqt6opengl6-dev \
93+
libqt6openglwidgets6 \
9394
libcgal-dev \
9495
libceres-dev \
9596
libcurl4-openssl-dev \
97+
libssl-dev \
9698
libmkl-full-dev
9799

100+
Alternatively, you can also build against Qt 5 instead of Qt 6 using::
101+
102+
qtbase5-dev libqt5opengl5-dev
103+
98104
To compile with **CUDA support**, also install Ubuntu's default CUDA package::
99105

100106
sudo apt-get install -y \
@@ -121,11 +127,6 @@ Run COLMAP::
121127
colmap -h
122128
colmap gui
123129

124-
Under **Ubuntu 18.04**, the CMake configuration scripts of CGAL are broken and
125-
you must also install the CGAL Qt5 package::
126-
127-
sudo apt-get install libcgal-qt5-dev
128-
129130
Under **Ubuntu 22.04**, there is a problem when compiling with Ubuntu's default
130131
CUDA package and GCC, and you must compile against GCC 10::
131132

@@ -157,7 +158,7 @@ Dependencies from `Homebrew <http://brew.sh/>`__::
157158
glog \
158159
googletest \
159160
ceres-solver \
160-
qt5 \
161+
qt \
161162
glew \
162163
cgal \
163164
sqlite3
@@ -169,18 +170,15 @@ Configure and compile COLMAP::
169170
cd colmap
170171
mkdir build
171172
cd build
172-
cmake .. \
173-
-GNinja \
174-
-DQt5_DIR="$(brew --prefix qt@5)/lib/cmake/Qt5"
173+
cmake -GNinja
175174
ninja
176175
sudo ninja install
177176

178-
If you have Qt 6 installed on your system as well, you might have to temporarily
177+
If you have Qt 5 installed on your system as well, you might have to temporarily
179178
link your Qt 5 installation while configuring CMake::
180179

181-
brew link qt5
182-
cmake ... (from previous code block)
183-
brew unlink qt5
180+
brew unlink qt && brew link --force qt
181+
cmake ...
184182

185183
Run COLMAP::
186184

@@ -241,6 +239,45 @@ vcpkg, first run ``./vcpkg integrate install`` (under Windows use pwsh and
241239
cmake .. -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release
242240
cmake --build . --config release --target colmap --parallel 24
243241

242+
Anaconda
243+
--------
244+
245+
Install miniconda and run the following commands::
246+
247+
conda create -n colmap python=3.12
248+
conda config --add channels conda-forge
249+
conda config --set channel_priority strict
250+
conda install \
251+
cmake \
252+
ninja \
253+
boost \
254+
ccache \
255+
eigen \
256+
freeimage \
257+
curl \
258+
metis \
259+
glog \
260+
gtest \
261+
ceres-solver \
262+
qt \
263+
glew \
264+
sqlite \
265+
glew \
266+
cgal-cpp \
267+
mesa-libgl-devel-cos7-x86_64 \
268+
cuda-compiler==12.6.2 \
269+
cuda-cudart-dev \
270+
cuda-nvrtc-dev \
271+
libcurand-dev
272+
273+
git clone https://github.com/colmap/colmap.git
274+
cd colmap
275+
mkdir build
276+
cd build
277+
cmake .. -GNinja
278+
ninja
279+
280+
244281

245282
.. _installation-library:
246283

@@ -282,15 +319,17 @@ with the source code ``hello_world.cc``::
282319
std::string message;
283320
colmap::OptionManager options;
284321
options.AddRequiredOption("message", &message);
285-
options.Parse(argc, argv);
322+
if (!options.Parse(argc, argv)) {
323+
return EXIT_FAILURE;
324+
}
286325

287326
std::cout << colmap::StringPrintf("Hello %s!\n", message.c_str());
288327

289328
return EXIT_SUCCESS;
290329
}
291330

292331
Then compile and run your code as::
293-
332+
294333
mkdir build
295334
cd build
296335
export colmap_DIR=${CMAKE_INSTALL_PREFIX}/share/colmap

_sources/legacy.rst.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Legacy Documentations
44
.. toctree::
55
:maxdepth: 1
66

7+
v3.13 (2025-11-07) <https://colmap.github.io/legacy/3.13/index.html>
78
v3.12 (2025-06-30) <https://colmap.github.io/legacy/3.12/index.html>
89
v3.11 (2024-11-28) <https://colmap.github.io/legacy/3.11/index.html>
910
v3.10 (2024-07-23) <https://colmap.github.io/legacy/3.10/index.html>

_sources/pycolmap/index.rst.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ Pre-built wheels for Linux, macOS, and Windows can be installed using pip::
1313
pip install pycolmap
1414

1515
The wheels are automatically built and pushed to `PyPI
16-
<https://pypi.org/project/pycolmap/>`_ at each release. They are currently not
17-
built with CUDA support, which requires building from source. To build PyCOLMAP
18-
from source, follow these steps:
16+
<https://pypi.org/project/pycolmap/>`_ at each release.
17+
To benefit from GPU acceleration, wheels built for CUDA 12 (only for Linux - for now)
18+
are available under the `package pycolmap-cuda12 <https://pypi.org/project/pycolmap-cuda12/)>`_.
19+
20+
To build PyCOLMAP from source, follow these steps:
1921

2022
1. Install COLMAP from source following :ref:`installation`.
2123
2. Build PyCOLMAP:

_sources/rigs.rst.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,11 @@ Next, we sequentially match the frames, since they were captured as a video::
210210

211211
colmap sequential_matcher --database_path terrains/database.db
212212

213+
Depending on the accuracy of the provided sensor_from_rig poses, you can optionally
214+
enable the option `--FeatureMatching.rig_verification 1` or, if you know that the
215+
sensors within the same frame do not have visual overlap, you can enable the option
216+
`--FeatureMatching.skip_image_pairs_in_same_frame 1`.
217+
213218
Finally, we reconstruct the scene using the mapper while keeping the groundtruth
214219
sensor rig poses and camera parameters fixed::
215220

@@ -235,3 +240,6 @@ robust. We provide an example Python script to reconstruct a 360° collection::
235240
--input_image_path image_directory \
236241
--output_path output_directory
237242

243+
Make sure to use the version of the script that corresponds to the version of
244+
COLMAP that you are using, as the script at HEAD is not guaranteed to be
245+
compatible.

_static/documentation_options.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const DOCUMENTATION_OPTIONS = {
2-
VERSION: '3.13.0.dev0 | a5332f46 (2025-07-05)',
2+
VERSION: '3.14.0.dev0 | 5b9a079a (2025-11-14)',
33
LANGUAGE: 'en',
44
COLLAPSE_INDEX: false,
55
BUILDER: 'html',

_static/fonts/Inconsolata-Bold.ttf

107 KB
Binary file not shown.
94.7 KB
Binary file not shown.

_static/fonts/Inconsolata.ttf

61.7 KB
Binary file not shown.

0 commit comments

Comments
 (0)