Feature Extraction and Matching

COLMAP supports multiple feature extraction and matching algorithms. This page describes how to switch between them using the command-line interface or the graphical user interface.

Feature Extractor Types

The following feature extractor types are available:

  • SIFT: Scale-Invariant Feature Transform (default). The classic and most widely tested feature extractor. Produces 128-dimensional uint8 descriptors.

  • ALIKED: A Lighter Keypoint and Descriptor Extractor. A learned feature extractor that produces floating-point descriptors. Requires ONNX support to be enabled at build time (-DONNX_ENABLED=ON).

To select a feature extractor type via the command-line:

$ colmap feature_extractor \
    --database_path $DATASET_PATH/database.db \
    --image_path $DATASET_PATH/images \
    --FeatureExtraction.type ALIKED_N16ROT \
    --AlikedExtraction.max_num_features 2048

For SIFT (the default), you can omit the type or explicitly set it:

$ colmap feature_extractor \
    --database_path $DATASET_PATH/database.db \
    --image_path $DATASET_PATH/images \
    --FeatureExtraction.type SIFT \
    --SiftExtraction.max_num_features 8192

In the GUI, open Processing > Feature extraction and select the desired tab (SIFT, ALIKED, etc.) before clicking Extract.

Feature Matcher Types

The following feature matcher types are available:

  • SIFT_BRUTEFORCE: Brute-force matching optimized for SIFT descriptors (default). Uses L2 distance with ratio test.

  • ALIKED_BRUTEFORCE: Brute-force matching for ALIKED descriptors. Uses cosine similarity. Requires ONNX support to be enabled at build time.

  • SIFT_LIGHTGLUE: Neural network-based matching using the LightGlue model for SIFT descriptors. This typically produces more matches and higher inlier ratios than brute-force matching, especially for challenging image pairs with large viewpoint or illumination changes. Requires ONNX support to be enabled at build time.

  • ALIKED_LIGHTGLUE: Neural network-based matching using the LightGlue model for ALIKED descriptors. Requires ONNX support to be enabled at build time.

To select a feature matcher type via the command-line:

$ colmap exhaustive_matcher \
    --database_path $DATASET_PATH/database.db \
    --FeatureMatching.type ALIKED_BRUTEFORCE \
    --AlikedMatching.min_cossim 0.85

For SIFT matching (the default):

$ colmap exhaustive_matcher \
    --database_path $DATASET_PATH/database.db \
    --FeatureMatching.type SIFT_BRUTEFORCE \
    --SiftMatching.max_ratio 0.8

In the GUI, open Processing > Feature matching, select any matching tab (Exhaustive, Sequential, etc.), and choose the matcher type from the “Type” dropdown in the shared options section.

Compatible Extractor and Matcher Types

The feature extractor and matcher types should be compatible:

  • Use SIFT extraction with SIFT_BRUTEFORCE or SIFT_LIGHTGLUE matching.

  • Use ALIKED_* extraction with ALIKED_BRUTEFORCE or ALIKED_LIGHTGLUE matching.

Mixing incompatible types (e.g., SIFT features with ALIKED matcher) will result in a runtime error. Do not mix different feature extractor types (e.g., SIFT and ALIKED) in the same database.

ALIKED Model Variants

ALIKED requires an ONNX model file. Several model variants are available with different trade-offs between speed and accuracy:

  • aliked-n16rot: Faster and trained for some viewpoint invariance. 128-dim descriptors.

  • aliked-n32: More expensive but not explicitly trained for viewpoint invariance, 128-dim descriptors.

Specify the model path using --AlikedExtraction.*_model_path. If the path is a URL, COLMAP will automatically download and cache the model. You can download different ALIKED models from the release page at https://github.com/colmap/colmap/releases/