pandora2d.criteria
This module contains functions associated to the validity mask and criteria dataarray created in the cost volume step.
Attributes
Classes
NDArray subclass that expects to be filled with Flags and with dedicated repr. |
Functions
|
Return disparity grid from left image according to cost_volumes row and col coordinates. |
|
Apply scipy binary_dilation on our image dataset while keeping the coordinates. |
|
This method creates the criteria_dataarray with the same dimensions as cost_volumes (cv). |
|
This method fill the criteria dataarray with the different criteria obtained thanks to |
|
This method raises P2D_LEFT_BORDER criteria on the edges of the left image |
This method raises P2D_RIGHT_DISPARITY_OUTSIDE criteria for points with disparity dimension outside |
|
|
Set Criteria.P2D_LEFT_NODATA on pixels where a no_data is present in the window around its |
|
Set Criteria.P2D_RIGHT_NODATA on pixels where a no_data is present in the window around its |
|
This method raises P2D_INVALID_MASK_LEFT criteria for points having |
|
This method raises P2D_INVALID_MASK_RIGHT criteria for points having |
|
Get mask for points of the image that are neither valid |
This method apply mask_criteria_right array on criteria_dataarray according |
|
|
This method apply mask_criteria_right array on criteria_dataarray according |
|
This method raises P2D_INVALID_INIT_DISPARITY criteria for points (row, col) |
|
This method raises P2D_PEAK_ON_EDGE criteria for points (row, col) |
|
Allocate the validity dataset which contains an additional 'criteria' dimension. |
|
Fill the validity dataset which contains two additional 'criteria' dimensions. |
|
This method fills the validity mask band according to the criteria dataarray given as a parameter. |
|
This method fills the partial validity mask band according to the criteria dataarray given as a parameter. |
Module Contents
- class pandora2d.criteria.FlagArray(shape, dtype=float, buffer=None, offset=0, strides=None, order=None)[source]
Bases:
numpy.ndarrayNDArray subclass that expects to be filled with Flags and with dedicated repr.
- 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