└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # COLMAP parameters 2 | 3 | 4 | ## Common parameters 5 | Parameters shared by all the commands. 6 |
7 | Show the list of parameters 8 | 9 | **random_seed** (default: 0)\ 10 | Integer to use as the random seed to initialize the random number generator. 11 | 12 | **log_to_stderr** (default: 0) 13 | 14 | **log_level** (default: 2)\ 15 | Possible values: 0 (none), 1 (fatal), 2 (error), 3 (warn), 4 (info)\ 16 | Controls the verbosity of the messages generated by the [FLANN](https://github.com/flann-lib/flann) library functions. 17 | 18 | **database_path**\ 19 | Path to database in which to store the extracted data. 20 | 21 |
22 | 23 | 24 | ## Feature extractor settings 25 | **colmap feature_extractor**: Perform feature extraction or import features for a set of images.\ 26 | Read more: [Feature Detection and Extraction](https://colmap.github.io/tutorial.html#feature-detection-and-extraction) 27 |
28 | Show the list of parameters 29 | 30 | **image_path**\ 31 | Root path to folder which contains the images. 32 | 33 | **camera_mode** (default: -1)\ 34 | Possible values: -1 (UNSET), 0 (AUTO), 1 (SINGLE), 2 (PER_FOLDER), 3 (PER_IMAGE)\ 35 | Optional way to ensure that the camera flags of `ImageReader` are set in an exclusive and unambiguous way. 36 | 37 | **image_list_path**\ 38 | Optional list of images to read. The list must contain the relative path of the images with respect to the image_path. 39 | 40 | **descriptor_normalization** (default: `l1_root`)\ 41 | Possible values: `l1_root`, `l2`\ 42 | Whether to use L1 normalization of each descriptor followed by element-wise square rooting (RootSIFT) or standard L2 normalization.\ 43 | RootSIFT descriptors are usually better than standard SIFT. Proposed in [Three things everyone should know to improve object retrieval](https://www.robots.ox.ac.uk/~vgg/publications/2012/Arandjelovic12/arandjelovic12.pdf), R. Arandjelovic and A. Zisserman, CVPR 2012. 44 | 45 | **ImageReader.mask_path**\ 46 | Optional root path to folder which contains image masks. For a given image, the corresponding mask must have the same sub-path below this root as the image has below image_path. The filename must be equal, aside from the added extension `.png`. For example, for an image `image_path/abc/012.jpg`, the mask would be `mask_path/abc/012.jpg.png`. No features will be extracted in regions where the mask image is black (pixel intensity value 0 in grayscale). 47 | 48 | **ImageReader.camera_model** (default: `SIMPLE_RADIAL`)\ 49 | Possible values: `SIMPLE_PINHOLE`, `PINHOLE`, `SIMPLE_RADIAL`, `RADIAL`, `OPENCV`, `OPENCV_FISHEYE`, `FULL_OPENCV`, `FOV`, `SIMPLE_RADIAL_FISHEYE`, `RADIAL_FISHEYE`, `THIN_PRISM_FISHEYE`\ 50 | Name of the camera model. 51 | See: [Camera Models](https://colmap.github.io/cameras.html) 52 | 53 | **ImageReader.single_camera** (default: 0)\ 54 | Whether to use the same camera for all images. 55 | 56 | **ImageReader.single_camera_per_folder** (default: 0)\ 57 | Whether to use the same camera for all images in the same sub-folder. 58 | 59 | **ImageReader.single_camera_per_image** (default: 0)\ 60 | Whether to use a different camera for each image. 61 | 62 | **ImageReader.existing_camera_id** (default: -1)\ 63 | Whether to explicitly use an existing camera for all images. Note that in this case the specified camera model and parameters are ignored. 64 | 65 | **ImageReader.camera_params**\ 66 | Manual specification of camera parameters. If empty, camera parameters will be extracted from EXIF, i.e. principal point and focal length. 67 | 68 | **ImageReader.default_focal_length_factor** (default: 1.2)\ 69 | If camera parameters are not specified manually and the image does not have focal length EXIF information, the focal length is set to the value `default_focal_length_factor * max(width, height)`. 70 | 71 | **ImageReader.camera_mask_path**\ 72 | Optional path to an image file specifying a mask for all images. No features will be extracted in regions where the mask is black (pixel intensity value 0 in grayscale). 73 | 74 | **SiftExtraction.num_threads** (default: -1)\ 75 | Number of threads for feature extraction. 76 | 77 | **SiftExtraction.use_gpu** (default: 1)\ 78 | Whether to use the GPU for feature extraction. 79 | 80 | **SiftExtraction.gpu_index** (default: -1)\ 81 | Index of the GPU used for feature extraction. For multi-GPU extraction, you should separate multiple GPU indices by comma, e.g. "0,1,2,3". 82 | See: [Multi-GPU support in feature extraction/matching](https://colmap.github.io/faq.html#multi-gpu-support-in-feature-extraction-matching) 83 | 84 | **SiftExtraction.max_image_size** (default: 3200)\ 85 | Maximum image size, otherwise image will be down-scaled. 86 | 87 | **SiftExtraction.max_num_features** (default: 8192)\ 88 | Maximum number of features to detect, keeping larger-scale features. 89 | 90 | **SiftExtraction.first_octave** (default: -1)\ 91 | First octave in the pyramid, i.e. -1 upsamples the image by one level. By convention, the octave of index 0 starts with the image full resolution. Specifying an index greater than 0 starts the scale space at a lower resolution (e.g. 1 halves the resolution). Similarly, specifying a negative index starts the scale space at an higher resolution image, and can be useful to extract very small features (since this is obtained by interpolating the input image, it does not make much sense to go past -1). 92 | 93 | **SiftExtraction.num_octaves** (default: 4)\ 94 | Number of octaves. Increasing the scale by an octave means doubling the size of the smoothing kernel, whose effect is roughly equivalent to halving the image resolution. By default, the scale space spans as many octaves as possible (i.e. roughly `log2(min(width, height))`), which has the effect of searching keypoints of all possible sizes. 95 | 96 | **SiftExtraction.octave_resolution** (default: 3)\ 97 | Number of levels per octave. Each octave is sampled at this given number of intermediate scales. Increasing this number might in principle return more refined keypoints, but in practice can make their selection unstable due to noise. 98 | 99 | **SiftExtraction.peak_threshold** (default: 0.0067)\ 100 | Peak threshold for detection. This is the minimum amount of contrast to accept a keypoint. Increase to eliminate more keypoints. 101 | 102 | **SiftExtraction.edge_threshold** (default: 10)\ 103 | Edge threshold for detection. Decrease to eliminate more keypoints. 104 | 105 | **SiftExtraction.estimate_affine_shape** (default: 0)\ 106 | Estimate affine shape of SIFT features in the form of oriented ellipses as opposed to original SIFT which estimates oriented disks. 107 | 108 | **SiftExtraction.max_num_orientations** (default: 2)\ 109 | Maximum number of orientations per keypoint if not `SiftExtraction.estimate_affine_shape`. 110 | 111 | **SiftExtraction.upright** (default: 0)\ 112 | Fix the orientation to 0 for upright features. 113 | 114 | **SiftExtraction.domain_size_pooling** (default: 0)\ 115 | Enable the more discriminative DSP-SIFT features instead of plain SIFT. Domain-size pooling computes an average SIFT descriptor across multiple scales around the detected scale. DSP-SIFT outperforms standard SIFT in most cases.\ 116 | This was proposed in [Domain-Size Pooling in Local Descriptors: DSP-SIFT](https://arxiv.org/abs/1412.8556), J. Dong and S. Soatto, CVPR 2015. 117 | This has been shown to outperform other SIFT variants and learned descriptors in [Comparative Evaluation of Hand-Crafted and Learned Local Features](https://demuc.de/papers/schoenberger2017comparative.pdf), Schönberger, Hardmeier, Sattler, Pollefeys, CVPR 2016. 118 | 119 | **SiftExtraction.dsp_min_scale** (default: 0.1667)\ 120 | **SiftExtraction.dsp_max_scale** (default: 3)\ 121 | **SiftExtraction.dsp_num_scales** (default: 10)\ 122 | Domain-size pooling parameters. 123 | See: `SiftExtraction.domain_size_pooling` 124 | 125 |
126 | 127 | 128 | ## Exhaustive matcher settings 129 | **colmap exhaustive_matcher**: Performs feature matching after performing feature extraction.\ 130 | Read more: [Feature Matching and Geometric Verification](https://colmap.github.io/tutorial.html#feature-matching-and-geometric-verification) 131 |
132 | Show the list of parameters 133 | 134 | **SiftMatching.num_threads** (default: -1)\ 135 | Number of threads for feature matching and geometric verification. 136 | 137 | **SiftMatching.use_gpu** (default: 1)\ 138 | Whether to use the GPU for feature matching. 139 | 140 | **SiftMatching.gpu_index** (default: -1)\ 141 | Index of the GPU used for feature matching. For multi-GPU matching, you should separate multiple GPU indices by comma, e.g. "0,1,2,3". 142 | See: [Multi-GPU support in feature extraction/matching](https://colmap.github.io/faq.html#multi-gpu-support-in-feature-extraction-matching) 143 | 144 | **SiftMatching.max_ratio** (default: 0.8)\ 145 | Maximum distance ratio between first and second best match. 146 | 147 | **SiftMatching.max_distance** (default: 0.7)\ 148 | Maximum distance to best match. 149 | 150 | **SiftMatching.cross_check** (default: 1)\ 151 | Whether to enable cross checking in matching. 152 | 153 | **SiftMatching.guided_matching** (default: 0)\ 154 | Whether to perform guided matching, if geometric verification succeeds. 155 | 156 | **SiftMatching.max_num_matches** (default: 32768)\ 157 | Maximum number of matches. 158 | 159 | **TwoViewGeometry.min_num_inliers** (default: 15)\ 160 | Minimum number of inliers for an image pair to be considered as geometrically verified. 161 | 162 | **TwoViewGeometry.multiple_models** (default: 0)\ 163 | Whether to attempt to estimate multiple geometric models per image pair. 164 | 165 | **TwoViewGeometry.compute_relative_pose** (default: 0)\ 166 | Whether to estimate the relative pose between the two images and save them to the database. 167 | 168 | **TwoViewGeometry.max_error** (default: 4)\ 169 | Maximum epipolar error in pixels for geometric verification. 170 | 171 | **TwoViewGeometry.confidence** (default: 0.999)\ 172 | Confidence threshold for geometric verification. 173 | 174 | **TwoViewGeometry.max_num_trials** (default: 10000)\ 175 | Maximum number of RANSAC iterations. Note that this option overrules the `TwoViewGeometry.min_inlier_ratio` option. 176 | 177 | **TwoViewGeometry.min_inlier_ratio** (default: 0.25)\ 178 | A priori assumed minimum inlier ratio, which determines the maximum number of iterations. 179 | 180 | **ExhaustiveMatching.block_size** (default: 50)\ 181 | Block size, i.e. number of images to simultaneously load into memory. 182 | 183 |
184 | 185 | 186 | ## Mapper settings 187 | **colmap mapper**: Sparse 3D reconstruction/mapping of the dataset using SfM after performing feature extraction and matching. 188 |
189 | Show the list of parameters 190 | 191 | **Mapper.min_num_matches** (default: 15)\ 192 | The minimum number of matches for inlier matches to be considered. 193 | 194 | **Mapper.ignore_watermarks** (default: 0)\ 195 | Whether to ignore the inlier matches of watermark image pairs. 196 | 197 | **Mapper.multiple_models** (default: 1)\ 198 | Whether to reconstruct multiple sub-models. 199 | 200 | **Mapper.max_num_models** (default: 50)\ 201 | The number of sub-models to reconstruct. 202 | 203 | **Mapper.max_model_overlap** (default: 20)\ 204 | The maximum number of overlapping images between sub-models. If the current sub-models shares more than this number of images with another model, then the reconstruction is stopped. 205 | 206 | **Mapper.min_model_size** (default: 10)\ 207 | The minimum number of registered images of a sub-model, otherwise the sub-model is discarded. 208 | 209 | **Mapper.init_image_id1** (default: -1)\ 210 | **Mapper.init_image_id2** (default: -1)\ 211 | The image identifiers used to initialize the reconstruction. Note that only one or both image identifiers can be specified. In the former case, the second image is automatically determined. 212 | 213 | **Mapper.init_num_trials** (default: 200)\ 214 | The number of trials to initialize the reconstruction. 215 | 216 | **Mapper.extract_colors** (default: 1)\ 217 | Whether to extract colors for reconstructed points. 218 | 219 | **Mapper.num_threads** (default: -1)\ 220 | The number of threads to use during reconstruction. 221 | 222 | **Mapper.min_focal_length_ratio** (default: 0.1)\ 223 | **Mapper.max_focal_length_ratio** (default: 10)\ 224 | **Mapper.max_extra_param** (default: 1)\ 225 | Thresholds for filtering images with degenerate intrinsics. 226 | 227 | **Mapper.ba_refine_focal_length** (default: 1)\ 228 | **Mapper.ba_refine_principal_point** (default: 0)\ 229 | **Mapper.ba_refine_extra_params** (default: 1)\ 230 | Which intrinsic parameters to optimize during the reconstruction. 231 | 232 | **Mapper.ba_local_num_images** (default: 6)\ 233 | The number of images to optimize in local bundle adjustment. 234 | 235 | **Mapper.ba_local_function_tolerance** (default: 0)\ 236 | Ceres solver function tolerance for local bundle adjustment 237 | 238 | **Mapper.ba_local_max_num_iterations** (default: 25)\ 239 | The maximum number of local bundle adjustment iterations. 240 | 241 | **Mapper.ba_global_images_ratio** (default: 1.1)\ 242 | **Mapper.ba_global_points_ratio** (default: 1.1)\ 243 | **Mapper.ba_global_images_freq** (default: 500)\ 244 | **Mapper.ba_global_points_freq** (default: 250000)\ 245 | The growth rates after which to perform global bundle adjustment. 246 | 247 | **Mapper.ba_global_function_tolerance** (default: 0)\ 248 | Ceres solver function tolerance for global bundle adjustment 249 | 250 | **Mapper.ba_global_max_num_iterations** (default: 50)\ 251 | The maximum number of global bundle adjustment iterations. 252 | 253 | **Mapper.ba_global_max_refinements** (default: 5)\ 254 | **Mapper.ba_global_max_refinement_change** (default: 0.0005)\ 255 | **Mapper.ba_local_max_refinements** (default: 2)\ 256 | **Mapper.ba_local_max_refinement_change** (default: 0.001)\ 257 | The thresholds for iterative bundle adjustment refinements. 258 | 259 | **Mapper.ba_use_gpu** (default: 0)\ 260 | Whether to use Ceres' CUDA linear algebra library, if available. 261 | 262 | **Mapper.ba_gpu_index** (default: -1)\ 263 | Index of CUDA GPU to use for BA, if available. 264 | 265 | **Mapper.ba_min_num_residuals_for_cpu_multi_threading** (default: 50000)\ 266 | The minimum number of residuals per bundle adjustment problem to enable multi-threading solving of the problems. 267 | 268 | **Mapper.snapshot_path**\ 269 | Path to a folder with reconstruction snapshots during incremental reconstruction. Snapshots will be saved according to the specified frequency of registered images. 270 | 271 | **Mapper.snapshot_images_freq** (default: 0)\ 272 | 273 | **Mapper.fix_existing_images** (default: 0)\ 274 | If reconstruction is provided as input, fix the existing image poses. 275 | 276 | **Mapper.init_min_num_inliers** (default: 100)\ 277 | Minimum number of inliers for initial image pair. 278 | 279 | **Mapper.init_max_error** (default: 4)\ 280 | Maximum error in pixels for two-view geometry estimation for initial image pair. 281 | 282 | **Mapper.init_max_forward_motion** (default: 0.95)\ 283 | Maximum forward motion for initial image pair. 284 | 285 | **Mapper.init_min_tri_angle** (default: 16)\ 286 | Minimum triangulation angle for initial image pair. 287 | 288 | **Mapper.init_max_reg_trials** (default: 2)\ 289 | Maximum number of trials to use an image for initialization. 290 | 291 | **Mapper.abs_pose_max_error** (default: 12)\ 292 | Maximum reprojection error in absolute pose estimation. 293 | 294 | **Mapper.abs_pose_min_num_inliers** (default: 30)\ 295 | Minimum number of inliers in absolute pose estimation. 296 | 297 | **Mapper.abs_pose_min_inlier_ratio** (default: 0.25)\ 298 | Minimum inlier ratio in absolute pose estimation. 299 | 300 | **Mapper.filter_max_reproj_error** (default: 4)\ 301 | Maximum reprojection error in pixels for observations. 302 | 303 | **Mapper.filter_min_tri_angle** (default: 1.5)\ 304 | Minimum triangulation angle in degrees for stable 3D points. 305 | 306 | **Mapper.max_reg_trials** (default: 3)\ 307 | Maximum number of trials to register an image. 308 | 309 | **Mapper.local_ba_min_tri_angle** (default: 6)\ 310 | Minimum triangulation for images to be chosen in local bundle adjustment. 311 | 312 | **Mapper.tri_max_transitivity** (default: 1)\ 313 | Maximum transitivity to search for correspondences. 314 | 315 | **Mapper.tri_create_max_angle_error** (default: 2)\ 316 | Maximum angular error to create new triangulations. 317 | 318 | **Mapper.tri_continue_max_angle_error** (default: 2)\ 319 | Maximum angular error to continue existing triangulations. 320 | 321 | **Mapper.tri_merge_max_reproj_error** (default: 4)\ 322 | Maximum reprojection error in pixels to merge triangulations. 323 | 324 | **Mapper.tri_complete_max_reproj_error** (default: 4)\ 325 | Maximum reprojection error to complete an existing triangulation. 326 | 327 | **Mapper.tri_complete_max_transitivity** (default: 5)\ 328 | Maximum transitivity for track completion. 329 | 330 | **Mapper.tri_re_max_angle_error** (default: 5)\ 331 | Maximum angular error to re-triangulate under-reconstructed image pairs. 332 | 333 | **Mapper.tri_re_min_ratio** (default: 0.2)\ 334 | Minimum ratio of common triangulations between an image pair over the number of correspondences between that image pair to be considered as under-reconstructed. 335 | 336 | **Mapper.tri_re_max_trials** (default: 1)\ 337 | Maximum number of trials to re-triangulate an image pair. 338 | 339 | **Mapper.tri_min_angle** (default: 1.5)\ 340 | Minimum pairwise triangulation angle for a stable triangulation. If your images are taken from far distance with respect to the scene, you can try to reduce the minimum triangulation angle 341 | 342 | **Mapper.tri_ignore_two_view_tracks** (default: 1)\ 343 | Whether to ignore two-view feature tracks in triangulation, resulting in fewer 3D points than possible. Triangulation of two-view tracks can in rare cases improve the stability of sparse image collections by providing additional constraints in bundle adjustment. 344 | 345 |
346 | 347 | 348 | ## Image undistorter settings 349 | **colmap image_undistorter**: Undistorts images and/or exports them for MVS or to external dense reconstruction software, such as CMVS/PMVS. 350 |
351 | Show the list of parameters 352 | 353 | **blank_pixels** (default: 0)\ 354 | The amount of blank pixels in the undistorted image in the range [0,1]. 355 | 356 | **min_scale** (default: 0.2)\ 357 | Minimum and maximum scale change of camera used to satisfy the blank pixel constraint. 358 | 359 | **max_scale** (default: 2)\ 360 | Minimum and maximum scale change of camera used to satisfy the blank pixel constraint. 361 | 362 | **max_image_size** (default: -1)\ 363 | Maximum image size in terms of width or height of the undistorted camera. 364 | 365 | **roi_min_x** (default: 0)\ 366 | **roi_min_y** (default: 0)\ 367 | **roi_max_x** (default: 1)\ 368 | **roi_max_y** (default: 1)\ 369 | The 4 factors in the range [0,1] that define the ROI (region of interest) in original image. The bounding box pixel coordinates are calculated as `(roi_min_x * Width, roi_min_y * Height)` and `(roi_max_x * Width, roi_max_y * Height)`. 370 | 371 |
372 | 373 | 374 | ## PatchMatch Stereo settings 375 | **colmap patch_match_stereo**: Dense 3D reconstruction/mapping using MVS after running the image_undistorter to initialize the workspace. 376 |
377 | Show the list of parameters 378 | 379 | **PatchMatchStereo.max_image_size** (default: -1)\ 380 | Maximum image size in either dimension. 381 | 382 | **PatchMatchStereo.gpu_index** (default: -1)\ 383 | Index of the GPU used for patch match. For multi-GPU usage, you should separate multiple GPU indices by comma, e.g. "0,1,2,3". 384 | See: [Multi-GPU support in dense reconstruction](https://colmap.github.io/faq.html#multi-gpu-support-in-dense-reconstruction) 385 | 386 | **PatchMatchStereo.depth_min** (default: -1)\ 387 | **PatchMatchStereo.depth_max** (default: -1)\ 388 | Depth range in which to randomly sample depth hypotheses. 389 | 390 | **PatchMatchStereo.window_radius** (default: 5)\ 391 | Half window size to compute NCC photo-consistency cost. 392 | Window radius is to measure the size of a patch concerning how many surrounding pixels should contribute to the reconstruction around a focusing pixel. 393 | 394 | **PatchMatchStereo.window_step** (default: 1)\ 395 | Number of pixels to skip when computing NCC. For a value of 1, every pixel is used to compute the NCC. For larger values, only every n-th row and column is used and the computation speed thereby increases roughly by a factor of `window_step^2`. Note that not all combinations of window sizes and steps produce nice results, especially if the step is greather than 2. 396 | 397 | **PatchMatchStereo.sigma_spatial** (default: -1)\ 398 | **PatchMatchStereo.sigma_color** (default: 0.2)\ 399 | Parameters for bilaterally weighted NCC. 400 | 401 | **PatchMatchStereo.num_samples** (default: 15)\ 402 | Number of random samples to draw in Monte Carlo sampling. 403 | 404 | **PatchMatchStereo.ncc_sigma** (default: 0.6)\ 405 | Spread of the NCC likelihood function. 406 | 407 | **PatchMatchStereo.min_triangulation_angle** (default: 1)\ 408 | Minimum triangulation angle in degrees. 409 | 410 | **PatchMatchStereo.incident_angle_sigma** (default: 0.9)\ 411 | Spread of the incident angle likelihood function. 412 | 413 | **PatchMatchStereo.num_iterations** (default: 5)\ 414 | Number of coordinate descent iterations. Each iteration consists of four sweeps from left to right, top to bottom, and vice versa 415 | 416 | **PatchMatchStereo.geom_consistency** (default: 1)\ 417 | Whether to add a regularized geometric consistency term to the cost function. If true, the `depth_maps` and `normal_maps` must not be null. 418 | 419 | **PatchMatchStereo.geom_consistency_regularizer** (default: 0.3)\ 420 | The relative weight of the geometric consistency term w.r.t. to the photo-consistency term. 421 | 422 | **PatchMatchStereo.geom_consistency_max_cost** (default: 3)\ 423 | Maximum geometric consistency cost in terms of the forward-backward reprojection error in pixels. 424 | 425 | **PatchMatchStereo.filter** (default: 1)\ 426 | Whether to enable filtering. 427 | 428 | **PatchMatchStereo.filter_min_ncc** (default: 0.1)\ 429 | Minimum NCC coefficient for pixel to be photo-consistent. 430 | 431 | **PatchMatchStereo.filter_min_triangulation_angle** (default: 3)\ 432 | Minimum triangulation angle to be stable. 433 | 434 | **PatchMatchStereo.filter_min_num_consistent** (default: 2)\ 435 | Minimum number of source images have to be consistent for pixel not to be filtered. 436 | 437 | **PatchMatchStereo.filter_geom_consistency_max_cost** (default: 1)\ 438 | Maximum forward-backward reprojection error for pixel to be geometrically consistent. 439 | 440 | **PatchMatchStereo.cache_size** (default: 32)\ 441 | Cache size in gigabytes for patch match, which keeps the bitmaps, depth maps, and normal maps of this number of images in memory. A higher value leads to less disk access and faster computation, while a lower value leads to reduced memory usage. Note that a single image can consume a lot of memory, if the consistency graph is dense. 442 | 443 | **PatchMatchStereo.allow_missing_files** (default: 0)\ 444 | Whether to tolerate missing images/maps in the problem setup. 445 | 446 | **PatchMatchStereo.write_consistency_graph** (default: 0)\ 447 | Whether to write the consistency graph. 448 | 449 |
450 | 451 | 452 | ## Stereo fusion settings 453 | **colmap stereo_fusion**: Fusion of `patch_match_stereo` results into to a colored point cloud. 454 |
455 | Show the list of parameters 456 | 457 | **StereoFusion.mask_path**\ 458 | Path for PNG masks. Same format expected as `ImageReaderOptions`. 459 | 460 | **StereoFusion.num_threads** (default: -1)\ 461 | The number of threads to use during fusion. 462 | 463 | **StereoFusion.max_image_size** (default: -1)\ 464 | Maximum image size in either dimension. 465 | 466 | **StereoFusion.min_num_pixels** (default: 5)\ 467 | Minimum number of fused pixels to produce a point. 468 | 469 | **StereoFusion.max_num_pixels** (default: 10000)\ 470 | Maximum number of pixels to fuse into a single point. 471 | 472 | **StereoFusion.max_traversal_depth** (default: 100)\ 473 | Maximum depth in consistency graph traversal. 474 | 475 | **StereoFusion.max_reproj_error** (default: 2)\ 476 | Maximum relative difference between measured and projected pixel. 477 | 478 | **StereoFusion.max_depth_error** (default: 0.01)\ 479 | 480 | **StereoFusion.max_normal_error** (default: 10)\ 481 | Maximum angular difference in degrees of normals of pixels to be fused. 482 | 483 | **StereoFusion.check_num_images** (default: 50)\ 484 | Number of overlapping images to transitively check for fusing points. 485 | 486 | **StereoFusion.cache_size** (default: 32)\ 487 | Cache size in gigabytes for fusion. The fusion keeps the bitmaps, depth maps, normal maps, and consistency graphs of this number of images in memory. A higher value leads to less disk access and faster fusion, while a lower value leads to reduced memory usage. Note that a single image can consume a lot of memory, if the consistency graph is dense. 488 | 489 | **StereoFusion.use_cache** (default: 0)\ 490 | Flag indicating whether to use LRU cache or pre-load all data 491 | 492 |
493 | 494 | 495 | ## Delaunay mesher settings 496 | **colmap delaunay_mesher**: Meshing of the reconstructed sparse or dense point cloud using a graph cut on the Delaunay triangulation and visibility voting. 497 |
498 | Show the list of parameters 499 | 500 | **DelaunayMeshing.max_proj_dist** (default: 20)\ 501 | Unify input points into one cell in the Delaunay triangulation that fall within a reprojected radius of the given pixels. 502 | 503 | **DelaunayMeshing.max_depth_dist** (default: 0.05)\ 504 | Maximum relative depth difference between input point and a vertex of an existing cell in the Delaunay triangulation, otherwise a new vertex is created in the triangulation. 505 | 506 | **DelaunayMeshing.visibility_sigma** (default: 3)\ 507 | The standard deviation of wrt. the number of images seen by each point. Increasing this value decreases the influence of points seen in few images. 508 | 509 | **DelaunayMeshing.distance_sigma_factor** (default: 1)\ 510 | The factor that is applied to the computed distance sigma, which is automatically computed as the 25th percentile of edge lengths. A higher value will increase the smoothness of the surface. 511 | 512 | **DelaunayMeshing.quality_regularization** (default: 1)\ 513 | A higher quality regularization leads to a smoother surface. 514 | 515 | **DelaunayMeshing.max_side_length_factor** (default: 25)\ 516 | **DelaunayMeshing.max_side_length_percentile** (default: 95)\ 517 | Filtering thresholds for outlier surface mesh faces. If the longest side of a mesh face (longest out of 3) exceeds the side lengths of all faces at a certain percentile by the given factor, then it is considered an outlier mesh face and discarded. 518 | 519 | **DelaunayMeshing.num_threads** (default: -1)\ 520 | The number of threads to use for reconstruction. Default is all threads 521 | 522 |
523 | 524 | 525 | ## Poisson mesher settings 526 | **colmap poisson_mesher**: Meshing of the fused point cloud using Poisson surface reconstruction. 527 |
528 | Show the list of parameters 529 | 530 | **PoissonMeshing.point_weight** (default: 1)\ 531 | This floating point value specifies the importance that interpolation of the point samples is given in the formulation of the screened Poisson equation. The results of the original (unscreened) Poisson Reconstruction can be obtained by setting this value to 0. 532 | 533 | **PoissonMeshing.depth** (default: 13)\ 534 | This integer is the maximum depth of the tree that will be used for surface reconstruction. Running at depth d corresponds to solving on a voxel grid whose resolution is no larger than `2^d x 2^d x 2^d`. Note that since the reconstructor adapts the octree to the sampling density, the specified reconstruction depth is only an upper bound. 535 | 536 | **PoissonMeshing.color** (default: 32)\ 537 | If specified, the reconstruction code assumes that the input is equipped with colors and will extrapolate the color values to the vertices of the reconstructed mesh. The floating point value specifies the relative importance of finer color estimates over lower ones. 538 | 539 | **PoissonMeshing.trim** (default: 10)\ 540 | This floating point values specifies the value for mesh trimming. The subset of the mesh with signal value less than the trim value is discarded. 541 | 542 | **PoissonMeshing.num_threads** (default: -1)\ 543 | The number of threads used for the Poisson reconstruction. 544 | 545 |
546 | 547 | 548 | ## Bundle adjuster settings 549 | **colmap bundle_adjuster**: Run global bundle adjustment on a reconstructed scene, e.g., when a refinement of the intrinsics is needed or after running the `image_registrator`. 550 |
551 | Show the list of parameters 552 | 553 | **BundleAdjustment.refine_focal_length** (default: 1)\ 554 | **BundleAdjustment.refine_principal_point** (default: 0)\ 555 | **BundleAdjustment.refine_extra_params** (default: 1)\ 556 | Whether to optimize intrinsic parameters. 557 | 558 | **BundleAdjustment.refine_extrinsics** (default: 1)\ 559 | Whether to optimize extrinsic parameters. 560 | 561 | **BundleAdjustment.use_gpu** (default: 0)\ 562 | Whether to use Ceres' CUDA linear algebra library, if available. 563 | 564 | **BundleAdjustment.gpu_index** (default: -1)\ 565 | Index of CUDA GPU to use for BA, if available. 566 | 567 | **BundleAdjustment.min_num_images_gpu_solver** (default: 50)\ 568 | Minimum number of images to use the GPU solver. 569 | 570 | **BundleAdjustment.min_num_residuals_for_cpu_multi_threading** (default: 50000)\ 571 | The minimum number of residuals per bundle adjustment problem to enable multi-threading solving of the problems. 572 | 573 | **BundleAdjustment.max_num_images_direct_dense_cpu_solver** (default: 50)\ 574 | **BundleAdjustment.max_num_images_direct_sparse_cpu_solver** (default: 1000)\ 575 | Thresholds to switch between direct, sparse, and iterative CPU solvers. 576 | 577 | **BundleAdjustment.max_num_images_direct_dense_gpu_solver** (default: 200)\ 578 | **BundleAdjustment.max_num_images_direct_sparse_gpu_solver** (default: 4000)\ 579 | Thresholds to switch between direct, sparse, and iterative GPU solvers. 580 | 581 | #### [Ceres](http://ceres-solver.org) related settings 582 | `Solver::Options` controls the overall behavior of the solver. 583 | See: [Solving Non-linear Least Squares](http://ceres-solver.org/nnls_solving.html#_CPPv4N5ceres6Solver7OptionsE) 584 | 585 | **BundleAdjustment.max_num_iterations** (default: 100)\ 586 | See: [Solver::Options::max_num_iterations](http://ceres-solver.org/nnls_solving.html#_CPPv4N5ceres6Solver7Options18max_num_iterationsE) 587 | 588 | **BundleAdjustment.max_linear_solver_iterations** (default: 200)\ 589 | See: [Solver::Options::max_linear_solver_iterations](http://ceres-solver.org/nnls_solving.html#_CPPv4N5ceres6Solver7Options28max_linear_solver_iterationsE) 590 | 591 | **BundleAdjustment.function_tolerance** (default: 0)\ 592 | See: [Solver::Options::function_tolerance](http://ceres-solver.org/nnls_solving.html#_CPPv4N5ceres6Solver7Options18function_toleranceE) 593 | 594 | **BundleAdjustment.gradient_tolerance** (default: 0)\ 595 | See: [Solver::Options::gradient_tolerance](http://ceres-solver.org/nnls_solving.html#_CPPv4N5ceres6Solver7Options18gradient_toleranceE) 596 | 597 | **BundleAdjustment.parameter_tolerance** (default: 0)\ 598 | See: [Solver::Options::parameter_tolerance](http://ceres-solver.org/nnls_solving.html#_CPPv4N5ceres6Solver7Options19parameter_toleranceE) 599 | 600 |
601 | --------------------------------------------------------------------------------