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.