CARS overview
Satellite photogrammetry in a nutshell
As its name suggests, satellite photogrammetry works using optical satellite acquisitions to generate a Digital Surface Model (DSM), the 2.5D representation created from observed surface altitude data. We speak of 2.5D because the digital surface model is an array of pixels (raster, 2D) where each pixel (x,y) corresponds to an altitude (z).

Fig. 1 2.5D representation
On the left, an example of an array of pixels, and on the right, a volume representation of altitude values.
Like our eyes, altitude (or depth relative to the satellite, to continue the analogy) is determined from the observed pixels displacement. We therefore need at least two images, acquired from two different viewpoints. This difference in viewpoints between two satellites is quantified by the B over H ratio where B is the distance between the two satellites and H is their altitude.
B over H ratio |
Two viewpoints |
Every raster readable by GDAL can be given as CARS input. In addition to images, the photogrammetric process requires geometric models. Rational Polynomial Coefficients (RPC) provide a compact representation of a ground-to-image geometry giving a relationship between:
Image coordinates + altitude and ground coordinates (direct model: image to ground)
Ground coordinates + altitude and image coordinates (inverse model: ground to image)
These coefficients are classically contained in the RPC*.XML files.
From Satellite Images to Digital Surface Model
Generate a DSM step by step
Pipeline |
Resampling |
Pipeline |
Matching |
Pipeline |
Triangulation |
To obtain a raster image, the final process projects each point into a 2D grid: altitudes and colors (see below).
Pipeline |
Rasterization |
Initial Input Digital Elevation Model
The user can provide as input a low resolution Digital Elevation Model (DEM). It helps to minimize the disparity intervals to explore. Any geotiff file can be used. If the DEM is not specified by the user, an internal DEM is generated with sparse matches.
To download the low resolution DEM corresponding to your area, see section Get low resolution DEM.
The parameter is dem
in initial_elevation
as seen in Basic configuration.
Altimetric exploration and geometric inaccuracies
To reduce the search interval (i.e. altimetric exploration) in the matching step and thus save computing time, a faster sparse matching step is typically used. This matching step also enables geometric errors to be corrected, thus ensuring that the epipolar geometry (based on these models) is correct.
Matching can be performed with keypoints like SIFT (Here is an article).
Pipeline |
Matching (sparse) |
The result is a sparse point cloud…
Pipeline |
Triangulation (sparse) |
and a sparse digital surface model.
Pipeline |
Rasterization (sparse) |
Mask and Classification Usage
Mask
Prerequisites
The masks are in the same geometry than the satellite images.
Each mask is a binary file (one band with 1 nbit). Please, see the section Convert image to binary image to make a binary image.
1 values are considered as invalid data. 0 values are considered as valid data.
How it works
Masks are resampled in epipolar geometry with the resampling application. The masked values (1 values) are not processed during the computation. They are not taken into account in the matching process (sparse or dense matching method) to avoid mismatch and useless processing. Furthermore, the sparse matching estimation of the disparity range can be enhanced with mask using for the water area typically.
Example
Below, an example of an area close to Nice with its associated water mask (calculated with SLURP) and the DSM calculated by masking the water zones.
Satellite Image |
Water Mask |
Masked DSM |
![]() |
![]() |
![]() |
Classification
CARS can use a classification image for each image in order to apply some processings in the regions. (Please see the section Applications in the Advanced Configuration).
Prerequisites
The classification images are in the same geometry as the satellite images.
Each classification image is a multi-band binary file.
Binary file: Please, see the section Convert image to binary image to make a binary image.
Multi-band file: Each band should have a specific name (Please, see the section Add band name / description in TIF files metadata to add band name / description).
1 values are considered as valid data. 0 values are considered as invalid data.
How it works
By using the classification file, a different application for each band can be applied for the 1 values. See application classification parameter Advanced configuration.
Example
Below, an example of an area close to Nice with its associated classification image (calculated with SLURP). The first band corresponds to the water class and the second band to the vegetation class.
Satellite Image |
Classification (Band 1: “Water”) |
Classification (Band 2: “Vegetation”) |
![]() |
![]() |
![]() |
3D products
dsm.tif
that contains the Digital Surface Model in the required cartographic projection and the ground sampling distance defined by the user.color.tif
is also produced. The latter is stackable to the DSM (See Getting Started).These two products can be visualized with QGIS for example.
dsm.tif |
color.tif |
QGIS Mix |
cloudcompare |
CARS pipeline
To summarize, CARS pipeline is organized in sequential steps from input pairs (and metadata) to output data. Each step is performed tile-wise and distributed among workers.

The pipeline will perform the following steps [Michel J. et al, 2020] [Youssefi D. et al, 2020]:
For each stereo pair:
Create stereo-rectification grids for left and right views.
Resample the both images into epipolar geometry.
Compute sift matches between left and right views in epipolar geometry.
Predict an optimal disparity range from the filtered point cloud resulting from the sift matches triangulation.
Create a bilinear correction model of the right image’s stereo-rectification grid in order to minimize the epipolar error. Apply the estimated correction to the right grid.
Resample again the stereo pair in epipolar geometry (using corrected grid for the right image) by using input DTM (such as SRTM) in order to reduce the disparity intervals to explore.
Compute disparity for each image pair in epipolar geometry.
Fill holes in disparity maps for each image pair in epipolar geometry.
Triangulate the matches and get for each pixel of the reference image a latitude, longitude and altitude coordinate.
Then
Merge points clouds coming from each stereo pairs.
Filter the resulting 3D points cloud via two consecutive filters: the first removes the small groups of 3D points, the second filters the points which have the most scattered neighbors.
Rasterize: Project these altitudes on a regular grid as well as the associated color.