-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathtutorial.html
More file actions
1329 lines (1050 loc) · 74.8 KB
/
Copy pathtutorial.html
File metadata and controls
1329 lines (1050 loc) · 74.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en" data-content_root="./" data-theme="auto">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta property="og:title" content="Tutorial" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://colmap.github.io/tutorial.html" />
<meta property="og:site_name" content="COLMAP" />
<meta property="og:description" content="This tutorial covers the topic of image-based 3D reconstruction by demonstrating the individual processing steps in COLMAP. If you are interested in a more general and mathematical introduction to ..." />
<meta property="og:image" content="https://colmap.github.io/_static/og-image.png" />
<meta property="og:image:alt" content="COLMAP — Structure-from-Motion & Multi-View Stereo" />
<meta name="description" content="This tutorial covers the topic of image-based 3D reconstruction by demonstrating the individual processing steps in COLMAP. If you are interested in a more general and mathematical introduction to ..." />
<meta name="twitter:card" content="summary_large_image" />
<title>Tutorial — COLMAP</title>
<script data-cfasync="false">
document.documentElement.dataset.mode = localStorage.getItem("mode") || "auto";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "auto";
</script>
<!--
this give us a css class that will be invisible only if js is disabled
-->
<noscript>
<style>
.pst-js-only { display: none !important; }
</style>
</noscript>
<!-- Loaded before other Sphinx assets -->
<link href="_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
<link href="_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" />
<link rel="stylesheet" type="text/css" href="_static/sphinx-design.min.css?v=95c83b7e" />
<link rel="stylesheet" type="text/css" href="_static/custom.css?v=c4c8f65a" />
<link rel="stylesheet" type="text/css" href="_static/landing.css?v=1fe38c8d" />
<!-- So that users can add custom icons -->
<script defer src="_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
<!-- Pre-loaded scripts that we'll load fully later -->
<link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
<script src="_static/documentation_options.js?v=7dfdcc52"></script>
<script src="_static/doctools.js?v=fd6eb6e6"></script>
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
<script src="_static/design-tabs.js?v=f930bc37"></script>
<script>DOCUMENTATION_OPTIONS.pagename = 'tutorial';</script>
<script>DOCUMENTATION_OPTIONS.search_as_you_type = false;</script>
<script src="_static/install_selector.js?v=94a4b0a5"></script>
<script src="_static/external_links.js?v=cd4e6f29"></script>
<link rel="canonical" href="https://colmap.github.io/tutorial.html" />
<link rel="icon" href="_static/favicon.svg"/>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Key Concepts" href="concepts.html" />
<link rel="prev" title="Installation" href="install.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
<meta name="docsearch:version" content="4.2.0.dev0 | 4cc7c15 (2026-07-20)" />
<script src="_static/searchtools.js"></script>
<script src="_static/language_data.js"></script>
<script src="searchindex.js"></script>
</head>
<body data-default-mode="auto">
<div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div>
<div id="pst-scroll-pixel-helper"></div>
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
<i class="fa-solid fa-arrow-up"></i>Back to top</button>
<dialog id="pst-search-dialog">
<form class="bd-search d-flex align-items-center"
action="search.html"
method="get">
<i class="fa-solid fa-magnifying-glass"></i>
<input type="search"
class="form-control"
name="q"
placeholder="Search the docs ..."
aria-label="Search the docs ..."
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"/>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
</form>
</dialog>
<div class="pst-async-banner-revealer d-none">
<aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside>
</div>
<header id="pst-header" class="bd-header navbar navbar-expand-lg bd-navbar d-print-none">
<div class="bd-header__inner bd-page-width">
<button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation">
<span class="fa-solid fa-bars"></span>
</button>
<div class=" navbar-header-items__start">
<div class="navbar-item">
<a class="navbar-brand logo" href="index.html">
<img src="_static/colmap-logo.svg" class="logo__image only-light" alt=""/>
<img src="_static/colmap-logo-dark.svg" class="logo__image only-dark pst-js-only" alt=""/>
<p class="title logo__title">COLMAP</p>
</a></div>
</div>
<div class=" navbar-header-items">
<div class="me-auto navbar-header-items__center">
<div class="navbar-item">
<nav>
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item ">
<a class="nav-link nav-internal" href="install.html">
Installation
</a>
</li>
<li class="nav-item current active">
<a class="nav-link nav-internal" href="#">
Tutorial
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="concepts.html">
Key Concepts
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button"
data-bs-toggle="dropdown" aria-expanded="false"
aria-controls="pst-nav-more-links">
More
</button>
<ul id="pst-nav-more-links" class="dropdown-menu">
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="features.html">
Feature Extraction and Matching
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="database.html">
Database Format
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="cameras.html">
Camera Models
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="rigs.html">
Rig Support
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="format.html">
Output Format
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="datasets.html">
Datasets
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="gui.html">
Graphical User Interface
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="cli.html">
Command-line Interface
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="pycolmap/index.html">
PyCOLMAP
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="faq.html">
Frequently Asked Questions
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="changelog.html">
Changelog
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="contribution.html">
Contribution
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="license.html">
License
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="bibliography.html">
Bibliography
</a>
</li>
<li class=" ">
<a class="nav-link dropdown-item nav-internal" href="legacy.html">
Legacy Documentations
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="navbar-header-items__end">
<div class="navbar-item navbar-persistent--container">
<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
</div>
<div class="navbar-item">
<div class="theme-switch-container dropdown pst-js-only" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Color mode">
<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button dropdown-toggle" aria-label="Color mode" data-bs-toggle="dropdown">
<i class="theme-switch fa-solid fa-sun fa-lg fa-fw" data-mode="light" title="Light"></i>
<i class="theme-switch fa-solid fa-moon fa-lg fa-fw" data-mode="dark" title="Dark"></i>
<i class="theme-switch fa-solid fa-circle-half-stroke fa-lg fa-fw" data-mode="auto" title="System Settings"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><button class="dropdown-item d-flex align-items-center theme-change-button" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg fa-fw me-1"></i>System Settings</button></li>
<li><button class="dropdown-item d-flex align-items-center theme-change-button" data-mode="light"><i class="fa-solid fa-sun fa-lg fa-fw me-1"></i>Light</button></li>
<li><button class="dropdown-item d-flex align-items-center theme-change-button" data-mode="dark"><i class="fa-solid fa-moon fa-lg fa-fw me-1"></i>Dark</button></li>
</ul>
</div></div>
<div class="navbar-item"><ul class="navbar-icon-links"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/colmap/colmap" title="GitHub" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-github fa-lg" aria-hidden="true"></i><span class="visually-hidden">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://pypi.org/project/pycolmap/" title="PyPI" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-python fa-lg" aria-hidden="true"></i><span class="visually-hidden">PyPI</span></a>
</li>
<li class="nav-item">
<a href="https://hub.docker.com/r/colmap/colmap" title="Docker Hub" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-docker fa-lg" aria-hidden="true"></i><span class="visually-hidden">Docker Hub</span></a>
</li>
</ul></div>
</div>
</div>
<div class="navbar-persistent--mobile">
<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
</div>
<button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page">
<span class="fa-solid fa-outdent"></span>
</button>
</div>
</header>
<div class="bd-container">
<div class="bd-container__inner bd-page-width">
<dialog id="pst-primary-sidebar-modal"></dialog>
<div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar">
<div class="sidebar-header-items sidebar-primary__section">
<div class="sidebar-header-items__center">
<div class="navbar-item">
<nav>
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item ">
<a class="nav-link nav-internal" href="install.html">
Installation
</a>
</li>
<li class="nav-item current active">
<a class="nav-link nav-internal" href="#">
Tutorial
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="concepts.html">
Key Concepts
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="features.html">
Feature Extraction and Matching
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="database.html">
Database Format
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="cameras.html">
Camera Models
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="rigs.html">
Rig Support
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="format.html">
Output Format
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="datasets.html">
Datasets
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="gui.html">
Graphical User Interface
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="cli.html">
Command-line Interface
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="pycolmap/index.html">
PyCOLMAP
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="faq.html">
Frequently Asked Questions
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="changelog.html">
Changelog
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="contribution.html">
Contribution
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="license.html">
License
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="bibliography.html">
Bibliography
</a>
</li>
<li class="nav-item ">
<a class="nav-link nav-internal" href="legacy.html">
Legacy Documentations
</a>
</li>
</ul>
</nav></div>
</div>
<div class="sidebar-header-items__end">
<div class="navbar-item">
<div class="theme-switch-container dropdown pst-js-only" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Color mode">
<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button dropdown-toggle" aria-label="Color mode" data-bs-toggle="dropdown">
<i class="theme-switch fa-solid fa-sun fa-lg fa-fw" data-mode="light" title="Light"></i>
<i class="theme-switch fa-solid fa-moon fa-lg fa-fw" data-mode="dark" title="Dark"></i>
<i class="theme-switch fa-solid fa-circle-half-stroke fa-lg fa-fw" data-mode="auto" title="System Settings"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><button class="dropdown-item d-flex align-items-center theme-change-button" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg fa-fw me-1"></i>System Settings</button></li>
<li><button class="dropdown-item d-flex align-items-center theme-change-button" data-mode="light"><i class="fa-solid fa-sun fa-lg fa-fw me-1"></i>Light</button></li>
<li><button class="dropdown-item d-flex align-items-center theme-change-button" data-mode="dark"><i class="fa-solid fa-moon fa-lg fa-fw me-1"></i>Dark</button></li>
</ul>
</div></div>
<div class="navbar-item"><ul class="navbar-icon-links"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/colmap/colmap" title="GitHub" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-github fa-lg" aria-hidden="true"></i><span class="visually-hidden">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://pypi.org/project/pycolmap/" title="PyPI" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-python fa-lg" aria-hidden="true"></i><span class="visually-hidden">PyPI</span></a>
</li>
<li class="nav-item">
<a href="https://hub.docker.com/r/colmap/colmap" title="Docker Hub" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-docker fa-lg" aria-hidden="true"></i><span class="visually-hidden">Docker Hub</span></a>
</li>
</ul></div>
</div>
</div>
<div class="sidebar-primary-items__start sidebar-primary__section">
<div class="sidebar-primary-item pst-sidebar-collapse"><button id="pst-collapse-sidebar-button" aria-expanded="true" aria-controls="pst-primary-sidebar">
<svg class="pst-icon" role="img" aria-hidden="true" focusable="false" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M3 15.5C2.36232 15.5 1.74874 15.2564 1.28478 14.8189C0.820828 14.3815 0.541576 13.7832 0.504167 13.1467L0.5 13L0.5 3C0.499965 2.36232 0.743605 1.74874 1.18107 1.28478C1.61854 0.820828 2.21676 0.541576 2.85333 0.504167L3 0.5L13 0.5C13.6377 0.499965 14.2513 0.743605 14.7152 1.18107C15.1792 1.61854 15.4584 2.21676 15.4958 2.85333L15.5 3L15.5 13C15.5 13.6377 15.2564 14.2513 14.8189 14.7152C14.3815 15.1792 13.7832 15.4584 13.1467 15.4958L13 15.5L3 15.5ZM3 13.8333L10.5 13.8333L10.5 2.16667L3 2.16667C2.79589 2.16669 2.59889 2.24163 2.44636 2.37726C2.29383 2.5129 2.19638 2.69979 2.1725 2.9025L2.16667 3L2.16667 13C2.16669 13.2041 2.24163 13.4011 2.37726 13.5536C2.5129 13.7062 2.69979 13.8036 2.9025 13.8275L3 13.8333ZM6.65583 10.325L6.5775 10.2558L4.91083 8.58917C4.76735 8.44567 4.68116 8.25476 4.66843 8.05223C4.65569 7.84971 4.71729 7.6495 4.84167 7.48917L4.91083 7.41083L6.5775 5.74417C6.72747 5.59471 6.9287 5.50794 7.14032 5.50148C7.35194 5.49502 7.55809 5.56935 7.7169 5.70937C7.8757 5.8494 7.97525 6.04463 7.99533 6.25539C8.01541 6.46616 7.95451 6.67667 7.825 6.84417L7.75583 6.9225L6.67917 8L7.75583 9.0775C7.89931 9.22099 7.98551 9.41191 7.99824 9.61443C8.01097 9.81695 7.94938 10.0172 7.825 10.1775L7.75583 10.2558C7.61234 10.3993 7.42142 10.4855 7.2189 10.4982C7.01638 10.511 6.81617 10.4494 6.65583 10.325Z"/>
</svg>
<span class="pst-collapse-sidebar-label">Collapse Sidebar</span>
<span class="pst-expand-sidebar-label">Expand Sidebar</span>
</button></div>
<div class="sidebar-primary-item">
<nav class="bd-docs-nav bd-links"
aria-label="Section Navigation">
<p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p>
<div class="bd-toc-item navbar-nav"></div>
</nav></div>
</div>
<div class="sidebar-primary-items__end sidebar-primary__section">
<div class="sidebar-primary-item">
<div id="ethical-ad-placement"
class="flat"
data-ea-publisher="readthedocs"
data-ea-type="readthedocs-sidebar"
data-ea-manual="true">
</div></div>
</div>
</div>
<main id="main-content" class="bd-main" role="main">
<div class="bd-content">
<div class="bd-article-container">
<div class="bd-header-article d-print-none">
<div class="header-article-items header-article__inner">
<div class="header-article-items__start">
<div class="header-article-item">
<nav aria-label="Breadcrumb" class="d-print-none">
<ul class="bd-breadcrumbs">
<li class="breadcrumb-item breadcrumb-home">
<a href="index.html" class="nav-link" aria-label="Home">
<i class="fa-solid fa-home"></i>
</a>
</li>
<li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Tutorial</span></li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="searchbox"></div>
<article class="bd-article">
<section id="tutorial">
<span id="id1"></span><h1>Tutorial<a class="headerlink" href="#tutorial" title="Link to this heading">#</a></h1>
<p>This tutorial covers the topic of image-based 3D reconstruction by demonstrating
the individual processing steps in COLMAP. If you are interested in a more
general and mathematical introduction to the topic of image-based 3D
reconstruction, please also refer to the <a class="reference external" href="https://demuc.de/tutorials/cvpr2017/">CVPR 2017 Tutorial on Large-scale 3D
Modeling from Crowdsourced Data</a> and
<a class="reference internal" href="bibliography.html#schoenberger-thesis" id="id2"><span>[schoenberger_thesis]</span></a>.</p>
<p>Image-based 3D reconstruction from images traditionally first recovers a sparse
representation of the scene and the camera poses of the input images using
Structure-from-Motion. This output then serves as the input to Multi-View Stereo
to recover a dense representation of the scene.</p>
<nav class="contents local" id="contents">
<p class="topic-title">Contents</p>
<ul class="simple">
<li><p><a class="reference internal" href="#quickstart" id="id23">Quickstart</a></p></li>
<li><p><a class="reference internal" href="#preface" id="id24">Preface</a></p></li>
<li><p><a class="reference internal" href="#structure-from-motion" id="id25">Structure-from-Motion</a></p></li>
<li><p><a class="reference internal" href="#multi-view-stereo" id="id26">Multi-View Stereo</a></p></li>
<li><p><a class="reference internal" href="#terminology" id="id27">Terminology</a></p></li>
<li><p><a class="reference internal" href="#data-structure" id="id28">Data Structure</a></p></li>
<li><p><a class="reference internal" href="#feature-detection-and-extraction" id="id29">Feature Detection and Extraction</a></p></li>
<li><p><a class="reference internal" href="#feature-matching-and-geometric-verification" id="id30">Feature Matching and Geometric Verification</a></p></li>
<li><p><a class="reference internal" href="#sparse-reconstruction" id="id31">Sparse Reconstruction</a></p></li>
<li><p><a class="reference internal" href="#importing-and-exporting" id="id32">Importing and Exporting</a></p></li>
<li><p><a class="reference internal" href="#dense-reconstruction" id="id33">Dense Reconstruction</a></p></li>
<li><p><a class="reference internal" href="#database-management" id="id34">Database Management</a></p></li>
<li><p><a class="reference internal" href="#graphical-and-command-line-interface" id="id35">Graphical and Command-line Interface</a></p></li>
</ul>
</nav>
<section id="quickstart">
<span id="quick-start"></span><h2><a class="toc-backref" href="#id23" role="doc-backlink">Quickstart</a><a class="headerlink" href="#quickstart" title="Link to this heading">#</a></h2>
<p>First, start the graphical user interface of COLMAP, as described <a class="reference internal" href="gui.html#gui"><span class="std std-ref">here</span></a>. COLMAP provides an automatic reconstruction tool that simply takes
a folder of input images and produces a sparse and dense reconstruction in a
workspace folder. Click <code class="docutils literal notranslate"><span class="pre">Reconstruction</span> <span class="pre">></span> <span class="pre">Automatic</span> <span class="pre">Reconstruction</span></code> in the GUI
and specify the relevant options. The output is written to the workspace folder.
For example, if your images are located in <code class="docutils literal notranslate"><span class="pre">path/to/project/images</span></code>, you could
select <code class="docutils literal notranslate"><span class="pre">path/to/project</span></code> as a workspace folder and after running the automatic
reconstruction tool, the folder would look similar to this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>+── images
│ +── image1.jpg
│ +── image2.jpg
│ +── ...
+── sparse
│ +── 0
│ │ +── rigs.bin
│ │ +── cameras.bin
│ │ +── frames.bin
│ │ +── images.bin
│ │ +── points3D.bin
│ +── ...
+── dense
│ +── 0
│ │ +── images
│ │ +── sparse
│ │ +── stereo
│ │ +── fused.ply
│ │ +── meshed-poisson.ply
│ │ +── meshed-delaunay.ply
│ │ +── meshed-advancing-front.ply
│ +── ...
+── database.db
</pre></div>
</div>
<p>Here, the <code class="docutils literal notranslate"><span class="pre">path/to/project/sparse</span></code> contains the sparse models for all
reconstructed components, while <code class="docutils literal notranslate"><span class="pre">path/to/project/dense</span></code> contains their
corresponding dense models. The dense point cloud <code class="docutils literal notranslate"><span class="pre">fused.ply</span></code> can be imported
in COLMAP using <code class="docutils literal notranslate"><span class="pre">File</span> <span class="pre">></span> <span class="pre">Import</span> <span class="pre">from</span> <span class="pre">...</span></code>, while the dense mesh must be
visualized with an external viewer such as Meshlab.</p>
<p>The same automatic reconstruction can be run from the command-line, without the
GUI, using the <code class="docutils literal notranslate"><span class="pre">automatic_reconstructor</span></code> command, which produces the identical
workspace layout shown above:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">colmap</span> <span class="n">automatic_reconstructor</span> \\
<span class="o">--</span><span class="n">workspace_path</span> <span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">project</span> \\
<span class="o">--</span><span class="n">image_path</span> <span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">project</span><span class="o">/</span><span class="n">images</span>
</pre></div>
</div>
<p>The following sections give general recommendations and describe the
reconstruction process in more detail, if you need more control over the
reconstruction process/parameters or if you are interested in the underlying
technology in COLMAP.</p>
</section>
<section id="preface">
<h2><a class="toc-backref" href="#id24" role="doc-backlink">Preface</a><a class="headerlink" href="#preface" title="Link to this heading">#</a></h2>
<p>COLMAP requires only a few steps to perform a standard reconstruction for a
general user. For more experienced users, the program exposes many different parameters,
only some of which are intuitive to a beginner. The program should usually work
without the need to modify any parameters. The defaults are chosen as a trade-
off between reconstruction robustness/quality and speed. You can set “optimal”
options for different reconstruction scenarios by choosing <code class="docutils literal notranslate"><span class="pre">Extras</span> <span class="pre">></span> <span class="pre">Set</span>
<span class="pre">options</span> <span class="pre">for</span> <span class="pre">...</span> <span class="pre">data</span></code>. If in doubt what settings to choose, stick to the
defaults. The source code contains more documentation about all parameters.</p>
<p>COLMAP is research software, and in rare cases it may exit ungracefully if some
constraints are not fulfilled. In this case, the program prints a traceback to
stderr. To see this traceback or more debug information, it is recommended to
run the executables (including the GUI) from the command-line, where you can
also define various levels of logging verbosity.</p>
</section>
<section id="structure-from-motion">
<h2><a class="toc-backref" href="#id25" role="doc-backlink">Structure-from-Motion</a><a class="headerlink" href="#structure-from-motion" title="Link to this heading">#</a></h2>
<figure class="align-center align-default" id="id22">
<img alt="Incremental Structure-from-Motion pipeline" src="_images/incremental-sfm.webp" />
<figcaption>
<p><span class="caption-text">COLMAP’s incremental Structure-from-Motion pipeline.</span><a class="headerlink" href="#id22" title="Link to this image">#</a></p>
</figcaption>
</figure>
<p>Structure-from-Motion (SfM) is the process of reconstructing 3D structure from
its projections into a series of images. The input is a set of overlapping
images of the same object, taken from different viewpoints. The output is a 3-D
reconstruction of the object, and the reconstructed intrinsic and extrinsic
camera parameters of all images. Typically, Structure-from-Motion systems divide
this process into three stages:</p>
<ol class="arabic simple">
<li><p>Feature detection and extraction</p></li>
<li><p>Feature matching and geometric verification</p></li>
<li><p>Structure and motion reconstruction</p></li>
</ol>
<p>COLMAP reflects these stages in different modules that can be combined
depending on the application. More information on Structure-from-Motion in
general and the algorithms in COLMAP can be found in <a class="reference internal" href="bibliography.html#schoenberger16sfm" id="id3"><span>[schoenberger16sfm]</span></a> and
<a class="reference internal" href="bibliography.html#schoenberger16mvs" id="id4"><span>[schoenberger16mvs]</span></a>.</p>
<p>If you have control over the picture capture process, please follow these
guidelines for optimal reconstruction results:</p>
<ul class="simple">
<li><p>Capture images with <strong>good texture</strong>. Avoid completely texture-less images
(e.g., a white wall or empty desk). If the scene does not contain enough
texture itself, you could place additional background objects, such as
posters, etc.</p></li>
<li><p>Capture images at <strong>similar illumination</strong> conditions. Avoid high dynamic
range scenes (e.g., pictures against the sun with shadows or pictures
through doors/windows). Avoid specularities on shiny surfaces.</p></li>
<li><p>Capture images with <strong>high visual overlap</strong>. Make sure that each object is
seen in at least 3 images – the more images the better.</p></li>
<li><p>Capture images from <strong>different viewpoints</strong>. Do not take images from the
same location by only rotating the camera, e.g., make a few steps after each
shot. At the same time, try to have enough images from a relatively similar
viewpoint. Note that more images are not necessarily better and might lead to a
slow reconstruction process. If you use a video as input, consider
down-sampling the frame rate.</p></li>
</ul>
</section>
<section id="multi-view-stereo">
<h2><a class="toc-backref" href="#id26" role="doc-backlink">Multi-View Stereo</a><a class="headerlink" href="#multi-view-stereo" title="Link to this heading">#</a></h2>
<p>Multi-View Stereo (MVS) takes the output of SfM to compute depth and/or normal
information for every pixel in an image. Fusion of the depth and normal maps of
multiple images in 3D then produces a dense point cloud of the scene. Using the
depth and normal information of the fused point cloud, algorithms such as the
(screened) Poisson surface reconstruction <a class="reference internal" href="bibliography.html#kazhdan2013" id="id5"><span>[kazhdan2013]</span></a> or the advancing front
surface reconstruction <a class="reference internal" href="bibliography.html#cohen-steiner2004" id="id6"><span>[cohen-steiner2004]</span></a> can then recover the 3D surface
geometry of the scene. The resulting meshes can optionally be simplified
using Quadric Error Metric (QEM) decimation <a class="reference internal" href="bibliography.html#garland1997" id="id7"><span>[garland1997]</span></a> to reduce their
complexity while preserving shape and appearance. Additionally, the meshes can
be textured using multi-view texture mapping <a class="reference internal" href="bibliography.html#waechter2014" id="id8"><span>[waechter2014]</span></a>, which assigns each
face to the best-view camera image and produces a texture atlas with UV
coordinates. More information on Multi-View Stereo in general and the algorithms
in COLMAP can be found in <a class="reference internal" href="bibliography.html#schoenberger16mvs" id="id9"><span>[schoenberger16mvs]</span></a>.</p>
</section>
<section id="terminology">
<h2><a class="toc-backref" href="#id27" role="doc-backlink">Terminology</a><a class="headerlink" href="#terminology" title="Link to this heading">#</a></h2>
<p>The term <strong>camera</strong> refers to a physical camera using the same zoom factor and
lens. A camera defines the intrinsic projection model in
COLMAP. A single camera can take multiple images with the same resolution,
intrinsic parameters, and distortion characteristics. The term <strong>image</strong> is
associated with a bitmap file, e.g., a JPEG or PNG file on disk. COLMAP detects
<strong>keypoints</strong> in each image whose appearance is described by numerical
<strong>descriptors</strong>. Pure appearance-based correspondences between
keypoints/descriptors are defined by <strong>matches</strong>, while <strong>inlier matches</strong> are
geometrically verified and used for the reconstruction procedure.</p>
<p>The term <strong>rig</strong> describes a fixed assembly of one or more cameras whose relative
poses are constant over time, e.g., a stereo or multi-camera setup, or a single
moving camera (a trivial rig with one camera). The term <strong>frame</strong> denotes a
single snapshot in time, i.e., the set of images captured simultaneously by all
cameras of a rig. A frame therefore groups images that share the same rig pose,
and COLMAP optimizes one pose per frame rather than one pose per image. Rigs and
frames are stored as <code class="docutils literal notranslate"><span class="pre">rigs.bin</span></code> and <code class="docutils literal notranslate"><span class="pre">frames.bin</span></code> in the reconstruction output
(see <a class="reference internal" href="rigs.html#rig-support"><span class="std std-ref">Rig Support</span></a> and <a class="reference internal" href="format.html#output-format"><span class="std std-ref">Output Format</span></a>).</p>
</section>
<section id="data-structure">
<h2><a class="toc-backref" href="#id28" role="doc-backlink">Data Structure</a><a class="headerlink" href="#data-structure" title="Link to this heading">#</a></h2>
<p>COLMAP assumes that all input images are in one input directory with potentially
nested sub-directories. It recursively considers all images stored in this
directory, and it supports various image formats through OpenImageIO. Other
files are automatically ignored. If high performance is a requirement, then you
should separate any files that are not images. Images are identified uniquely by
their relative file path. For later processing, such as image undistortion or
dense reconstruction, the relative folder structure should be preserved. COLMAP
does not modify the input images or directory and all extracted data is stored
in a single, self-contained SQLite database file (see <a class="reference internal" href="database.html"><span class="doc">Database Format</span></a>).</p>
<p>The first step is to start the graphical user interface of COLMAP by running the
pre-built binaries (Windows: <code class="docutils literal notranslate"><span class="pre">COLMAP.bat</span></code>, Mac: <code class="docutils literal notranslate"><span class="pre">COLMAP.app</span></code>) or by executing
<code class="docutils literal notranslate"><span class="pre">./src/colmap/exe/colmap</span> <span class="pre">gui</span></code> from the CMake build folder. Next, create a new project
by choosing <code class="docutils literal notranslate"><span class="pre">File</span> <span class="pre">></span> <span class="pre">New</span> <span class="pre">project</span></code>. In this dialog, you must select where to
store the database and the folder that contains the input images. For
convenience, you can save the entire project settings to a configuration file by
choosing <code class="docutils literal notranslate"><span class="pre">File</span> <span class="pre">></span> <span class="pre">Save</span> <span class="pre">project</span></code>. The project configuration stores the absolute
path information of the database and image folder in addition to any other
parameter settings. If you decide to move the database or image folder, you must
change the paths accordingly by creating a new project. Alternatively, the
resulting <code class="docutils literal notranslate"><span class="pre">.ini</span></code> configuration file can be directly modified in a text editor of
your choice. To reopen an existing project, you can simply open the
configuration file by choosing <code class="docutils literal notranslate"><span class="pre">File</span> <span class="pre">></span> <span class="pre">Open</span> <span class="pre">project</span></code> and all parameter
settings should be recovered. Note that all COLMAP executables can be started
from the command-line by either specifying individual settings as command-line
arguments or by providing the path to the project configuration file (see
<a class="reference internal" href="#interface"><span class="std std-ref">Interface</span></a>).</p>
<p>An example folder structure could look like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/path/to/project/...
+── images
│ +── image1.jpg
│ +── image2.jpg
│ +── ...
│ +── imageN.jpg
+── database.db
+── project.ini
</pre></div>
</div>
<p>In this example, you would select <code class="docutils literal notranslate"><span class="pre">/path/to/project/images</span></code> as the image folder
path, <code class="docutils literal notranslate"><span class="pre">/path/to/project/database.db</span></code> as the database file path, and save the
project configuration to <code class="docutils literal notranslate"><span class="pre">/path/to/project/project.ini</span></code>.</p>
</section>
<section id="feature-detection-and-extraction">
<h2><a class="toc-backref" href="#id29" role="doc-backlink">Feature Detection and Extraction</a><a class="headerlink" href="#feature-detection-and-extraction" title="Link to this heading">#</a></h2>
<p>In the first step, feature detection/extraction finds sparse feature points in
the image and describes their appearance using a numerical descriptor. COLMAP
imports images and performs feature detection/extraction in a single step, so
that each image is loaded from disk only once.</p>
<p>Next, choose <code class="docutils literal notranslate"><span class="pre">Processing</span> <span class="pre">></span> <span class="pre">Extract</span> <span class="pre">features</span></code>. In this dialog, you must first
decide on the intrinsic camera model to use. You can either automatically
extract focal length information from the embedded EXIF information or manually
specify intrinsic parameters, e.g., as obtained in a lab calibration. If an
image has partial EXIF information, COLMAP tries to find the missing camera
specifications in a large database of camera models automatically. If all your
images were captured by the same physical camera with identical zoom factor, it
is recommended to share intrinsics between all images. Note that the program
will exit ungracefully if the same camera model is shared among all images but
not all images have the same size or EXIF focal length. If you have several
groups of images that share the same intrinsic camera parameters, you can easily
modify the camera models at a later point as well (see <a class="reference internal" href="#database-management"><span class="std std-ref">Database Management</span></a>). If in doubt what to choose in this step, simply stick
to the default parameters.</p>
<p>You can either detect and extract new features from the images or import
existing features from text files. By default, COLMAP extracts SIFT <a class="reference internal" href="bibliography.html#lowe04" id="id10"><span>[lowe04]</span></a>
features either on the GPU or the CPU. When COLMAP is built with CUDA support
(recommended), GPU feature extraction runs without an attached display and is
suitable for headless servers. The OpenGL-based fallback (used when CUDA is not
available) instead requires an attached display, so on such systems the CPU
version is recommended for use on a server. In general, the GPU version is
favorable, as it has a customized feature detection mode that often produces
higher-quality features for high-contrast images.
COLMAP also supports ALIKED feature extraction, a learned feature extractor
using ONNX models, which can be selected via the <code class="docutils literal notranslate"><span class="pre">--FeatureExtraction.type</span></code>
option (see <a class="reference internal" href="features.html#features"><span class="std std-ref">Feature Extraction and Matching</span></a> for details). If
you import existing features, every image must have a text file next to it (e.g.,
<code class="docutils literal notranslate"><span class="pre">/path/to/image1.jpg</span></code> and <code class="docutils literal notranslate"><span class="pre">/path/to/image1.jpg.txt</span></code>) in the following format:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">NUM_FEATURES</span> <span class="mi">128</span>
<span class="n">X</span> <span class="n">Y</span> <span class="n">SCALE</span> <span class="n">ORIENTATION</span> <span class="n">D_1</span> <span class="n">D_2</span> <span class="n">D_3</span> <span class="o">...</span> <span class="n">D_128</span>
<span class="o">...</span>
<span class="n">X</span> <span class="n">Y</span> <span class="n">SCALE</span> <span class="n">ORIENTATION</span> <span class="n">D_1</span> <span class="n">D_2</span> <span class="n">D_3</span> <span class="o">...</span> <span class="n">D_128</span>
</pre></div>
</div>
<p>where <code class="docutils literal notranslate"><span class="pre">X,</span> <span class="pre">Y,</span> <span class="pre">SCALE,</span> <span class="pre">ORIENTATION</span></code> are floating point numbers and <code class="docutils literal notranslate"><span class="pre">D_1...D_128</span></code>
values in the range <code class="docutils literal notranslate"><span class="pre">0...255</span></code>. The file should have <code class="docutils literal notranslate"><span class="pre">NUM_FEATURES</span></code> lines with
one line per feature. For example, if an image has 4 features, then the text
file should look something like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">4</span> <span class="mi">128</span>
<span class="mf">1.2</span> <span class="mf">2.3</span> <span class="mf">0.1</span> <span class="mf">0.3</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="o">...</span> <span class="mi">21</span>
<span class="mf">2.2</span> <span class="mf">3.3</span> <span class="mf">1.1</span> <span class="mf">0.3</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">2</span> <span class="o">...</span> <span class="mi">32</span>
<span class="mf">0.2</span> <span class="mf">1.3</span> <span class="mf">1.1</span> <span class="mf">0.3</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">2</span> <span class="o">...</span> <span class="mi">2</span>
<span class="mf">1.2</span> <span class="mf">2.3</span> <span class="mf">1.1</span> <span class="mf">0.3</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">2</span> <span class="o">...</span> <span class="mi">3</span>
</pre></div>
</div>
<p>Note that by convention the upper left corner of an image has coordinate
<code class="docutils literal notranslate"><span class="pre">(0,</span> <span class="pre">0)</span></code> and the center of the upper left most pixel has coordinate
<code class="docutils literal notranslate"><span class="pre">(0.5,</span> <span class="pre">0.5)</span></code>. If you must import features for large image collections, it is
much more efficient to directly access the database with your favorite scripting
language (see
<a class="reference internal" href="database.html#database-format"><span class="std std-ref">Database Format</span></a>).</p>
<p>If you are done setting all options, choose <code class="docutils literal notranslate"><span class="pre">Extract</span></code> and wait for the
extraction to finish or cancel. If you cancel during the extraction process, the
next time you start extracting images for the same project, COLMAP automatically
continues where it left off. This also allows you to add images to an existing
project/reconstruction. In this case, be sure to verify the camera parameters
when using shared intrinsics.</p>
<p>All extracted data will be stored in the database file and can be
reviewed/managed in the database management tool (see <a class="reference internal" href="#database-management"><span class="std std-ref">Database Management</span></a>) or, for experts, directly modified using SQLite (see
<a class="reference internal" href="database.html#database-format"><span class="std std-ref">Database Format</span></a>).</p>
</section>
<section id="feature-matching-and-geometric-verification">
<h2><a class="toc-backref" href="#id30" role="doc-backlink">Feature Matching and Geometric Verification</a><a class="headerlink" href="#feature-matching-and-geometric-verification" title="Link to this heading">#</a></h2>
<p>In the second step, feature matching and geometric verification finds
correspondences between the feature points in different images.</p>
<p>Please choose <code class="docutils literal notranslate"><span class="pre">Processing</span> <span class="pre">></span> <span class="pre">Feature</span> <span class="pre">matching</span></code> and select one of the provided
matching modes, which are intended for different input scenarios:</p>
<ul>
<li><p><strong>Exhaustive Matching</strong>: If the number of images in your dataset is
relatively low (up to several hundreds), this matching mode should be fast
enough and lead to the best reconstruction results. Here, every image is
matched against every other image, while the block size determines how many
images are loaded from disk into memory at the same time.</p></li>
<li><p><strong>Sequential Matching</strong>: This mode is useful if the images are acquired in
sequential order, e.g., by a video camera. In this case, consecutive frames
have visual overlap and there is no need to match all image pairs
exhaustively. Instead, consecutively captured images are matched against each
other. This matching mode has built-in loop detection based on a vocabulary
tree, where every N-th image (<code class="docutils literal notranslate"><span class="pre">--SequentialMatching.loop_detection_period</span></code>)
is matched against its visually most similar images
(<code class="docutils literal notranslate"><span class="pre">--SequentialMatching.loop_detection_num_images</span></code>). Note that image
file names must be ordered sequentially (e.g., <code class="docutils literal notranslate"><span class="pre">image0001.jpg</span></code>,
<code class="docutils literal notranslate"><span class="pre">image0002.jpg</span></code>, etc.). The order in the database is not relevant, since the
images are explicitly ordered according to their file names. Note that loop
detection requires a pre-trained vocabulary tree. A default tree will be
automatically downloaded and cached. More trees are available and can be
downloaded from <a class="reference external" href="https://demuc.de/colmap/">https://demuc.de/colmap/</a>. In case rigs and frames are
configured appropriately in the database, sequential matching will
automatically match all images in consecutive frames against each other.</p></li>
<li><p><strong>Vocabulary Tree Matching</strong>: In this matching mode <a class="reference internal" href="bibliography.html#schoenberger16vote" id="id11"><span>[schoenberger16vote]</span></a>,
every image is matched against its visual nearest neighbors using a vocabulary
tree with spatial re-ranking. This is the recommended matching mode for large
image collections (several thousands). This requires a pre-trained vocabulary
tree, that can be downloaded from <a class="reference external" href="https://demuc.de/colmap/">https://demuc.de/colmap/</a>.</p></li>
<li><p><strong>Spatial Matching</strong>: This matching mode matches every image against its
spatial nearest neighbors. Spatial locations can be manually set in the
database management. By default, COLMAP also extracts GPS information from
EXIF and uses it for spatial nearest neighbor search. If accurate prior
location information is available, this is the recommended matching mode.</p></li>
<li><p><strong>Transitive Matching</strong>: This matching mode uses the transitive relations of
already existing feature matches to produce a more complete matching graph.
If an image A matches to an image B and B matches to C, then this matcher
attempts to match A to C directly.</p></li>
<li><p><strong>Custom Matching</strong>: This mode allows you to specify individual image pairs for
matching or to import individual feature matches. To specify image pairs, you