cars.applications.dense_matching.basic_dense_matching_app

This module contains the implementation of a tiled Dense matching application

Classes

BasicDenseMatchingApplication

Implementation of a tiled Dense matching application, with support for

Functions

basic_dense_matching_wrapper(dense_matching_method, ...)

Matching application wrapper.

Module Contents

class cars.applications.dense_matching.basic_dense_matching_app.BasicDenseMatchingApplication(conf=None)[source]

Bases: cars.applications.dense_matching.abstract_dense_matching_app.AbstractDenseMatchingApplication

Implementation of a tiled Dense matching application, with support for dense matching methods

schema
orchestrator = None
min_epi_tile_size = 300
max_epi_tile_size = 1500
epipolar_tile_margin_in_percent = 60
min_elevation_offset = None
max_elevation_offset = None
disp_min_threshold = None
disp_max_threshold = None
save_intermediate_data
use_global_disp_range = False
local_disp_grid_step = 10
disp_range_propagation_filter_size = 50
epi_disp_grid_tile_size = 800
required_bands = ['b0']
property loader
check_conf(conf)[source]

Merge user configuration with default values and validate schema. Extra keys in conf are preserved and ignored during schema validation.

get_optimal_tile_size(disp_range_grid, max_ram_per_worker)[source]

Get the optimal tile size to use during dense matching.

Parameters:
  • disp_range_grid – minimum and maximum disparity grid

  • max_ram_per_worker – maximum ram per worker

Returns:

optimal tile size

get_required_bands()[source]

Get bands required by this application

Returns:

required bands for left and right image

Return type:

dict

get_performance_map_parameters()[source]

Get parameter linked to performance, that will be used in triangulation

Returns:

parameters to use

Type:

dict

get_margins_fun(grid_left, disp_range_grid)[source]

Get Margins function that generates margins needed by matching method, to use during resampling

Parameters:
  • grid_left – left epipolar grid

  • disp_range_grid – minimum and maximum disparity grid

Returns:

function that generates margin for given roi

get_method()[source]
generate_disparity_grids(sensor_image_right, grid_right, geom_plugin_with_dem_and_geoid, dmin=None, dmax=None, dem_min=None, dem_max=None, pair_folder=None, orchestrator=None)

Generate disparity grids min and max, with given step

global mode: uses dmin and dmax local mode: uses dems

Parameters:
  • sensor_image_right (dict) – sensor image right

  • grid_right (dict) – right epipolar grid

  • geom_plugin_with_dem_and_geoid (GeometryPlugin) – geometry plugin with dem mean used to generate epipolar grids

  • dmin (float) – minimum disparity

  • dmax (float) – maximum disparity

  • dem_min (str) – path to minimum dem

  • dem_max (str) – path to maximum dem

  • pair_folder (str) – folder used for current pair

  • orchestrator (Orchestrator) – orchestrator

:return disparity grid range, containing grid min and max :rtype: CarsDataset

run(epipolar_images_left, epipolar_images_right, local_tile_optimal_size_fun, orchestrator=None, pair_folder=None, pair_key='PAIR_0', disp_range_grid=None, compute_disparity_masks=False, margins_to_keep=0, texture_bands=None, classif_bands_to_mask=None)[source]

Run Matching application.

Create CarsDataset filled with xarray.Dataset, corresponding to epipolar disparities, on the same geometry than epipolar_images_left.

Parameters:
  • epipolar_images_left (CarsDataset) –

    tiled left epipolar CarsDataset contains:

    • N x M Delayed tiles. Each tile will be a future xarray Dataset containing:

      • data with keys : “im”, “msk”, “texture”

      • attrs with keys: “margins” with “disp_min” and “disp_max” “transform”, “crs”, “valid_pixels”, “no_data_mask”, “no_data_img”

    • attributes containing:

      ”largest_epipolar_region”,”opt_epipolar_tile_size”

  • epipolar_images_right (CarsDataset) –

    tiled right epipolar CarsDataset contains:

    • N x M Delayed tiles. Each tile will be a future xarray Dataset containing:

      • data with keys : “im”, “msk”, “texture”

      • attrs with keys: “margins” with “disp_min” and “disp_max”

        ”transform”, “crs”, “valid_pixels”, “no_data_mask”, “no_data_img”

    • attributes containing:

      ”largest_epipolar_region”,”opt_epipolar_tile_size”

  • local_tile_optimal_size_fun (func) – function to compute local optimal tile size

  • orchestrator – orchestrator used

  • pair_folder (str) – folder used for current pair

  • pair_key (str) – pair id

  • disp_range_grid (dict) – minimum and maximum disparity grid

  • disp_to_alt_ratio (float) – disp to alti ratio used for performance map

  • margins_to_keep (int) – margin to keep after dense matching

  • texture_bands (list) – indices of bands from epipolar_images_left used for output texture

Returns:

disparity map: The CarsDataset contains:

  • N x M Delayed tiles. Each tile will be a future xarray Dataset containing:
    • data with keys : “disp”, “disp_msk”

    • attrs with keys: profile, window, overlaps

  • attributes containing:
    ”largest_epipolar_region”,”opt_epipolar_tile_size”,

    ”disp_min_tiling”, “disp_max_tiling”

Return type:

CarsDataset

cars.applications.dense_matching.basic_dense_matching_app.basic_dense_matching_wrapper(dense_matching_method, left_image_object: xarray.Dataset, right_image_object: xarray.Dataset, disp_range_grid, saving_info=None, compute_disparity_masks=False, crop_with_range=None, left_overlaps=None, margins_to_keep=0, texture_bands=None, classif_bands_to_mask=None)[source]

Matching application wrapper.

Create CarsDataset filled with xarray.Dataset, corresponding to epipolar disparities, on the same geometry than left_image_object.

Parameters:
  • left_image_object (CarsDataset) –

    tiled left epipolar CarsDataset contains:

    • N x M Delayed tiles. Each tile will be a future xarray Dataset containing:

      • data with keys : “im”, “msk”, “texture”

      • attrs with keys: “margins” with “disp_min” and “disp_max” “transform”, “crs”, “valid_pixels”, “no_data_mask”, “no_data_img”

    • attributes containing:

      ”largest_epipolar_region”,”opt_epipolar_tile_size”

  • right_image_object (CarsDataset) –

    tiled right epipolar CarsDataset contains:

    • N x M Delayed tiles. Each tile will be a future xarray Dataset containing:

      • data with keys : “im”, “msk”, “texture”

      • attrs with keys: “margins” with “disp_min” and “disp_max”

        ”transform”, “crs”, “valid_pixels”, “no_data_mask”, “no_data_img”

    • attributes containing:

      ”largest_epipolar_region”,”opt_epipolar_tile_size”

  • disp_range_grid (CarsDict) – minimum and maximum disparity grid

  • saving_info (dict) – information required to save output data

  • compute_disparity_masks (bool) – activate computation of disparity masks

  • crop_with_range (int) – crop disparity map using provided disparity range

  • left_overlaps (dict) – overlaps associated to left image tiles

  • margins_to_keep (int) – margin to keep after dense matching

  • texture_bands (list) – indices of bands from epipolar_images_left used for output texture

  • classif_bands_to_mask (list of str / int) – bands from classif to mask

Returns:

Left to right disparity dataset Returned dataset is composed of :

  • cst_disp.MAP

  • cst_disp.VALID

  • cst.EPI_TEXTURE