3-D affine geometric transformation
affine3d object stores information about a 3-D affine
geometric transformation and enables forward and inverse transformations.
You can create an
affine3d object using the following
tform = affine3d creates an
object with default property settings that correspond to the identity
tform = affine3d( sets the
T with a valid affine transformation defined by
T— Forward 3-D affine transformation
Forward 3-D affine transformation, specified as a nonsingular 4-by-4 numeric matrix.
T uses the convention:
[x y z 1] = [u v w 1] * T
T has the form:
[a b c 0; d e f 0; g h i 0; j k l 1];
The default of
T is the identity
Dimensionality— Describes the dimensionality of the geometric transformation
Describes the dimensionality of the geometric transformation for both input and output points, specified as the value 3.
|Invert geometric transformation|
|Determine if transformation is rigid transformation|
|Determine if transformation is similarity transformation|
|Determine if transformation is pure translation|
|Find output spatial limits given input spatial limits|
|Apply forward geometric transformation|
|Apply inverse geometric transformation|
affine3d object that scales a 3-D image by a different factor in each dimension.
Sx = 1.2; Sy = 1.6; Sz = 2.4; tform = affine3d([Sx 0 0 0; 0 Sy 0 0; 0 0 Sz 0; 0 0 0 1])
tform = affine3d with properties: T: [4x4 double] Dimensionality: 3
Load a 3-D volume into the workspace.
load('mri'); D = squeeze(D);
Apply the geometric transformation to the image using
B = imwarp(D,tform);
Visualize an axial slice through the center of each volume to see the effect of scale translation. Note that the center slice of the transformed volume has a different index than the center slice of the original volume because of the scaling in the z-dimension.
The original image is on the left, and the transformed image is on the right. The transformed image is scaled more in the vertical direction than in the horizontal direction, as expected since
Sy is larger than
Usage notes and limitations:
affine3d supports the generation of C
code (requires MATLAB®
Coder™). For more information, see Code Generation for Image Processing.
When generating code, you can only specify singular objects—arrays of objects are not supported.
backgroundPoolor accelerate code with Parallel Computing Toolbox™
This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.