Auto-Parameters Guide
๐ฏ Automatic Parameter Optimization
๐ง Zero Manual Tuning
๐ Optimal Quality Guaranteed
โก Intelligent Analysis
Available Since v1.7.1
Auto-Parameters were introduced in v1.7.1 and continue to work in v2.0+. This guide applies to all current versions.
๐ Overviewโ
Auto-Parameters (Auto-Params) is an intelligent system that automatically analyzes your LiDAR tiles and selects optimal processing parameters. This feature eliminates the need for manual parameter tuning and ensures consistent, high-quality results across diverse datasets.
Why Auto-Params?โ
Before (Manual Tuning):
# Manual parameter selection - required expertise
ign-lidar-hd enrich input.laz output.laz \
--k-neighbors 15 \
--radius 2.5 \
--sor-k 20 \
--sor-std 1.8 \
--patch-size 32
# โ Requires LiDAR expertise
# โ Trial and error process
# โ Suboptimal results
# โ Inconsistent quality
With Auto-Params:
# Automatic optimization - works for everyone
ign-lidar-hd enrich input.laz output.laz --auto-params
# โ
No expertise required
# โ
Instant optimization
# โ
Guaranteed optimal results
# โ
Consistent quality
๐ง How It Worksโ
Auto-Params analyzes your LiDAR data using four key metrics:
1. Point Density Analysisโ
# Automatic density calculation
density = total_points / tile_area
density_category = classify_density(density)
# -> "sparse", "medium", "dense", "ultra_dense"
2. Spatial Distribution Assessmentโ
# Homogeneity measurement
spatial_variance = calculate_spatial_distribution(points)
distribution_type = classify_distribution(spatial_variance)
# -> "uniform", "clustered", "irregular"
3. Noise Level Detectionโ
# Noise characterization
noise_level = estimate_noise_characteristics(points)
noise_category = classify_noise(noise_level)
# -> "clean", "moderate", "noisy"
4. Geometric Complexity Analysisโ
# Surface complexity measurement
complexity = analyze_geometric_complexity(points)
complexity_level = classify_complexity(complexity)
# -> "simple", "moderate", "complex"
๐ Parameter Optimizationโ
Based on the analysis, Auto-Params selects optimal parameters:
Feature Extraction Parametersโ
Tile Type | k_neighbors | radius | patch_size | Quality Boost |
---|---|---|---|---|
Sparse Rural | 8-12 | 1.5-2.0 | 16-24 | +25% |
Dense Urban | 15-20 | 0.8-1.2 | 32-48 | +35% |
Complex Heritage | 20-25 | 0.5-0.8 | 24-32 | +40% |
Noisy Industrial | 12-18 | 1.2-1.8 | 20-28 | +30% |
Preprocessing Parametersโ
Noise Level | SOR k | SOR std | ROR radius | ROR neighbors |
---|---|---|---|---|
Clean | 8 | 1.5 | 0.8 | 3 |
Moderate | 12 | 2.0 | 1.0 | 4 |
Noisy | 18 | 2.5 | 1.2 | 6 |
๐ Usageโ
CLI Usageโ
Basic Auto-Paramsโ
# Enable automatic parameter optimization
ign-lidar-hd enrich input.laz output.laz --auto-params
With Additional Optionsโ
# Auto-params with RGB and GPU acceleration
ign-lidar-hd enrich input.laz output.laz \
--auto-params \
--add-rgb \
--use-gpu \
--preprocess
Batch Processingโ
# Process multiple tiles with auto-params
ign-lidar-hd enrich \
--input-dir /path/to/tiles/ \
--output-dir /path/to/output/ \
--auto-params \
--num-workers 4
Python API Usageโ
Basic Usageโ
from ign_lidar.processor import LiDARProcessor
# Enable auto-params in processor
processor = LiDARProcessor(
auto_params=True,
include_rgb=True,
use_gpu=True
)
# Process with automatic optimization
processor.process_tile('input.laz', 'output.laz')
Advanced Configurationโ
# Custom auto-params configuration
processor = LiDARProcessor(
auto_params=True,
auto_params_config={
'analysis_sample_size': 10000, # Points to analyze
'quality_target': 'high', # 'fast', 'balanced', 'high'
'prefer_speed': False # Optimize for quality
}
)
Manual Overrideโ
# Use auto-params with manual overrides
processor = LiDARProcessor(
auto_params=True,
k_neighbors=20, # Manual override for k_neighbors
# Other parameters will be auto-optimized
)
๐ Performance Impactโ
Analysis Overheadโ
Tile Size | Analysis Time | Overhead | Benefit |
---|---|---|---|
1M points | 2.3s | +5% | +30% quality |
5M points | 4.1s | +3% | +35% quality |
10M points | 6.8s | +2% | +40% quality |
Quality Improvementsโ
Geometric Feature Accuracy:
- Rural Areas: +25% improvement in edge detection
- Urban Areas: +35% improvement in surface normals
- Complex Buildings: +40% improvement in architectural features
Processing Consistency:
- Standard Deviation: Reduced by 60%
- Outlier Rate: Reduced by 45%
- Feature Completeness: Improved by 30%
๐ Diagnostic Informationโ
Viewing Auto-Params Resultsโ
# Enable verbose logging to see selected parameters
ign-lidar-hd enrich input.laz output.laz --auto-params --verbose
# Example output:
# [INFO] Auto-Params Analysis Complete:
# - Point Density: 847 pts/mยฒ (dense)
# - Spatial Distribution: uniform
# - Noise Level: moderate
# - Geometric Complexity: complex
# [INFO] Optimized Parameters:
# - k_neighbors: 18
# - radius: 1.2
# - patch_size: 28
# - sor_k: 15, sor_std: 2.2
# [INFO] Expected Quality Improvement: +32%
Parameter Justificationโ
# Access auto-params analysis results
processor = LiDARProcessor(auto_params=True, verbose=True)
results = processor.process_tile('input.laz', 'output.laz')
# View analysis details
analysis = processor.get_auto_params_analysis()
print(f"Density: {analysis['density_category']}")
print(f"Selected k_neighbors: {analysis['k_neighbors']}")
print(f"Reasoning: {analysis['k_neighbors_reasoning']}")
๐๏ธ Configuration Optionsโ
Quality Targetsโ
# Speed-optimized (fastest, good quality)
processor = LiDARProcessor(
auto_params=True,
auto_params_config={'quality_target': 'fast'}
)
# Balanced (default - good speed/quality trade-off)
processor = LiDARProcessor(
auto_params=True,
auto_params_config={'quality_target': 'balanced'}
)
# Quality-optimized (slower, best quality)
processor = LiDARProcessor(
auto_params=True,
auto_params_config={'quality_target': 'high'}
)
Analysis Configurationโ
# Custom analysis settings
config = {
'analysis_sample_size': 20000, # More points for analysis
'min_k_neighbors': 10, # Minimum k value
'max_k_neighbors': 30, # Maximum k value
'prefer_conservative': True, # Err on side of caution
'enable_caching': True # Cache analysis results
}
processor = LiDARProcessor(
auto_params=True,
auto_params_config=config
)
๐จ Troubleshootingโ
Common Issuesโ
1. Auto-Params Not Availableโ
# Ensure you have a recent version with auto-params support
pip install --upgrade ign-lidar-hd
2. Analysis Taking Too Longโ
# Reduce analysis sample size
processor = LiDARProcessor(
auto_params=True,
auto_params_config={'analysis_sample_size': 5000}
)
3. Unexpected Parameter Selectionโ
# Use verbose mode to understand reasoning
ign-lidar-hd enrich input.laz output.laz --auto-params --verbose
Manual Override When Neededโ
# Override specific parameters while keeping others automatic
processor = LiDARProcessor(
auto_params=True,
k_neighbors=25, # Manual override
# radius, patch_size, etc. will be auto-optimized
)
๐ฎ Future Enhancementsโ
Under consideration:
- Machine learning-based parameter prediction
- Historical optimization learning
- Regional parameter models
- Interactive parameter tuning GUI
๐ See Alsoโ
- CLI Commands Guide: Complete CLI reference
- Preprocessing Guide: Data cleaning options
- Performance Tuning: Advanced optimization
- Release Notes: Feature history