xdem.coreg.ICP#
- class xdem.coreg.ICP(max_iterations=100, tolerance=0.05, rejection_scale=2.5, num_levels=6, subsample=500000.0)[source]#
Iterative closest point registration, based on Besl and McKay (1992), https://doi.org/10.1117/12.57955.
Estimates a rigid transform (rotation + translation) between two elevation datasets.
The estimated transform is stored in the self.meta[“outputs”][“affine”] key “matrix”, with rotation centered on the coordinates in the key “centroid”. The translation parameters are also stored individually in the keys “shift_x”, “shift_y” and “shift_z” (in georeferenced units for horizontal shifts, and unit of the elevation dataset inputs for the vertical shift).
Requires ‘opencv’. See opencv doc for more info: https://docs.opencv.org/master/dc/d9b/classcv_1_1ppf__match__3d_1_1ICP.html
- __init__(max_iterations=100, tolerance=0.05, rejection_scale=2.5, num_levels=6, subsample=500000.0)[source]#
Instantiate an ICP coregistration object.
- Parameters:
max_iterations (
int
) – The maximum allowed iterations before stopping.tolerance (
float
) – The residual change threshold after which to stop the iterations.rejection_scale (
float
) – The threshold (std * rejection_scale) to consider points as outliers.num_levels (
int
) – Number of octree levels to consider. A higher number is faster but may be more inaccurate.subsample (
float
|int
) – Subsample the input for speed-up. <1 is parsed as a fraction. >1 is a pixel count.
Methods
__init__
([max_iterations, tolerance, ...])Instantiate an ICP coregistration object.
apply
(elev[, bias_vars, resample, ...])Apply the estimated transform to a DEM.
centroid
()Get the centroid of the coregistration, if defined.
copy
()Return an identical copy of the class.
error
(reference_elev, to_be_aligned_elev[, ...])Calculate the error of a coregistration approach.
fit
(reference_elev, to_be_aligned_elev[, ...])Estimate the coregistration transform on the given DEMs.
fit_and_apply
(reference_elev, to_be_aligned_elev)Estimate and apply the coregistration to a pair of elevation data.
from_matrix
(matrix)Instantiate a generic Coreg class from a transformation matrix.
from_rotations
([x_rot, y_rot, z_rot])Instantiate a generic Coreg class from a X/Y/Z rotation.
from_translations
([x_off, y_off, z_off])Instantiate a generic Coreg class from a X/Y/Z translation.
info
([as_str])Summarize information about this coregistration.
residuals
(reference_elev, to_be_aligned_elev)Calculate the residual offsets (the difference) between two DEMs after applying the transformation.
to_matrix
()Convert the transform to a 4x4 transformation matrix.
to_rotations
()Extract X/Y/Z euler rotations (extrinsic convention) from the affine transformation matrix.
to_translations
()Extract X/Y/Z translations from the affine transformation matrix.
Attributes
is_affine
Check if the transform be explained by a 3D affine transform.
is_translation
meta
Metadata dictionary of the coregistration.