Main Content

Matrix Representation of Geometric Transformations

You can use a geometric transformation matrix to perform a global transformation of an image. First, define a transformation matrix and use it to create a geometric transformation object. Then, apply a global transformation to an image by callingimwarpwith the geometric transformation object. For an example, seePerform Simple 2-D Translation Transformation.

2-D Affine Transformations

The table lists 2-D affine transformations with the transformation matrix used to define them. For 2-D affine transformations, the last column must contain [0 0 1] homogeneous coordinates.

Use any combination of 2-D transformation matrices to create anaffine2d几何变换对象。使用combinations of 2-D translation and rotation matrices to create arigid2d几何变换对象。

2-D Affine Transformation Example (Original and Transformed Image) Transformation Matrix
Translation

txspecifies the displacement along thexaxis

tyspecifies the displacement along theyaxis.

For more information about pixel coordinates, seeImage Coordinate Systems.

Scale

sxspecifies the scale factor along thexaxis

syspecifies the scale factor along theyaxis.

剪切

shxspecifies the shear factor along thexaxis

shyspecifies the shear factor along theyaxis.

Rotation

qspecifies the angle of rotation about the origin.

2-D Projective Transformations

Projective transformation enables the plane of the image to tilt. Parallel lines can converge towards a vanishing point, creating the appearance of depth.

The transformation is a 3-by-3 matrix. Unlike affine transformations, there are no restrictions on the last column of the transformation matrix.

2-D Projective Transformation Example Transformation Matrix
Tilt

[ 1 0 E 0 1 F 0 0 1 ]

EandFinfluence the vanishing point.

WhenEandFare large, the vanishing point comes closer to the origin and thus parallel lines appear to converge more quickly.

Note that whenEandFare equal to 0, the transformation becomes an affine transformation.

Projective transformations are frequently used to register images that are out of alignment. If you have two images that you would like to align, first select control point pairs usingcpselect. Then, fit a projective transformation matrix to control point pairs usingfitgeotransand setting thetransformationTypeto'projective'. This automatically creates aprojective2d几何变换对象。The transformation matrix is stored as a property in theprojective2dobject. The transformation can then be applied to other images usingimwarp.

Create Composite 2-D Affine Transformations

You can combine multiple transformations into a single matrix using matrix multiplication. The order of the matrix multiplication matters.

This example shows how to create a composite of 2-D translation and rotation transformations.

Create a checkerboard image that will undergo transformation. Also create a spatial reference object for the image.

cb = checkerboard(4,2); cb_ref = imref2d(size(cb));

To illustrate the spatial position of the image, create a flat background image. Overlay the checkerboard over the background, highlighting the position of the checkerboard in green.

background = zeros(150); imshowpair(cb,cb_ref,background,imref2d(size(background)))

Figure contains an axes object. The axes object contains an object of type image.

Create a translation matrix, and store it as anaffine2d几何变换对象。This translation will shift the image horizontally by 100 pixels.

T = [1 0 0;0 1 0;100 0 1]; tform_t = affine2d(T);

Create a rotation matrix, and store it as anaffine2d几何变换对象。This translation will rotate the image 30 degrees clockwise about the origin.

R = [cosd(30) sind(30) 0;-sind(30) cosd(30) 0;0 0 1]; tform_r = affine2d(R);

Translation Followed by Rotation

Perform translation first and rotation second. In the multiplication of the transformation matrices, the translation matrixTis on the left, and the rotation matrixRis on the right.

TR = T * R;tform_tr = affine2d (TR);, out_ref =imwarp(cb,cb_ref,tform_tr); imshowpair(out,out_ref,background,imref2d(size(background)))

Figure contains an axes object. The axes object contains an object of type image.

Rotation Followed by Translation

Reverse the order of the transformations: perform rotation first and translation second. In the multiplication of the transformation matrices, the rotation matrixRis on the left, and the translation matrixTis on the right.

RT = R*T; tform_rt = affine2d(RT); [out,out_ref] = imwarp(cb,cb_ref,tform_rt); imshowpair(out,out_ref,background,imref2d(size(background)))

Figure contains an axes object. The axes object contains an object of type image.

Notice how the spatial position of the transformed image is different than when translation was followed by rotation.

3-D Affine Transformations

The following table lists the 3-D affine transformations with the transformation matrix used to define them. Note that in the 3-D case, there are multiple matrices, depending on how you want to rotate or shear the image. The last column must contain [0 0 0 1].

Use any combination of 3-D transformation matrices to create anaffine3d几何变换对象。使用combinations of 3-D translation and rotation matrices to create arigid3d几何变换对象。

3-D Affine Transformation Transformation Matrix
Translation

[ 1 0 0 0 0 1 0 0 0 0 1 0 t x t y t z 1 ]

Scale

[ s x 0 0 0 0 s y 0 0 0 0 s z 0 0 0 0 1 ]

剪切

x,yshear:

x ' = x + a z y ' = y + b z z ' = z

[ 1 0 0 0 0 1 0 0 a b 1 0 0 0 0 1 ]

x,zshear:

x ' = x + a y y ' = y z ' = z + c y

[ 1 0 0 0 a 1 c 0 0 0 1 0 0 0 0 1 ]

y, zshear:

x ' = x y ' = y + b x z ' = z + c x

[ 1 b c 0 0 1 0 0 0 0 1 0 0 0 0 1 ]

Rotation

Aboutxaxis:

[ 1 0 0 0 0 cos ( a ) sin ( a ) 0 0 sin ( a ) cos ( a ) 0 0 0 0 1 ]

Aboutyaxis:

[ cos ( a ) 0 sin ( a ) 0 0 1 0 0 sin ( a ) 0 cos ( a ) 0 0 0 0 1 ]

Aboutzaxis:

[ cos ( a ) sin ( a ) 0 0 s i n ( a ) cos ( a ) 0 0 0 0 1 0 0 0 0 1 ]

For N-D affine transformations, the last column must contain[zeros(N,1); 1].imwarpdoes not support transformations of more than three dimensions.

See Also

||||||

Related Examples

More About