pandora2d.matching_cost.base

Module for common base of all MatchingCost methods.

Classes

BaseMatchingCost

MatchingCost base class.

Functions

set_out_of_row_disparity_range_to_other_value(→ None)

Put special value in data where the row disparity is out of the range defined by disparity grids.

set_out_of_col_disparity_range_to_other_value(→ None)

Put special value in data where the column disparity is out of the range defined

Module Contents

class pandora2d.matching_cost.base.BaseMatchingCost(cfg: dict)[source]

Bases: abc.ABC

MatchingCost base class.

_cfg[source]
_method[source]
_step_row[source]
_step_col[source]
_window_size[source]
_subpix[source]
_spline_order[source]
_float_precision[source]
cost_volumes: xarray.Dataset | None = None[source]
shifted_right_images: list[xarray.Dataset] = [][source]
property schema[source]
property defaults[source]
check_conf(cfg: dict) dict[str, str][source]

Check the matching cost configuration

Parameters:

cfg – user_config for matching cost

Returns:

cfg: global configuration

_update_with_default_config_values(cfg: dict)[source]
property cfg: collections.abc.Mapping[str, str | int | list[int]][source]

Get used configuration

Returns:

cfg: dictionary with all parameters

property step: list[int][source]

Get step [row, col]

Returns:

step: list with row & col step

property window_size: int[source]

Get window_size

Returns:

window_size: window used to compute correlation

allocate_cost_volumes(cost_volume_attr: dict, row: numpy.ndarray, col: numpy.ndarray, disp_range_row: numpy.ndarray, disp_range_col: numpy.ndarray, np_data: numpy.ndarray = None) xarray.Dataset[source]

Allocate the cost volumes

Parameters:
  • cost_volume_attr – the cost_volume’s attributes

  • row – dimension of the image (row)

  • col – dimension of the image (columns)

  • disp_range_row – rows disparity range.

  • disp_range_col – columns disparity range.

  • np_data – 4D numpy.ndarray og cost_volumes. Defaults to None.

Returns:

cost_volumes: 4D Dataset containing the cost_volumes

get_cv_row_col_coords(img_row_coordinates: numpy.typing.NDArray, img_col_coordinates: numpy.typing.NDArray, cfg: dict) tuple[numpy.typing.NDArray, numpy.typing.NDArray][source]

Compute cost_volumes row and col coordinates according to image coordinates

Parameters:
  • img_row_coordinates – row coordinates of left image

  • img_col_coordinates – col coordinates of left image

  • cfg – matching_cost computation configuration

Returns:

a Tuple of np.ndarray that contains the right coordinates for row and col

get_disp_row_coords(img_left: xarray.Dataset, margins: pandora2d.margins.Margins) numpy.typing.NDArray[source]

Compute cost_volumes row disparity coordinates according to image disparities

Parameters:
  • img_left – xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray

  • margins – refinement margins

Returns:

a Tuple of np.ndarray that contains the right coordinates for disparities

get_disp_col_coords(img_left: xarray.Dataset, margins: pandora2d.margins.Margins) numpy.typing.NDArray[source]

Compute cost_volumes col disparity coordinates according to image disparities

Parameters:
  • img_left – xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray

  • margins – refinement margins

Returns:

a Tuple of np.ndarray that contains the right coordinates for disparities

static cfg_for_get_coordinates(cfg: dict) dict[source]

Return right configuration to give to get_coordinates or get_coordinates_2d methods.

To get right coordinates in cost_volume when initial left_margin > cfg[“ROI”][“col”][“first”] or initial up_margin > cfg[“ROI”][“row”][“first”] We need to have left_margin = cfg[“ROI”][“col”][“first”] and up_margin = cfg[“ROI”][“row”][“first”]

Parameters:

cfg – user configuration

Returns:

updated configuration to be sure to process the first point of ROI when ROI margin > ROI first point (left or up)

abstract property margins[source]
allocate(img_left: xarray.Dataset, img_right: xarray.Dataset, cfg: dict, margins: pandora2d.margins.Margins = None) None[source]

Allocate the cost volume

Parameters:
  • img_left – xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray

  • img_right – xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray

  • cfg – matching_cost computation configuration

  • margins – refinement margins

Returns:

None

set_out_of_disparity_range_to_other_value(img_left: xarray.Dataset, value: int | float) None[source]

Put special value in data where the row or column disparity is out of the range defined by disparity grids.

The operation is done inplace.

Parameters:
  • img_left – left image xarray.Dataset

  • value – value to set on data.

abstract set_shifted_right_images(img_right: xarray.Dataset) None[source]

Compute shifted by subpix right image and assign shifted_right_images attribute.

Parameters:

img_right – xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray

Returns:

None

abstract compute_cost_volumes(img_left: xarray.Dataset, img_right: xarray.Dataset, margins: pandora2d.margins.Margins = None) xarray.Dataset[source]

Computes the cost volumes

Parameters:
  • img_left – xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray

  • img_right – xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray

  • margins – refinement margins

Returns:

cost_volumes: 4D Dataset containing the cost_volumes

pandora2d.matching_cost.base.set_out_of_row_disparity_range_to_other_value(data: xarray.DataArray, min_disp_grid: numpy.typing.NDArray[numpy.floating], max_disp_grid: numpy.typing.NDArray[numpy.floating], value: int | float, global_disparity_range: list[int]) None[source]

Put special value in data where the row disparity is out of the range defined by disparity grids.

The operation is done inplace.

Parameters:
  • data – cost_volumes to modify.

  • min_disp_grid – grid of min disparity.

  • max_disp_grid – grid of max disparity.

  • value – value to set on data.

  • global_disparity_range – global row disparity range

pandora2d.matching_cost.base.set_out_of_col_disparity_range_to_other_value(data: xarray.DataArray, min_disp_grid: numpy.typing.NDArray[numpy.floating], max_disp_grid: numpy.typing.NDArray[numpy.floating], value: int | float, global_disparity_range: list[int]) None[source]

Put special value in data where the column disparity is out of the range defined by disparity grids.

The operation is done inplace.

Parameters:
  • data – cost_volumes to modify.

  • min_disp_grid – grid of min disparity.

  • max_disp_grid – grid of max disparity.

  • value – value to set on data.

  • global_disparity_range – global column disparity range