fitgeotrans() - Image Processing
tform = fitgeotrans(movingPoints,fixedPoints,transformationType) takes
the pairs of control points, movingPoints and fixedPoints,
and uses them to infer the geometric transformation, specified by transformationType. tform = fitgeotrans(movingPoints,fixedPoints,'polynomial',degree) fits
an images.geotrans.PolynomialTransformation2D object to control point
pairs movingPoints and fixedPoints.
Specify the degree of the polynomial transformation degree,
which can be 2, 3, or 4.tform = fitgeotrans(movingPoints,fixedPoints,'pwl') fits
an images.geotrans.PiecewiseLinearTransformation2D object to control
point pairs movingPoints and fixedPoints.
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.tform = fitgeotrans(movingPoints,fixedPoints,'lwm',n)
fits an images.geotrans.LocalWeightedMeanTransformation2D object to
control point pairs movingPoints and fixedPoints.
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
polynomials. The n closest points are used to
infer a second degree polynomial transformation for each control point
pair.Code Generation support:
Yes.MATLAB Function Block support:
Yes.
Syntax
tform = fitgeotrans(movingPoints,fixedPoints,transformationType) exampletform = fitgeotrans(movingPoints,fixedPoints,'polynomial',degree)tform = fitgeotrans(movingPoints,fixedPoints,'pwl')tform = fitgeotrans(movingPoints,fixedPoints,'lwm',n)
Example
Create Geometric Transformation for Image AlignmentOpen This Example
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
Use the 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
Output / Return Value
Limitations
Alternatives / See Also
Reference