Dense matching
Name: “dense_matching”
Description
Compute the disparity map from stereo-rectified pair images
Architecture Note
This application uses a plugin-based architecture separating the application layer from the method layer:
Application Parameters: These control the orchestration and tiling of the dense matching process (tile sizes, disparity range estimation, global settings, etc.) and are independent of the matching algorithm used.
Method Parameters: These are algorithm-specific parameters (e.g., Pandora confidence filtering, cross-validation mode, etc.) and belong to the selected method plugin.
The application parameter selects which parallelization strategy to use. The method parameter selects which matching algorithm/preset to use.
Both application and method may have their own parameters, which should then be put all together in the dense_matching configuration key.
Applications
Basic Application
Name |
Description |
Type |
Available value |
Default value |
Required |
|---|---|---|---|---|---|
application |
Application to use |
string |
“basic” |
“basic” |
No |
method |
Method for dense matching |
string |
see Methods section below |
“pandora_auto” |
No |
min_elevation_offset |
Override minimum disparity from prepare step with this offset in meters |
int |
None |
No |
|
max_elevation_offset |
Override maximum disparity from prepare step with this offset in meters |
int |
should be > min |
None |
No |
disp_min_threshold |
Override minimum disparity when less than lower bound |
int |
None |
No |
|
disp_max_threshold |
Override maximum disparity when greater than upper bound |
int |
should be > min |
None |
No |
min_epi_tile_size |
Lower bound of optimal epipolar tile size for dense matching |
int |
should be > 0 |
300 |
No |
max_epi_tile_size |
Upper bound of optimal epipolar tile size for dense matching |
int |
should be > 0 and > min |
1500 |
No |
epipolar_tile_margin_in_percent |
Size of the margin used for dense matching (percent of tile size) |
int |
60 |
No |
|
save_intermediate_data |
Save disparity map and disparity confidence |
boolean |
false |
No |
|
use_global_disp_range |
If true, use global disparity range, otherwise local range estimation |
boolean |
false |
No |
|
local_disp_grid_step |
Step of disparity min/ max grid used to resample dense disparity range |
int |
10 |
No |
|
disp_range_propagation_filter_size |
Filter size of local min/max disparity, to propagate local min/max |
int |
should be > 0 |
50 |
|
epi_disp_grid_tile_size |
Tile size used for Disparity range grid generation. |
int |
should be > 0 |
800 |
No |
required_bands |
Bands required by the dense matching application |
list |
should be in input sensor |
[“b0”] |
No |
Note
use_global_disp_range: Disparity range can be global (same disparity range used for each tile), or local (disparity range is estimated for each tile with dem min/max).To save the confidence, the save_intermediate_data parameter should be activated.
Methods
Pandora Method
Names: “pandora_custom”, “pandora_mccnn_sgm”, “pandora_census_sgm_urban”, “pandora_census_sgm_shadow”, “pandora_census_sgm_mountain_and_vegetation”, “pandora_census_sgm_homogeneous”, “pandora_census_sgm_default”, “pandora_census_sgm_sparse”, “pandora_auto”
Description: Dense matching method using Pandora, with various presets available for different scenes
Available Method Presets:
Method Name |
Description |
|---|---|
pandora_auto |
Automatic method selection based on global classification map |
pandora_custom |
Uses the custom Pandora configuration defined in loader_conf |
pandora_census_sgm_default |
Default configuration using Census 5 with SGM (p1 = 8, p2 = 32), works in most cases |
pandora_mccnn_sgm |
MCCNN with SGM (p1 = 2.3, p2 = 55.9) |
pandora_census_sgm_urban |
Optimized for urban scenes using Census 11 with SGM (p1 = 20, p2 = 80) |
pandora_census_sgm_shadow |
Optimized for scenes with shadows using Census 11 with SGM (p1 = 20, p2 = 160) |
pandora_census_sgm_mountain_and_vegetation |
Optimized for mountainous or vegetation scenes using Census 11 with SGM (p1 = 38, p2 = 464) |
pandora_census_sgm_homogeneous |
Optimized for homogeneous scenes using Census 11 with SGM (p1 = 72, p2 = 309) |
Method-specific Parameters:
Name |
Description |
Type |
Available value |
Default value |
Required |
|---|---|---|---|---|---|
generate_ambiguity |
Generate the ambiguity map |
bool |
False |
No |
|
performance_map_method |
Compute performance map with selected method(s) |
str, list |
“risk”, “intervals” |
None |
No |
perf_eta_max_ambiguity |
Ambiguity confidence eta max used for performance map (risk method) |
float |
0.99 |
No |
|
perf_eta_max_risk |
Risk confidence eta max used for performance map (risk method) |
float |
0.25 |
No |
|
perf_eta_step |
Risk and Ambiguity confidence eta step used for performance map (risk method) |
float |
0.04 |
No |
|
perf_ambiguity_threshold |
Maximal ambiguity considered for performance map (risk method) |
float |
0.6 |
No |
|
classification_fusion_margin |
Margin for the fusion |
int |
-1 |
No |
|
use_cross_validation |
Add cross validation step |
bool, str |
true, false, “fast”, “accurate” |
“fast” |
No |
denoise_disparity_map |
Add disparity denoiser filter |
bool |
false |
No |
|
used_band |
Band used for correlation |
str |
should be in input sensor |
“b0” |
No |
loader |
External library used to compute dense matching |
str |
“pandora” |
“pandora” |
No |
loader_conf |
Configuration for Pandora loader (for pandora_custom method) |
dict or str |
None |
No |
|
confidence_filtering |
Parameters for dense match filtering using confidence |
dict |
see details table below |
{} |
No |
threshold_disp_range_to_borders |
Clip the disparity range to the valid region of right image |
bool |
False |
No |
|
filter_incomplete_disparity_range |
Removes pixels whose disparity range is not fully valid |
bool |
True |
No |
|
edges_3sgm |
Use 3SGM in Pandora with edge mask as mode (when edges_mask is given as input) |
bool |
True |
No |
|
classification_3sgm |
Use 3SGM in Pandora with classification as mode (when classification is given as input) |
list[int] |
list of integer class IDs |
None |
No |
Note
When user activate the generation of performance map, this map transits until being rasterized. Performance map is managed as a confidence map.
The cross-validation step supports two modes: fast and accurate. Setting the configuration to true or “fast” will use the fast method, while setting it to “accurate” will enable the accurate method.
When setting the method to pandora_auto, CARS will use a global classification map to select the optimal pandora configuration for dense matching.
The
classification_3sgmparameter is used overedges_3sgmwhen both are activated, as both can’t be used simultaneously.
The following table details the method-specific confidence_filtering parameter of Pandora.
Pandora confidence_filtering parameter details:
Name |
Description |
Type |
Available value |
Default value |
Required |
|---|---|---|---|---|---|
activated |
Activates filter of dense matches using confidence |
bool |
True |
No |
|
bounds_ratio_threshold |
First filter : threshold for (bound_sup - bound_inf) / (disp_max - disp_min) |
float |
0.2 |
No |
|
risk_ratio_threshold |
First filter : threshold for (risk_max - risk_min) / (disp_max - disp_min) |
int |
0.75 |
No |
|
win_nan_ratio |
Second filter : window size for nan filtering |
int |
20 |
No |
|
nan_threshold |
Second filter : threshold for the nan ratio (percentage of nan in the window) |
float |
0.2 |
No |
|
bounds_range_threshold |
Both filters : threshold for (bound_sup - bound_inf) |
int |
3 |
No |
|
risk_range_threshold |
Both filters : threshold for (risk_max - risk_min) |
int |
9 |
No |
Examples
Minimal example:
--- applications: dense_matching: application: basic method: pandora_auto
{ "applications": { "dense_matching": { "application": "basic", "method": "pandora_auto" } } }
Example with both application and method parameters:
--- applications: dense_matching: application: basic method: pandora_census_sgm_default min_epi_tile_size: 300 max_epi_tile_size: 1500 epipolar_tile_margin_in_percent: 60 use_global_disp_range: false use_cross_validation: fast denoise_disparity_map: false generate_ambiguity: true edges_3sgm: true classification_3sgm: [6, 17] confidence_filtering: activated: true bounds_ratio_threshold: 0.2 risk_ratio_threshold: 0.75
{ "applications": { "dense_matching": { "application": "basic", "method": "pandora_census_sgm_default", "min_epi_tile_size": 300, "max_epi_tile_size": 1500, "epipolar_tile_margin_in_percent": 60, "use_global_disp_range": false, "use_cross_validation": "fast", "denoise_disparity_map": false, "generate_ambiguity": true, "edges_3sgm": true, "classification_3sgm": [ 6, 17 ], "confidence_filtering": { "activated": true, "bounds_ratio_threshold": 0.2, "risk_ratio_threshold": 0.75 } } } }
Example using a custom Pandora preset:
--- applications: dense_matching: application: basic method: pandora_custom loader: pandora loader_conf: /path/to/pandora_config.json
{ "applications": { "dense_matching": { "application": "basic", "method": "pandora_custom", "loader": "pandora", "loader_conf": "/path/to/pandora_config.json" } } }