pandora2d.criteria

This module contains functions associated to the validity mask and criteria dataarray created in the cost volume step.

Attributes

DISPARITY_INDEPENDENT_CRITERIA

DISPARITY_DEPENDENT_CRITERIA

Classes

FlagArray

NDArray subclass that expects to be filled with Flags and with dedicated repr.

Functions

get_disparity_grids(→ tuple[numpy.typing.NDArray, ...)

Return disparity grid from left image according to cost_volumes row and col coordinates.

binary_dilation_dataarray(→ xarray.DataArray)

Apply scipy binary_dilation on our image dataset while keeping the coordinates.

allocate_criteria_dataarray(→ xarray.DataArray)

This method creates the criteria_dataarray with the same dimensions as cost_volumes (cv).

get_criteria_dataarray(→ xarray.DataArray)

This method fill the criteria dataarray with the different criteria obtained thanks to

mask_border(→ None)

This method raises P2D_LEFT_BORDER criteria on the edges of the left image

mask_disparity_outside_right_image(→ None)

This method raises P2D_RIGHT_DISPARITY_OUTSIDE criteria for points with disparity dimension outside

mask_left_no_data(→ None)

Set Criteria.P2D_LEFT_NODATA on pixels where a no_data is present in the window around its

mask_right_no_data(→ None)

Set Criteria.P2D_RIGHT_NODATA on pixels where a no_data is present in the window around its

mask_left_invalid(→ None)

This method raises P2D_INVALID_MASK_LEFT criteria for points having

mask_right_invalid(→ None)

This method raises P2D_INVALID_MASK_RIGHT criteria for points having

get_invalid_mask(→ xarray.DataArray)

Get mask for points of the image that are neither valid

apply_invalid_right_criteria_mask(→ None)

This method apply mask_criteria_right array on criteria_dataarray according

apply_nodata_right_criteria_mask(→ None)

This method apply mask_criteria_right array on criteria_dataarray according

mask_invalid_init_disparity(→ None)

This method raises P2D_INVALID_INIT_DISPARITY criteria for points (row, col)

apply_peak_on_edge(→ None)

This method raises P2D_PEAK_ON_EDGE criteria for points (row, col)

allocate_validity_dataset(→ xarray.Dataset)

Allocate the validity dataset which contains an additional 'criteria' dimension.

get_validity_dataset(→ xarray.Dataset)

Fill the validity dataset which contains two additional 'criteria' dimensions.

get_validity_mask_band(→ numpy.typing.NDArray)

This method fills the validity mask band according to the criteria dataarray given as a parameter.

get_partial_validity_mask_band(→ numpy.typing.NDArray)

This method fills the partial validity mask band according to the criteria dataarray given as a parameter.

Module Contents

pandora2d.criteria.DISPARITY_INDEPENDENT_CRITERIA[source]
pandora2d.criteria.DISPARITY_DEPENDENT_CRITERIA[source]
class pandora2d.criteria.FlagArray(shape, dtype=float, buffer=None, offset=0, strides=None, order=None)[source]

Bases: numpy.ndarray

NDArray subclass that expects to be filled with Flags and with dedicated repr.

__array_finalize__(obj)[source]
__repr__() str[source]
pandora2d.criteria.get_disparity_grids(left_image: xarray.Dataset, cv_coords: tuple[numpy.typing.NDArray, numpy.typing.NDArray]) tuple[numpy.typing.NDArray, numpy.typing.NDArray, numpy.typing.NDArray, numpy.typing.NDArray][source]

Return disparity grid from left image according to cost_volumes row and col coordinates. We need to use the cost volume coordinates to process the right points when the step is different from 1.

Parameters:
  • left_image – left image

  • cv_coords – cost volumes row and column coordinates

Returns:

4 disparity grids

pandora2d.criteria.binary_dilation_dataarray(img: xarray.Dataset, window_size: int) xarray.DataArray[source]

Apply scipy binary_dilation on our image dataset while keeping the coordinates. Get the no_data pixels.

Parameters:
  • img

    Dataset image containing :

    • im: 2D (row, col) or 3D (band_im, row, col) xarray.DataArray float32

    • disparity (optional): 3D (disp, row, col) xarray.DataArray float32

    • msk (optional): 2D (row, col) xarray.DataArray int16

    • classif (optional): 3D (band_classif, row, col) xarray.DataArray int16

    • segm (optional): 2D (row, col) xarray.DataArray int16

  • window_size – window size of the cost volume

Returns:

np.ndarray with location of pixels that are marked as no_data according to the image mask

pandora2d.criteria.allocate_criteria_dataarray(cv: xarray.Dataset, value: int | float | pandora2d.constants.Criteria = Criteria.VALID, data_type: numpy.typing.DTypeLike | None = None) xarray.DataArray[source]

This method creates the criteria_dataarray with the same dimensions as cost_volumes (cv). Initially, all points are considered valid and have the value XX.

Parameters:
  • cv – cost_volumes

  • value – value representing the valid criteria, by default Criteria.VALID = 0

  • data_type – the desired data-type for the criteria_dataarray.

Returns:

criteria_dataarray: 4D DataArray containing the criteria

pandora2d.criteria.get_criteria_dataarray(left_image: xarray.Dataset, right_image: xarray.Dataset, cv: xarray.Dataset) xarray.DataArray[source]

This method fill the criteria dataarray with the different criteria obtained thanks to the methods implemented in this file

Parameters:
  • left_image – left image

  • right_image – right image

  • cv – cost_volumes

Returns:

criteria_dataarray: 4D DataArray containing the criteria

pandora2d.criteria.mask_border(left_image: xarray.Dataset, offset: int, criteria_dataarray: xarray.DataArray) None[source]

This method raises P2D_LEFT_BORDER criteria on the edges of the left image for each of the disparities.

P2D_LEFT_BORDER criteria is non-cumulative, so this method will be called last.

Parameters:
  • left_image – left image

  • offset – offset

  • criteria_dataarray – 4D xarray.DataArray with all criteria

pandora2d.criteria.mask_disparity_outside_right_image(img_right: xarray.Dataset, offset: int, criteria_dataarray: xarray.DataArray) None[source]

This method raises P2D_RIGHT_DISPARITY_OUTSIDE criteria for points with disparity dimension outside the right image

Parameters:
  • img_right – right image.

  • offset – offset

  • criteria_dataarray – 4D xarray.DataArray with all criteria

pandora2d.criteria.mask_left_no_data(left_image: xarray.Dataset, window_size: int, criteria_dataarray: xarray.DataArray) None[source]

Set Criteria.P2D_LEFT_NODATA on pixels where a no_data is present in the window around its position in the mask.

Parameters:
  • left_image – left image with msk data var.

  • window_size – window size

  • criteria_dataaray – criteria dataarray to update

pandora2d.criteria.mask_right_no_data(img_right: xarray.Dataset, window_size: int, criteria_dataarray: xarray.DataArray, spline_order_filter: int) None[source]

Set Criteria.P2D_RIGHT_NODATA on pixels where a no_data is present in the window around its position in the mask shift by its disparity.

Parameters:
  • img_right – right image with msk data var.

  • window_size – window size

  • criteria_dataaray – criteria dataarray to update

  • spline_order_filter – order of the scipy filter

pandora2d.criteria.mask_left_invalid(left_image: xarray.Dataset, criteria_dataarray: xarray.DataArray) None[source]

This method raises P2D_INVALID_MASK_LEFT criteria for points having an invalid point in the left image mask. A point is considered invalid if its value in the msk of the left image is different from the values of the valid_pixels and no_data_mask attributes.

Parameters:
  • left_image – left image with msk data var.

  • criteria_dataaray – criteria dataarray to update

pandora2d.criteria.mask_right_invalid(img_right: xarray.Dataset, criteria_dataarray: xarray.DataArray) None[source]

This method raises P2D_INVALID_MASK_RIGHT criteria for points having an invalid point in the right image mask shift by its disparity. A point is considered invalid if when we shift it by its disparity, the obtained value is different from the values of the valid_pixels and no_data_mask attributes.

Parameters:
  • img_right – right image with msk data var.

  • criteria_dataaray – criteria dataarray to update

pandora2d.criteria.get_invalid_mask(image: xarray.Dataset) xarray.DataArray[source]

Get mask for points of the image that are neither valid or no data.

Parameters:

image – image with msk data var.

Returns:

invalid_mask: mask containing invalid points

pandora2d.criteria.apply_invalid_right_criteria_mask(criteria_dataarray: xarray.DataArray, mask_criteria_right: xarray.DataArray) None[source]

This method apply mask_criteria_right array on criteria_dataarray according to row and column disparities. Ignore invalid pixels from the input mask used in interpolation to raise the P2D_INVALID_MASK_RIGHT criterion

Parameters:
  • criteria_dataaray – criteria dataarray to update

  • mask_criteria_right – mask to apply to criteria dataarray

pandora2d.criteria.apply_nodata_right_criteria_mask(criteria_dataarray: xarray.DataArray, mask_criteria_right: xarray.DataArray, spline_order_filter: int) None[source]

This method apply mask_criteria_right array on criteria_dataarray according to row and column disparities. The P2D_RIGHT_NODATA criterion is raised for sub-pixel disparities if a no-data value from the input mask was used to interpolate the corresponding point.

Parameters:
  • criteria_dataaray – criteria dataarray to update

  • mask_criteria_right – mask to apply to criteria dataarray

  • spline_order_filter – order of the scipy filter

pandora2d.criteria.mask_invalid_init_disparity(criteria_dataarray: xarray.DataArray, left_image_disparity: xarray.DataArray) None[source]

This method raises P2D_INVALID_INIT_DISPARITY criteria for points (row, col) for which the initial disparity is invalid. This criteria is applied on point (row, col), for each disparity value.

Parameters:
  • criteria_dataarray – criteria dataarray to update

  • left_image_disparity – left image disparity dataarray

pandora2d.criteria.apply_peak_on_edge(validity_map: xarray.DataArray, left_image: xarray.Dataset, cv_coords: tuple[numpy.typing.NDArray, numpy.typing.NDArray], row_map: numpy.typing.NDArray, col_map: numpy.typing.NDArray) None[source]

This method raises P2D_PEAK_ON_EDGE criteria for points (row, col) for which the best matching cost is found for the edge of the disparity range. This criteria is applied on point (row, col), for each disparity value.

Parameters:
  • validity_map – 3D validity map

  • left_image – left image

  • cv_coords – cost volumes row and column coordinates

  • row_map – row disparity map

  • col_map – col disparity map

pandora2d.criteria.allocate_validity_dataset(criteria_dataarray: xarray.DataArray) xarray.Dataset[source]

Allocate the validity dataset which contains an additional ‘criteria’ dimension.

Parameters:

criteria_dataarray – criteria_dataarray used to create validity mask

pandora2d.criteria.get_validity_dataset(criteria_dataarray: xarray.DataArray, row_disparity: list, col_disparity: list) xarray.Dataset[source]

Fill the validity dataset which contains two additional ‘criteria’ dimensions.

Parameters:
  • criteria_dataarray – criteria_dataarray used to create validity mask

  • row_disparity – user row disparity

  • col_disparity – user col disparity

Returns:

validity Dataset

pandora2d.criteria.get_validity_mask_band(criteria_dataarray: xarray.DataArray) numpy.typing.NDArray[source]

This method fills the validity mask band according to the criteria dataarray given as a parameter.

This validity mask shows which points of the image are valid and which are not:

A point marked 0 is valid, all the disparity range requested by the user have been computed. All other points are marked 1.

Parameters:

criteria_dataarray – 4D DataArray containing the criteria

Returns:

validity mask band

pandora2d.criteria.get_partial_validity_mask_band(criteria_dataarray: xarray.DataArray) numpy.typing.NDArray[source]

This method fills the partial validity mask band according to the criteria dataarray given as a parameter.

This partial validity mask shows which points of the image are partial or completely invalid:

A point marked 1 is invalid, all disparity range requested by the user can not be computed

Parameters:

criteria_dataarray – 4D DataArray containing the criteria

Returns:

partial validity mask band