Applications for each 3D steps
This section describes all possible configuration of CARS applications.
CARS applications are defined and called by their name in applications configuration section:
"applications":{
"application_name": {
"method": "application_dependent",
"parameter1": 3,
"parameter2": 0.3
}
},
Be careful with these parameters: no mechanism ensures consistency between applications for now. And some parameters can degrade performance and DSM quality heavily. The default parameters have been set as a robust and consistent end to end configuration for the whole pipeline.
Grid generation
Name: “grid_generation”
Description
From sensors image, compute the stereo-rectification grids
Configuration
Name |
Description |
Type |
Default value |
Required |
---|---|---|---|---|
method |
Method for grid generation |
string |
epipolar |
Yes |
epi_step |
Step of the deformation grid in nb. of pixels |
int |
30 |
No |
save_grids |
Save the generated grids (not available yet) |
boolean |
false |
No |
geometry_loader |
Geometry external library |
string |
“otb” |
No |
"applications": {
"grid_generation": {
"method": "epipolar",
"epi_step": 35
}
},
Resampling
Name: “resampling”
Description
Input images are resampled with grids.
Configuration
Name |
Description |
Type |
Default value |
Required |
---|---|---|---|---|
method |
Method for resampling |
string |
bicubic |
Yes |
epi_tile_size |
size in pixels of tile |
int |
500 |
No |
save_epipolar_image |
Save the generated images in output folder |
boolean |
false |
No |
save_epipolar_color |
Save the generated images (only if color is available) |
boolean |
false |
No |
"applications": {
"resampling": {
"method": "bicubic",
"epi_tile_size": 600
}
},
Sparse matching
Name: “sparse_matching”
Description
Compute keypoints matches on pair images
Configuration
Name |
Description |
Type |
available value |
Default value |
Required |
---|---|---|---|---|---|
method |
Method for sparse matching |
string |
“sift” |
“sift” |
Yes |
disparity_margin |
Add a margin to min and max disparity as percent of the disparity range. |
float |
0.02 |
No |
|
elevation_delta_lower_bound |
Expected lower bound for elevation delta with respect to input low resolution DTM in meters |
int, float |
-1000 |
No |
|
elevation_delta_upper_bound |
Expected upper bound for elevation delta with respect to input low resolution DTM in meters |
int, float |
1000 |
No |
|
epipolar_error_upper_bound |
Expected upper bound for epipolar error in pixels |
float |
10.0 |
No |
|
epipolar_error_maximum_bias |
Maximum bias for epipolar error in pixels |
float |
0.0 |
No |
|
disparity_outliers_rejection_percent |
float |
0.1 |
No |
||
sift_matching_threshold |
float |
0.6 |
No |
||
sift_n_octave |
int |
8 |
No |
||
sift_n_scale_per_octave |
int |
3 |
No |
||
sift_dog_threshold |
float |
20.0 |
No |
||
sift_edge_threshold |
float |
-5.0 |
No |
||
sift_magnification |
float |
2.0 |
No |
||
sift_back_matching |
Boolean |
true |
No |
||
save_matches |
Save matches |
Boolean |
false |
No |
A lot of information about parameters can be found on VLFEAT SIFT documentation.
"applications": {
"sparse_matching": {
"method": "sift",
"disparity_margin": 0.01
}
},
Dense matching
Name: “dense_matching”
Description
Compute disparity map from stereo-rectified pair images
Configuration
Name |
Description |
Type |
available value |
Default value |
Required |
method |
Method for dense matching |
string |
“census_sgm” or “mccnn_sgm” |
“census_sgm” |
Yes |
loader |
external library use to compute dense matching |
string |
“pandora” |
“pandora” |
No |
loader_conf |
Configuration associated with loader |
dict |
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 |
None |
No |
|
use_sec_disp |
Compute secondary disparity map |
boolean |
false |
No |
|
min_epi_tile_size |
int |
300 |
No |
||
max_epi_tile_size |
int |
300 |
No |
||
epipolar_tile_margin_in_percent |
int |
60 |
No |
||
save_disparity_map |
Save disparity map |
boolean |
false |
No |
See Pandora documentation for more information.
"applications": {
"dense_matching": {
"method": "census_sgm",
"loader": "pandora",
"loader_conf": "path_to_user_pandora_configuration"
}
},
Triangulation
Name: “triangulation”
Description
Triangulating the sights and get for each point of the reference image a latitude, longitude, altitude point
Configuration
Name |
Description |
Type |
available value |
Default value |
Required |
---|---|---|---|---|---|
method |
Method for triangulation |
string |
“line_of_sight_intersection” |
“line_of_sight_intersection” |
Yes |
geometry_loader |
Geometry external library |
string |
“otb” |
“otb” |
No |
use_geoid_alt |
Use geoid grid as altimetric reference. |
boolean |
false |
No |
|
snap_to_img1 |
if all pairs share the same left image, modify lines of sights of secondary images to cross those of the ref image |
boolean |
false |
No |
|
add_msk_info |
boolean |
true |
No |
||
save_points_cloud |
save points_cloud |
boolean |
false |
No |
"applications": {
"triangulation": {
"method": "line_of_sight_intersection",
"use_geoid_alt": true
}
},
Point Cloud fusion
Name: “point_cloud_fusion”
Description
Merge points clouds coming from each pair
Only one method is available for now: “mapping_to_terrain_tiles”
Configuration
Name |
Description |
Type |
available value |
Default value |
Required |
---|---|---|---|---|---|
method |
Method for fusion |
string |
“mapping_to_terrain_tiles” |
“mapping_to_terrain_tiles” |
Yes |
resolution |
Resolution of the dsm |
float |
should be > 0 |
0.5 |
No |
terrain_tile_size |
int |
None |
No |
||
save_points_cloud |
Save points clouds |
boolean |
false |
No |
Example
"applications": {
"point_cloud_fusion": {
"method": "mapping_to_terrain_tiles",
"resolution": 0.5,
"save_points_cloud": true
}
},
Warning
Be careful with resolution to be consistent with resolution in rasterization. No mechanism ensures consistency between applications for now.
Point Cloud outliers removing
Name: “point_cloud_outliers_removing”
Description
Point cloud outliers removing
Configuration
Name |
Description |
Type |
available value |
Default value |
Required |
---|---|---|---|---|---|
method |
Method for point cloud outliers removing |
string |
“statistical”, “small_components” |
“statistical” |
Yes |
save_points_cloud |
Save points clouds |
boolean |
false |
No |
If method is statistical:
Name |
Description |
Type |
available value |
Default value |
Required |
---|---|---|---|---|---|
activated |
boolean |
true |
No |
||
k |
int |
should be > 0 |
50 |
No |
|
std_dev_factor |
float |
5.0 |
No |
If method is small_components
Name |
Description |
Type |
available value |
Default value |
Required |
---|---|---|---|---|---|
activated |
boolean |
true |
No |
||
on_ground_margin |
int |
10 |
No |
||
connection_distance |
float |
3.0 |
No |
||
nb_points_threshold |
int |
50 |
No |
||
clusters_distance_threshold |
float |
None |
No |
Example
"applications": {
"point_cloud_outliers_removing": {
"method": "small_components",
"on_ground_margin": 10,
"save_points_cloud": true
}
},
Point Cloud Rasterization
Name: “point_cloud_rasterization”
Description
Project altitudes on regular grid.
Only one simple gaussian method is available for now.
Configuration
Name |
Description |
Type |
available value |
Default value |
Required |
---|---|---|---|---|---|
method |
string |
simple_gaussian |
simple_gaussian |
Yes |
|
dsm_radius |
float, int |
1.0 |
No |
||
sigma |
float |
None |
No |
||
grid_points_division_factor |
int |
None |
No |
||
resolution |
altitude grid step (dsm) |
float |
0.5 |
No |
|
dsm_no_data |
int |
-32768 |
|||
color_no_data |
int |
0 |
|||
color_dtype |
string |
“uint16” |
|||
msk_no_data |
int |
65535 |
|||
write_color |
Save color ortho-image |
boolean |
false |
No |
|
write_stats |
boolean |
false |
No |
||
write_msk |
boolean |
false |
No |
||
write_dsm |
Save dsm |
boolean |
true |
No |
Example
"applications": {
"point_cloud_rasterization": {
"method": "simple_gaussian",
"dsm_radius": 1.5
}
},
Warning
Be careful with resolution to be consistent with resolution in rasterization. No mechanism ensures consistency between applications for now.