bundles / skimage 0.26.1rc0.dev0+git20260530.b607368ff / skimage / transform / _geometric / EuclideanTransform
ABCMeta
skimage.transform._geometric:EuclideanTransform
source: /dev/scikit-image/src/skimage/transform/_geometric.py :1813
Signature
def EuclideanTransform ( matrix = None , * , rotation = None , translation = None , dimensionality = None ) Members
Summary
Euclidean transformation, also known as a rigid transform.
Extended Summary
Has the following form
X = a0 * x - b0 * y + a1 = = x * cos(rotation) - y * sin(rotation) + a1 Y = b0 * x + a0 * y + b1 = = x * sin(rotation) + y * cos(rotation) + b1
where the homogeneous transformation matrix is
[[a0 -b0 a1] [b0 a0 b1] [0 0 1 ]]
The Euclidean transformation is a rigid transformation with rotation and translation parameters. The similarity transformation extends the Euclidean transformation with a single scaling factor.
In 2D and 3D, the transformation parameters may be provided either via matrix, the homogeneous transformation matrix, above, or via the implicit parameters rotation and/or translation (where a1 is the translation along x, b1 along y, etc.). Beyond 3D, if the transformation is only a translation, you may use the implicit parameter translation; otherwise, you must use matrix.
The implicit parameters are applied in the following order:
Rotation;
Translation.
Parameters
matrix: array_like of shape (K, K), with K=D+1 (D being the dimensionality), optionalHomogeneous transformation matrix.
rotation: float or sequence of float, optionalRotation angle, clockwise, in radians. If given as a vector, it is interpreted as Euler rotation angles [1]. Only 2D (single rotation) and 3D (Euler rotations) values are supported. For higher dimensions, you must provide or estimate the transformation matrix instead, and pass that as
matrixabove.translation: (x, y[, z, ...]) sequence of float, length D, optionalTranslation parameters for each axis.
dimensionality: int, optionalFallback number of dimensions for transform when no other parameter is specified. Otherwise ignored, and we infer dimensionality from the input parameters.
Attributes
params: ndarray of shape (K, K), with K=D+1 (D being the dimensionality)Homogeneous transformation matrix.
Examples
import numpy as np import skimage as ski✓
tform = ski.transform.EuclideanTransform(np.diag([2., 3., 1.])) tform.params✓
tform = ski.transform.EuclideanTransform( rotation=0.2, translation=[1, 2]) np.round(tform.params, 2)✓
src = np.array([[150, 150], [250, 100], [150, 200]]) dst = np.array([[200, 200], [300, 150], [150, 400]]) tform = ski.transform.EuclideanTransform.from_estimate(src, dst) np.allclose(tform.params, [[ 0.99, 0.12, 16.77], [-0.12, 0.99, 122.91], [ 0. , 0. , 1. ]], atol=0.01)✓
img = ski.data.astronaut() warped = ski.transform.warp(img, inverse_map=tform.inverse)✓
if tform: print("Estimation succeeded.") bad_src = np.ones((3, 2)) bad_tform = ski.transform.EuclideanTransform.from_estimate( bad_src, dst) if not bad_tform: print("Estimation failed.")✓
bad_tform.params # doctest: +IGNORE_EXCEPTION_DETAIL
✓Aliases
-
skimage.transform.EuclideanTransform