---
title: "Configuration"
description: "Customize Image Matching WebUI behavior with YAML configuration"
---
# Configuration
Image Matching WebUI uses YAML configuration files to customize behavior and default parameters.
## Configuration File Location
Configuration files are loaded in priority order (first found):
1. **Custom path**: `-c /path/to/config.yaml`
2. **Working directory**: `./app.yaml`
3. **Config subdirectory**: `./config/app.yaml`
4. **Package default**: `imcui/config/app.yaml`
## Essential Settings
### Device Selection
Device is automatically detected at runtime based on your hardware:
- **CUDA**: Auto-selected if CUDA GPU is available
- **CPU**: Default fallback when CUDA is unavailable
- **MPS**: Auto-selected on macOS with Apple Silicon
Set environment variable before running:
```bash
CUDA_VISIBLE_DEVICES="" imcui
```
Use environment variable:
```bash
export CUDA_VISIBLE_DEVICES=0
imcui
```
### Default Matcher
There is no `default_matcher` configuration. Matchers are loaded dynamically from the [vismatch](https://github.com/gmberton/vismatch) package and selected through the UI dropdown during matching.
Available matchers: See algorithm reference
## Matching Parameters
### Thresholds
```yaml
defaults:
setting_threshold: 0.1 # Detection sensitivity
keypoint_threshold: 0.05 # Keypoint detection
match_threshold: 0.2 # Match confidence
max_keypoints: 2000 # Maximum feature points
```
### RANSAC Filtering
```yaml
defaults:
enable_ransac: true
ransac_method: CV2_USAC_MAGSAC
ransac_reproj_threshold: 8.0
ransac_confidence: 0.9999
ransac_max_iter: 10000
ransac_num_samples: 4
```
Supported RANSAC methods:
- `RANSAC` - Basic random sampling
- `CV2_USAC_MAGSAC` - Magnitude-consistent RANSAC (recommended)
- `LMEDS` - Least Median of Squares
### Geometry Estimation
```yaml
defaults:
setting_geometry: Homography # Options: Homography, Fundamental, Essential
```
Note: Essential matrix parameters are configured through the UI when selecting Essential matrix geometry type.
Requires camera intrinsics (focal length and principal point).
## Example Configurations
### Minimal Setup
```yaml
defaults:
setting_threshold: 0.1
max_keypoints: 2000
enable_ransac: true
```
### Production Configuration
```yaml
defaults:
setting_threshold: 0.1
keypoint_threshold: 0.05
match_threshold: 0.2
max_keypoints: 5000
enable_ransac: true
ransac_method: CV2_USAC_MAGSAC
ransac_reproj_threshold: 8.0
ransac_confidence: 0.9999
ransac_max_iter: 10000
setting_geometry: Homography
```
### Development Configuration
```yaml
defaults:
setting_threshold: 0.2
max_keypoints: 500
match_threshold: 0.3
enable_ransac: false
```
Developer note: Set CUDA_VISIBLE_DEVICES="" before running to force CPU mode.
## Advanced Configuration
### Dataset Path
```yaml
example_data_root: /path/to/custom/datasets
```
Tip: Dataset paths can also be set via environment variable (`IMCUI_DATA_DIR`) or CLI flag (`-d`).
## Configuration Profiles
Create multiple configurations for different use cases:
```bash
# Fast matching for previewing
imcui -c config_fast.yaml
# High-quality matching for production
imcui -c config_high_quality.yaml
# CPU-only matching for testing
CUDA_VISIBLE_DEVICES="" imcui -c config_cpu.yaml -d /test/data
```
## Using Matchers
Matchers are selected through the web interface dropdown. The available matchers are automatically loaded from the vismatch package:
- **Sparse matchers**: SuperPoint + LightGlue, ORB, SIFT, etc.
- **Dense matchers**: LoFTR, RoMa, etc.
Need help selecting a matcher? Check our algorithm guide for performance characteristics and recommendations.