Skip to content

stabilo

Stabilization settings.

Parameters for Stabilo video stabilization. Optimized for ORB + BF matching with MAGSAC++ estimation on high-altitude BEV drone imagery at ~150 m altitude. Full parameter reference: https://rfonod.github.io/stabilo/usage/#8-configuration-parameters

Generated from geotrax/cfg/default.yaml; every row below is a key of that file with its shipped default and its inline comment.

Image pre-processing

Key Default CLI Description
clahe false Apply Contrast Limited Adaptive Histogram Equalization before feature detection; [true, false]
downsample_ratio 0.5 Resize input frames by this factor before processing; lower = faster but fewer features; (0.0, 1.0]

Feature detector and descriptor

Key Default CLI Description
detector_name 'orb' --stab-detector Feature detector/descriptor; classical: [orb, sift, rsift, brisk, kaze, akaze], learned: [xfeat, disk, dedode, keynet, loftr]
max_features 2000 Maximum keypoints kept per frame, the strongest by response; higher = more robust but slower; [0, inf)
ref_multiplier 2.0 Multiplier applied to max_features for the reference frame only; (0.0, inf)
sift_enable_precise_upscale false SIFT/RSIFT only: precise sub-pixel upscaling at octave -1; [true, false]
rsift_eps 0.00000001 RSIFT only: epsilon added before RootSIFT L1-normalisation (1e-8); > 0.0, keep very small

Feature matching and filtering

Key Default CLI Description
matcher_name 'bf' Matching strategy; choices: [bf (brute-force), flann, lightglue (learned; needs disk/dedode/keynet)]
filter_type 'ratio' Post-match filter; choices: [none, ratio (Lowe), distance]
filter_ratio 0.9 Lowe ratio-test threshold; lower = stricter (fewer but better matches); (0.0, 1.0]

Transformation estimation

Key Default CLI Description
transformation_type 'projective' Geometric model to estimate; choices: [projective, affine]. 'affine' accepts only ransac_method 4 (LMEDS) or 8 (RANSAC)
ransac_method 38 RANSAC method; [4: LMEDS, 8: RANSAC, 16: RHO, 32: USAC-Default (LO-RANSAC), 33: USAC-Parallel (LO-RANSAC), 35: USAC-Fast (LO-RANSAC), 36: USAC-Accurate (GC-RANSAC), 37: PROSAC, 38: MAGSAC++]
ransac_epipolar_threshold 2.0 Reprojection error threshold [px] for RANSAC inlier classification, in the pixels of ransac_threshold_space; (0.0, inf)
ransac_threshold_space 'full' Pixels the threshold is measured in; ['full' (full resolution), 'processed' (downsampled image: threshold / downsample_ratio)]. They agree at downsample_ratio 1.0
ransac_max_iter 5000 Maximum RANSAC iterations; (0, inf]
ransac_confidence 0.999999 Required probability that the best model is correct; (0.0, 1.0]

Foreground mask

Key Default CLI Description
mask_use true Exclude detected vehicle bounding boxes from feature extraction; [true, false]
mask_margin_ratio 0.15 Extra margin around each bounding box mask as a fraction of its size; [0.0, 1.0]

Detector-specific thresholds (BRISK, KAZE, AKAZE): each detects every keypoint whose response exceeds its threshold, then keeps the max_features strongest. The defaults are OpenCV's.

Key Default CLI Description
brisk_threshold 30 BRISK (AGAST) detection threshold; lower = more candidate keypoints; (0, 255]
kaze_threshold 0.001 KAZE detector response threshold; lower = more candidate keypoints; (0.0, inf]
akaze_threshold 0.001 AKAZE detector response threshold; lower = more candidate keypoints; (0.0, inf]

Learning-based (kornia) detector weights; only used when detector_name is one of them. Mind the rotation and memory caveats before switching: see https://rfonod.github.io/geo-trax/guides/feature-detectors/

Key Default CLI Description
loftr_weights 'outdoor' LoFTR pretrained weights; [outdoor, indoor]
loftr_confidence 0.0 LoFTR min. correspondence confidence to keep; [0.0, 1.0] (0.0 keeps all)
disk_weights 'depth' DISK pretrained weights; [depth, epipolar]
dedode_detector_weights 'L-C4-v2' DeDoDe detector weights; [L-upright, L-C4, L-SO2, L-C4-v2]
dedode_descriptor_weights 'B-upright' DeDoDe descriptor weights; [B-upright, G-upright, B-C4, B-SO2, G-C4, G-SO2]

Computation. Two mutually exclusive paths: gpu = OpenCV CUDA (classical detectors, orb only; needs a CUDA-enabled OpenCV build), device = torch device (learning-based detectors only).

Key Default CLI Description
gpu false --stab-gpu, --no-stab-gpu Use GPU-accelerated operations where available; [true, false]
gpu_device_id 0 --stab-gpu-device-id CUDA device index used when gpu is true (multi-GPU machines); [0, inf)
device 'auto' --stab-device Torch device, learned detectors only; ['auto' (cuda > mps > cpu), 'cpu', 'cuda', 'mps']

Diagnostics

Key Default CLI Description
viz false Retain keypoints and match visualizations in memory (for debugging); [true, false]
benchmark false Enable timing benchmarks per frame; [true, false]

Warning thresholds

Key Default CLI Description
min_good_match_count_warning 20 Warn if filtered match count falls below this; [0, inf]
min_inliers_match_count_warning 10 Warn if RANSAC inlier count falls below this; [0, inf]