Fit geometric transformation to control point pairs
tform = fitgeotrans(movingPoints,fixedPoints,transformationType)
tform = fitgeotrans(movingPoints,fixedPoints,'polynomial',degree)
tform = fitgeotrans(movingPoints,fixedPoints,'pwl')
tform = fitgeotrans(movingPoints,fixedPoints,'lwm',n)
an images.geotrans.PiecewiseLinearTransformation2D object to control
tform = fitgeotrans(
This transformation maps control points by breaking up the plane into
local piecewise-linear regions in which a different affine transformation
maps control points in each local region.
fits an images.geotrans.LocalWeightedMeanTransformation2D object to
control point pairs
tform = fitgeotrans(
The local weighted mean transformation creates a mapping, by inferring
a polynomial at each control point using neighboring control points.
The mapping at any location depends on a weighted average of these
n closest points are used to
infer a second degree polynomial transformation for each control point
Code Generation support: Yes.
MATLAB Function Block support: Yes.
This example shows how to create a geometric transformation that can be used to align two images.
Create a checkerboard image and rotate it to create a misaligned image.
I = checkerboard; J = imrotate(I,30); imshowpair(I,J,'montage')
Define some control points on the fixed image (the checkerboard) and moving image (the rotated checkerboard). You can define points interactively using the Control Point Selection tool.
fixedPoints = [11 11; 41 71]; movingPoints = [14 44; 70 81];
Create a geometric transformation that can be used to align the two images, returned as an
affine2d geometric transformation object.
tform = fitgeotrans(movingPoints,fixedPoints,'NonreflectiveSimilarity')
tform = affine2d with properties: T: [3x3 double] Dimensionality: 2
tform estimate to resample the rotated image to register it with the fixed image. The regions of color (green and magenta) in the false color overlay image indicate error in the registration due to lack of precise correspondence in the control points.
Jregistered = imwarp(J,tform,'OutputView',imref2d(size(I))); falsecolorOverlay = imfuse(I,Jregistered); figure imshow(falsecolorOverlay,'InitialMagnification','fit');
Recover angle and scale of the transformation by checking how a unit vector parallel to the x-axis is rotated and stretched.
u = [0 1]; v = [0 0]; [x, y] = transformPointsForward(tform, u, v); dx = x(2) - x(1); dy = y(2) - y(1); angle = (180/pi) * atan2(dy, dx) scale = 1 / sqrt(dx^2 + dy^2)
angle = 29.9816 scale = 1.0006
movingPoints— X and Y coordinates of control points in the image you want to transformm-by-2 double matrix
X and Y coordinates of control points in the image you want to transform, specified as an m-by-2 double matrix.
fixedPoints = [11 11; 41 71];
fixedPoints— X and Y coordinates of control points in the base imagem-by-2 double matrix
X and Y coordinates of control points in the base image, specified as an m-by-2 double matrix.
movingPoints = [14 44; 70 81];
transformationType— Type of transformation
Type of transformation, specified as one of the following text strings.
tform = fitgeotrans(movingPoints,fixedPoints,'nonreflectivesimilarity');
degree— Degree of the polynomial2 | 3 | 4
Degree of the polynomial, specified as the integer 2, 3, or 4.
Number of points to use in local weighted mean calculation,
specified as a numeric value.
n can be as small
as 6, but making
n small risks generating ill-conditioned
tform— Transformationtransformation object
Transformation, specified as a transformation object. The type
of object depends on the transformation type. For example, if you
specify the transformation type
affine2d object. If you specify
This function supports the generation of C code using MATLAB® Coder™. For more information, see Code Generation for Image Processing.
When generating code, the
must be a compile-time constant and only the following transformation
types are supported:
You can use this function in the MATLAB Function Block in Simulink.
 Goshtasby, Ardeshir, "Piecewise linear mapping functions for image registration," Pattern Recognition, Vol. 19, 1986, pp. 459-466.
 Goshtasby, Ardeshir, "Image registration by local approximation methods," Image and Vision Computing, Vol. 6, 1988, pp. 255-261.