cars.applications.dense_matching.dense_matching_tools

This module is responsible for the dense matching algorithms: - thus it creates a disparity map from a pair of images

Module Contents

Classes

LinearInterpNearestExtrap

Linear interpolation and nearest neighbour extrapolation

Functions

get_margins(disp_min, disp_max, corr_cfg)

Get margins for the dense matching steps

get_masks_from_pandora(→ Dict[str, numpy.ndarray])

Get masks dictionary from the disparity map in output of pandora.

add_disparity_grids(output_dataset[, disp_min_grid, ...])

Add disparity min and max grids to dataset

add_color(output_dataset[, color, color_type, band_im])

Add color and color mask to dataset

add_classification(output_dataset[, classif, band_classif])

Add classification to dataset

create_disp_dataset(→ xarray.Dataset)

Create the disparity dataset.

add_crop_info(disp_ds, cropped_range)

Add crop info

estimate_right_classif_on_left(right_classif, ...)

Estimate right classif on left image

merge_classif_left_right(left_classif, ...)

Merge left and right classif

add_confidence(output_dataset, disp, ref_roi)

Add confidences to dataset

add_performance_map(output_dataset, disp, ref_roi, ...)

Add performance map to dataset

compute_disparity_grid(disp_range_grid, left_image_object)

Compute dense disparity grids min and max for pandora

compute_disparity(→ Dict[str, xarray.Dataset])

This function will compute disparity.

estimate_right_grid_disp(disp_min_grid, disp_max_grid)

Estimate right grid min and max.

optimal_tile_size_pandora_plugin_libsgm(→ int)

Compute optimal tile size according to estimated memory usage

get_max_disp_from_opt_tile_size(...[, margin, ...])

Compute max range possible depending on max ram per worker

cars.applications.dense_matching.dense_matching_tools.get_margins(disp_min, disp_max, corr_cfg)

Get margins for the dense matching steps

Parameters
  • disp_min (int) – Minimum disparity

  • disp_max (int) – Maximum disparity

  • corr_cfg (dict) – Correlator configuration

Returns

margins of the matching algorithm used

cars.applications.dense_matching.dense_matching_tools.get_masks_from_pandora(disp: xarray.Dataset, compute_disparity_masks: bool) Dict[str, numpy.ndarray]

Get masks dictionary from the disparity map in output of pandora.

Parameters
  • disp – disparity map (pandora output)

  • compute_disparity_masks – compute_disparity_masks activation status

Returns

masks dictionary

cars.applications.dense_matching.dense_matching_tools.add_disparity_grids(output_dataset: xarray.Dataset, disp_min_grid: numpy.ndarray = None, disp_max_grid: numpy.ndarray = None)

Add disparity min and max grids to dataset

Parameters
  • output_dataset – output dataset

  • disp_min_grid – dense disparity map grid min

  • disp_max_grid – dense disparity map grid max

cars.applications.dense_matching.dense_matching_tools.add_color(output_dataset: xarray.Dataset, color: numpy.ndarray = None, color_type=None, band_im: list = None)

Add color and color mask to dataset

Parameters
  • output_dataset – output dataset

  • color – color array

  • color_type – data type of pixels

  • band_im – list of band names

cars.applications.dense_matching.dense_matching_tools.add_classification(output_dataset: xarray.Dataset, classif: numpy.ndarray = None, band_classif: list = None)

Add classification to dataset

Parameters
  • output_dataset – output dataset

  • classif – classif array

  • band_im – list of band names

cars.applications.dense_matching.dense_matching_tools.create_disp_dataset(disp: xarray.Dataset, ref_dataset: xarray.Dataset, secondary_dataset: xarray.Dataset, compute_disparity_masks: bool = False, generate_performance_map=False, perf_ambiguity_threshold=0.6, disp_to_alt_ratio=None, disp_min_grid=None, disp_max_grid=None, cropped_range=None) xarray.Dataset

Create the disparity dataset.

Parameters
  • disp – disparity map (result of pandora)

  • ref_dataset – reference dataset for the considered disparity map

  • secondary_dataset – secondary dataset for the considered disparity map

  • compute_disparity_masks – compute_disparity_masks activation status

  • generate_performance_map (bool) – True if generate performance map

  • perf_ambiguity_threshold (float) – ambiguity threshold used for performance map

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

  • disp_min_grid – disparity min grid

  • disp_max_grid – disparity max grid

  • cropped_range (numpy array) – true if disparity range was cropped

Returns

disparity dataset as used in cars

cars.applications.dense_matching.dense_matching_tools.add_crop_info(disp_ds, cropped_range)

Add crop info

Parameters
  • disp – disp xarray

  • cropped_range – was cropped range, bool

:return updated dataset

cars.applications.dense_matching.dense_matching_tools.estimate_right_classif_on_left(right_classif, disp_map, disp_mask, disp_min, disp_max)

Estimate right classif on left image

Parameters
  • right_classif (np ndarray) – right classification

  • disp_map (np ndarray) – disparity map

  • disp_mask (np ndarray) – disparity mask

  • disp_min (int) – disparity min

  • disp_max (int) – disparity max

Returns

right classif on left image

Return type

np nadarray

cars.applications.dense_matching.dense_matching_tools.merge_classif_left_right(left_classif, left_band_classif, right_classif, right_band_classif)

Merge left and right classif

Parameters
  • left_classif (np nadarray) – left classif

  • left_band_classif (list) – list of tag

  • right_classif (np nadarray) – left classif

  • right_band_classif (list) – list of tag

Returns

merged classif, merged tag list

Return type

np ndarray, list

cars.applications.dense_matching.dense_matching_tools.add_confidence(output_dataset: xarray.Dataset, disp: xarray.Dataset, ref_roi: List[int])

Add confidences to dataset

Parameters
  • output_dataset – output dataset

  • disp – disp xarray

cars.applications.dense_matching.dense_matching_tools.add_performance_map(output_dataset: xarray.Dataset, disp: xarray.Dataset, ref_roi: List[int], perf_ambiguity_threshold: float, disp_to_alt_ratio: float)

Add performance map to dataset

Parameters
  • output_dataset – output dataset

  • disp – disp xarray

  • perf_ambiguity_threshold (float) – ambiguity threshold used for performance map

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

cars.applications.dense_matching.dense_matching_tools.compute_disparity_grid(disp_range_grid, left_image_object)

Compute dense disparity grids min and max for pandora superposable to left image

Parameters
  • disp_range_grid (CarsDataset) – disp range grid with min and max grids

  • left_image_object (xr.Dataset) – left image

:return disp min map, disp_max_map :rtype np.ndarray, np.ndarray

cars.applications.dense_matching.dense_matching_tools.compute_disparity(left_dataset, right_dataset, corr_cfg, disp_min_grid=None, disp_max_grid=None, compute_disparity_masks=False, generate_performance_map=False, perf_ambiguity_threshold=0.6, disp_to_alt_ratio=None, cropped_range=None) Dict[str, xarray.Dataset]

This function will compute disparity.

Parameters
  • left_dataset (xarray.Dataset) – Dataset containing left image and mask

  • right_dataset (xarray.Dataset) – Dataset containing right image and mask

  • corr_cfg (dict) – Correlator configuration

  • disp_min_grid (np ndarray) – Minimum disparity grid (if None, value is taken from left dataset)

  • disp_max_grid (np ndarray) – Maximum disparity grid (if None, value is taken from left dataset)

  • compute_disparity_masks (Boolean) – Activation of compute_disparity_masks mode

  • generate_performance_map (bool) – True if generate performance map

  • perf_ambiguity_threshold (float) – ambiguity threshold used for performance map

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

  • cropped_range (numpy array) – true if disparity range was cropped

Returns

Disparity dataset

cars.applications.dense_matching.dense_matching_tools.estimate_right_grid_disp(disp_min_grid, disp_max_grid)

Estimate right grid min and max. Correspond to the range of pixels that can be correlated from left -> right. If no left pixels can be associated to right, use global values

Parameters
  • disp_min_grid (numpy ndarray) – left disp min grid

  • disp_max_grid (numpy ndarray) – left disp max grid

Returns

disp_min_right_grid, disp_max_right_grid

Return type

numpy ndarray, numpy ndarray

cars.applications.dense_matching.dense_matching_tools.optimal_tile_size_pandora_plugin_libsgm(disp_min: int, disp_max: int, min_tile_size: int, max_tile_size: int, max_ram_per_worker: int, tile_size_rounding: int = 50, margin: int = 0) int

Compute optimal tile size according to estimated memory usage (pandora_plugin_libsgm) Returned optimal tile size will be at least equal to tile_size_rounding.

Parameters
  • disp_min – Minimum disparity to explore

  • disp_max – Maximum disparity to explore

  • min_tile_size – Minimal tile size

  • max_tile_size – Maximal tile size

  • max_ram_per_worker – amount of RAM allocated per worker

  • tile_size_rounding – Optimal tile size will be aligned to multiples of tile_size_rounding

  • margin – margin to remove to the computed tile size (as a percent of the computed tile size)

Returns

Optimal tile size according to benchmarked memory usage

cars.applications.dense_matching.dense_matching_tools.get_max_disp_from_opt_tile_size(opt_epipolar_tile_size, max_ram_per_worker, margin=0, used_disparity_range=0)

Compute max range possible depending on max ram per worker Return max range usable

Parameters
  • opt_epipolar_tile_size – used tile size

  • max_ram_per_worker – amount of RAM allocated per worker

  • tile_size_rounding – Optimal tile size will be aligned to multiples of tile_size_rounding

  • margin – margin to remove to the computed tile size (as a percent of the computed tile size)

Returns

max disp range to use

class cars.applications.dense_matching.dense_matching_tools.LinearInterpNearestExtrap(points, values)

Linear interpolation and nearest neighbour extrapolation

__call__(*args)