pandora2d.matching_cost.base ============================ .. py:module:: pandora2d.matching_cost.base .. autoapi-nested-parse:: Module for common base of all MatchingCost methods. Classes ------- .. autoapisummary:: pandora2d.matching_cost.base.BaseMatchingCost Functions --------- .. autoapisummary:: pandora2d.matching_cost.base.set_out_of_row_disparity_range_to_other_value pandora2d.matching_cost.base.set_out_of_col_disparity_range_to_other_value Module Contents --------------- .. py:class:: BaseMatchingCost(cfg: dict) Bases: :py:obj:`abc.ABC` MatchingCost base class. .. py:attribute:: _cfg .. py:attribute:: _method .. py:attribute:: _step_row .. py:attribute:: _step_col .. py:attribute:: _window_size .. py:attribute:: _subpix .. py:attribute:: _spline_order .. py:attribute:: _float_precision .. py:attribute:: cost_volumes :type: xarray.Dataset | None :value: None .. py:attribute:: shifted_right_images :type: list[xarray.Dataset] :value: [] .. py:property:: schema .. py:property:: defaults .. py:method:: check_conf(cfg: dict) -> dict[str, str] Check the matching cost configuration :param cfg: user_config for matching cost :return: cfg: global configuration .. py:method:: _update_with_default_config_values(cfg: dict) .. py:property:: cfg :type: collections.abc.Mapping[str, str | int | list[int]] Get used configuration :return: cfg: dictionary with all parameters .. py:property:: step :type: list[int] Get step [row, col] :return: step: list with row & col step .. py:property:: window_size :type: int Get window_size :return: window_size: window used to compute correlation .. py:method:: 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 Allocate the cost volumes :param cost_volume_attr: the cost_volume's attributes :param row: dimension of the image (row) :param col: dimension of the image (columns) :param disp_range_row: rows disparity range. :param disp_range_col: columns disparity range. :param np_data: 4D numpy.ndarray og cost_volumes. Defaults to None. :return: cost_volumes: 4D Dataset containing the cost_volumes .. py:method:: 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] Compute cost_volumes row and col coordinates according to image coordinates :param img_row_coordinates: row coordinates of left image :param img_col_coordinates: col coordinates of left image :param cfg: matching_cost computation configuration :return: a Tuple of np.ndarray that contains the right coordinates for row and col .. py:method:: get_disp_row_coords(img_left: xarray.Dataset, margins: pandora2d.margins.Margins) -> numpy.typing.NDArray Compute cost_volumes row disparity coordinates according to image disparities :param img_left: xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray :param margins: refinement margins :return: a Tuple of np.ndarray that contains the right coordinates for disparities .. py:method:: get_disp_col_coords(img_left: xarray.Dataset, margins: pandora2d.margins.Margins) -> numpy.typing.NDArray Compute cost_volumes col disparity coordinates according to image disparities :param img_left: xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray :param margins: refinement margins :return: a Tuple of np.ndarray that contains the right coordinates for disparities .. py:method:: cfg_for_get_coordinates(cfg: dict) -> dict :staticmethod: 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"] :param cfg: user configuration :return: updated configuration to be sure to process the first point of ROI when ROI margin > ROI first point (left or up) .. py:property:: margins :abstractmethod: .. py:method:: allocate(img_left: xarray.Dataset, img_right: xarray.Dataset, cfg: dict, margins: pandora2d.margins.Margins = None) -> None Allocate the cost volume :param img_left: xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray :param img_right: xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray :param cfg: matching_cost computation configuration :param margins: refinement margins :return: None .. py:method:: set_out_of_disparity_range_to_other_value(img_left: xarray.Dataset, value: int | float) -> None 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. :param img_left: left image xarray.Dataset :param value: value to set on data. .. py:method:: set_shifted_right_images(img_right: xarray.Dataset) -> None :abstractmethod: Compute shifted by subpix right image and assign `shifted_right_images` attribute. :param img_right: xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray :return: None .. py:method:: compute_cost_volumes(img_left: xarray.Dataset, img_right: xarray.Dataset, margins: pandora2d.margins.Margins = None) -> xarray.Dataset :abstractmethod: Computes the cost volumes :param img_left: xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray :param img_right: xarray.Dataset containing : - im : 2D (row, col) xarray.DataArray - msk : 2D (row, col) xarray.DataArray :param margins: refinement margins :return: cost_volumes: 4D Dataset containing the cost_volumes .. py:function:: 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 Put special value in data where the row disparity is out of the range defined by disparity grids. The operation is done inplace. :param data: cost_volumes to modify. :param min_disp_grid: grid of min disparity. :param max_disp_grid: grid of max disparity. :param value: value to set on data. :param global_disparity_range: global row disparity range .. py:function:: 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 Put special value in data where the column disparity is out of the range defined by disparity grids. The operation is done inplace. :param data: cost_volumes to modify. :param min_disp_grid: grid of min disparity. :param max_disp_grid: grid of max disparity. :param value: value to set on data. :param global_disparity_range: global column disparity range