How cnes/cars works
CARS is a satellite multi-view-stereo framework that reconstructs 3D surface models from satellite imagery. Its principal workflow accepts configured sensor inputs, prepares stereo imagery and matching geometry, derives point clouds, and produces DSM outputs; optional pipeline stages support subsampling, filling, merging, formatting, and analysis. The orchestrator coordinates tiled and distributed computation, while CarsDataset represents tiled intermediate data. The README and tree establish these capabilities; sampled source excerpts are partial, so links among unsampled pipeline stages are intentionally not asserted.
Main entry points: default_pipeline.py Default pipeline · surface_modeling.py Surface modeling · orchestrator.py Task orchestrator · simple_gaussian_app.py DSM rasterization
Components 25
Pipeline entry
- Default pipeline
cars/pipelines/default/default_pipeline.py - Pipeline factory
cars/pipelines/pipeline.py
Inputs and geometry
- Input validation
cars/conf/input_parameters.py - Sensor loaders
cars/pipelines/parameters/sensor_loaders - Preprocessing
cars/core/preprocessing.py - Subsampling
cars/pipelines/subsampling/subsampling.py
Stereo reconstruction
- Tie points
cars/pipelines/tie_points/tie_points.py - Epipolar grids
cars/applications/grid_generation/epipolar_grid_generation_app.py - Image resampling
cars/applications/resampling/bicubic_resampling_app.py - Sparse matching
cars/applications/sparse_matching/basic_sparse_matching_app.py - Dense matching
cars/applications/dense_matching/basic_dense_matching_app.py - Triangulation
cars/applications/triangulation/line_of_sight_intersection_app.py - Point refinement
cars/applications/point_cloud_refinement/normals_guided_app.py - Outlier removal
cars/applications/point_cloud_outlier_removal/statistical_app.py
Surface products
- Surface modeling
cars/pipelines/surface_modeling/surface_modeling.py - DSM rasterization
cars/applications/rasterization/simple_gaussian_app.py - DSM filling
cars/pipelines/filling/filling.py - DSM merging
cars/pipelines/merging/merging.py - Output formatting
cars/pipelines/formatting/formatting.py - Product analysis
cars/pipelines/analysis/analysis.py
Execution and data
- Task orchestrator
cars/orchestrator/orchestrator.py - Compute cluster
cars/orchestrator/cluster/abstract_cluster.py - Tiled datasets
cars/data_structures/cars_dataset.py
Other components
- User/config
- DSM products
Connections 27
- User/config → Default pipeline: provides config
- Default pipeline → Pipeline factory: creates pipeline
- Default pipeline → Input validation: checks inputs
- Default pipeline → Sensor loaders: loads sensors
- Default pipeline → Preprocessing: prepares inputs
- Default pipeline → Subsampling: runs optional
- Default pipeline → Tie points: runs stage
- Default pipeline → Surface modeling: runs resolutions
- Default pipeline → DSM filling: runs optional
- Default pipeline → DSM merging: runs optional
- Default pipeline → Output formatting: formats outputs
- Default pipeline → Product analysis: runs analysis
- Surface modeling → Epipolar grids: generates grids
- Surface modeling → Image resampling: resamples images
- Surface modeling → Sparse matching: matches features
- Surface modeling → Dense matching: computes disparities
- Surface modeling → Triangulation: triangulates points
- Surface modeling → Point refinement: refines cloud
- Surface modeling → Outlier removal: filters cloud
- Surface modeling → DSM rasterization: rasterizes cloud
- Default pipeline → Task orchestrator: coordinates work
- Task orchestrator → Compute cluster: dispatches tasks
- Task orchestrator → Tiled datasets: tracks datasets
- DSM filling → DSM products: writes products
- DSM merging → DSM products: writes products
- Output formatting → DSM products: writes products
- DSM rasterization → Tiled datasets: produces tiles