pandora2d.multiscale.model_estimation
This module contains methods associated to the estimation model for the MVP
Attributes
Functions
|
Compute mask for points equal to invalid_disp in row_map or col_map. |
|
Add a 'MESH_validity' band to an existing validity dataset. |
|
Construct initial et final positions vectors using dataset_disp_maps coordinates |
|
Construct a 2D polynomial design matrix up to a given degree. |
|
Check if we have more parameters than observations, in which case a ValueError is raised. |
|
Estimate deformation model from initial positions to final positions |
|
Estimate deformation model from initial positions to final positions |
Estimate initial disparity grids (rows and columns) according to scale factor |
|
|
Return list of shape for mesh for next resolution. |
|
Concatenate the estimated disparity grids computed by mesh |
|
Return initial disparity grid after computing least square coefficients |
Return initial disparity grid after computing least square coefficients |
Module Contents
- pandora2d.multiscale.model_estimation.get_invalid_disp_mask(row_map: numpy.typing.NDArray, col_map: numpy.typing.NDArray, invalid_disp: int | float) numpy.typing.NDArray[source]
Compute mask for points equal to invalid_disp in row_map or col_map. This mask is then used to remove invalid points from position vectors.
- Parameters:
row_map – row disparity map
col_map – col disparity map
invalid_disp – invalid disparity value
- Returns:
invalid mask for position matrix
- pandora2d.multiscale.model_estimation.add_mesh_validity_band(dataset_disp_maps: xarray.Dataset) xarray.Dataset[source]
Add a ‘MESH_validity’ band to an existing validity dataset.
- Parameters:
dataset_disp_maps – xarray Dataset containing the validity data and the disparity maps
- pandora2d.multiscale.model_estimation.make_position_vectors(dataset_disp_maps: xarray.Dataset) Tuple[numpy.typing.NDArray, numpy.typing.NDArray, numpy.typing.NDArray, numpy.typing.NDArray][source]
Construct initial et final positions vectors using dataset_disp_maps coordinates and disparity maps. To reduce numerical instability, a compression factor is used to create the final and initial position grids.
- For the least squares problem y=Xb:
X is constructed using init_row_coords and init_col_coords
y is either final_row_coords or final_col_coords.
- Parameters:
dataset_disp_maps – disparity maps dataset
- Returns:
initial position vectors and final position vectors
- pandora2d.multiscale.model_estimation.make_polynomial_design_matrix(row_init_coords: numpy.typing.NDArray, col_init_coords: numpy.typing.NDArray, degree: int) numpy.typing.NDArray[source]
Construct a 2D polynomial design matrix up to a given degree.
It generates all polynomial combination of the input variables col_init_coords and row_init_coords.
For the least squares problem y=Xb, X is the design matrix.
- Parameters:
col_init_coords – initial column positions
row_init_coords – initial row positions
degree – polynomial degree
- Returns:
polynomial design matrix
- pandora2d.multiscale.model_estimation.check_nb_observations(design_matrix: numpy.typing.NDArray)[source]
Check if we have more parameters than observations, in which case a ValueError is raised.
- Parameters:
design_matrix – Design matrix
- pandora2d.multiscale.model_estimation.estimate_model(dataset_disp_maps: xarray.Dataset, degree: int) Tuple[numpy.typing.NDArray, numpy.typing.NDArray, numpy.typing.NDArray, numpy.typing.NDArray][source]
Estimate deformation model from initial positions to final positions by resolving y=Xb.
- Parameters:
degree – polynomial degree
dataset_disp_maps – disparity maps dataset
- Returns:
least square solution and sum of residuals for rows and columns
- pandora2d.multiscale.model_estimation.estimate_model_cholesky(dataset_disp_maps: xarray.Dataset, degree: int, lambda_ridge: int | float | None = None) Tuple[numpy.typing.NDArray, numpy.typing.NDArray, numpy.typing.NDArray, numpy.typing.NDArray][source]
Estimate deformation model from initial positions to final positions by resolving y=Xb using Cholesky decomposition.
We have X.T*X*b = X.T*y and X.T*X = L*L.T with L a lower triangular matrix. Then, using Cholesky decomposition we can resolve L*z=X.T*y and L.T*b = z.
If a value is specified for lamba_ridge, Ridge regularization is used.
- Parameters:
dataset_disp_maps – disparity maps dataset
degree – polynomial degree
lambda_ridge – Ridge regularization factor
- Returns:
least square solution and sum of residuals for rows and columns
- pandora2d.multiscale.model_estimation.estimate_init_disparity_grids(dataset_disp_maps: xarray.Dataset, coefficients_row: numpy.typing.NDArray, coefficients_col: numpy.typing.NDArray, degree: int, next_resolution_shape: Tuple) Tuple[numpy.typing.NDArray, numpy.typing.NDArray][source]
Estimate initial disparity grids (rows and columns) according to scale factor and coefficients of least squares resolution.
- Parameters:
dataset_disp_maps – disparity maps dataset
coefficients_row – row coefficients computed by least squares resolution
coefficients_col – col coefficients computed by least squares resolution
degree – polynomial degree
next_resolution_shape – shape of image for next resolution
- Returns:
initial disparity grids for rows and columns
- pandora2d.multiscale.model_estimation.get_next_shape_mesh_list(next_resolution_shape: int, nb_mesh: int) List[int][source]
Return list of shape for mesh for next resolution. This list is then used to estimate initial disparity grid at next resolution with the right shape for each mesh.
- Parameters:
next_resolution_shape – next resolution shape (row or column)
nb_mesh – number of mesh (row or column)
- Returns:
List of shape by mesh (row or column)
- pandora2d.multiscale.model_estimation.concatenate_estimated_grids(estimated_init_grid_list: List[numpy.typing.NDArray], nb_row_mesh: int, nb_col_mesh: int) numpy.typing.NDArray[source]
Concatenate the estimated disparity grids computed by mesh and return the full initial disparity grid for next resolution.
- Parameters:
estimated_init_grid_list
nb_row_mesh – number of mesh for rows
nb_col_mesh – number of mesh for columns
- Returns:
full estimated initial disparity grid for next resolution
- pandora2d.multiscale.model_estimation.get_init_disparity_grids(dataset_disp_maps: xarray.Dataset, multiscale_cfg: Dict, next_resolution_shape: Tuple) Tuple[numpy.typing.NDArray, numpy.typing.NDArray, numpy.typing.NDArray, numpy.typing.NDArray][source]
Return initial disparity grid after computing least square coefficients
- Parameters:
dataset_disp_maps – disparity maps dataset
multiscale_cfg – multiscale pipeline configuration
next_resolution_shape – shape of image for next resolution
- Returns:
initial disparity grids for rows and columns and sum of squared residuals
- pandora2d.multiscale.model_estimation.get_init_disparity_grids_with_mesh(dataset_disp_maps: xarray.Dataset, multiscale_cfg: Dict, next_resolution_shape: Tuple) Tuple[numpy.typing.NDArray, numpy.typing.NDArray, numpy.typing.NDArray, numpy.typing.NDArray, xarray.Dataset][source]
Return initial disparity grid after computing least square coefficients for each mesh
- Parameters:
dataset_disp_maps – disparity maps dataset
multiscale_cfg – multiscale pipeline configuration
next_resolution_shape – shape of image for next resolution
- Returns:
initial disparity grids for rows and columns and RMSE for row and columns