Infer spatial transformation from control point pairs
cp2tform
is not recommended. Use fitgeotrans
instead.
TFORM = cp2tform(movingPoints,fixedPoints, transformtype)
TFORM = cp2tform(CPSTRUCT, transformtype)
[TFORM, movingPoints, fixedPoints]
= cp2tform(CPSTRUCT, ...)
TFORM = cp2tform(movingPoints,fixedPoints,
'polynomial', order)
TFORM = cp2tform(CPSTRUCT,'polynomial',order)
TFORM = cp2tform(movingPoints,fixedPoints,'piecewise
linear')
TFORM = cp2tform(CPSTRUCT,'piecewise
linear')
TFORM = cp2tform(movingPoints,fixedPoints,'lwm', N)
TFORM = cp2tform(CPSTRUCT, 'lwm', N)
[TFORM, movingPoints, fixedPoints, movingPoints_bad, fixedPoints_bad]
= cp2tform(movingPoints, fixedPoints, 'piecewise
linear')
[TFORM, movingPoints, fixedPoints, movingPoints_bad, fixedPoints_bad]
= cp2tform(CPSTRUCT, 'piecewise linear')
infers
a spatial transformation from control point pairs and returns this
transformation as a TFORM
= cp2tform(movingPoints
,fixedPoints
, transformtype
)TFORM
structure.
works
on a TFORM
= cp2tform(CPSTRUCT
, transformtype
)CPSTRUCT
structure that contains the control
point matrices for the input and base images. The Control Point Selection
Tool, cpselect
, creates the CPSTRUCT
.
[
returns
the control points that were used in TFORM
, movingPoints
, fixedPoints
]
= cp2tform(CPSTRUCT
, ...)movingPoints
and fixedPoints
.
Unmatched and predicted points are not used. See cpstruct2pairs
.
lets you specify the order of the
polynomials to use.TFORM
= cp2tform(movingPoints
,fixedPoints
,
'polynomial', order)
works
on a TFORM
= cp2tform(CPSTRUCT
,'polynomial',order
)CPSTRUCT
structure.
creates a Delaunay triangulation of
the base control points, and maps corresponding input control points
to the base control points. The mapping is linear (affine) for each
triangle and continuous across the control points but not continuously
differentiable as each triangle has its own mapping.TFORM
= cp2tform(movingPoints
,fixedPoints
,'piecewise
linear'
)
works on a TFORM
= cp2tform(CPSTRUCT
,'piecewise
linear'
)CPSTRUCT
structure.
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. You can optionally specify the number
of points, TFORM
= cp2tform(movingPoints
,fixedPoints
,'lwm'
, N
)N
, used to infer each polynomial. The N
closest
points are used to infer a polynomial of order 2 for each control
point pair. If you omit N
, it defaults to 12. N
can
be as small as 6, but making N
small risks generating
illconditioned polynomials.
works
on a TFORM
= cp2tform(CPSTRUCT
, 'lwm'
, N
)CPSTRUCT
structure.
[
returns the control points that were
used in TFORM
, movingPoints
, fixedPoints
, movingPoints_bad
, fixedPoints_bad
]
= cp2tform(movingPoints
, fixedPoints
, 'piecewise
linear'
)movingPoints
and fixedPoints
and
the control points that were eliminated because they were middle vertices
of degenerate foldover triangles in movingPoints_bad
and fixedPoints_bad
.
[
works
on a TFORM
, movingPoints
, fixedPoints
, movingPoints_bad
, fixedPoints_bad
]
= cp2tform(CPSTRUCT
, 'piecewise linear'
)CPSTRUCT
structure.

mby2, 

mby2, 

Specifies the type of spatial transformation to infer. The 

Structure containing control point matrices for the input and
base images. Use the Control Point Selection Tool ( 

Specifies the order of polynomials to use. Default: 3 

Linear for each piece and continuous, not continuously differentiable. 

Local weighted mean. 

Number of points. 

Structure containing the spatial transformation. 

Input control points that were used to infer the spatial transformation. Unmatched and predicted points are not used. 

Base control points that were used to infer the spatial transformation. Unmatched and predicted points are not used. 

Input control points that were eliminated because they were determined to be outliers. 

Base control points that were eliminated because they were determined to be outliers. 
Transform an image, use the cp2tform
function
to return the transformation, and compare the angle and scale of the TFORM
to
the angle and scale of the original transformation:
I = checkerboard; J = imrotate(I,30); fixedPoints = [11 11; 41 71]; movingPoints = [14 44; 70 81]; cpselect(J,I,movingPoints,fixedPoints); t = cp2tform(movingPoints,fixedPoints,'nonreflective similarity'); % Recover angle and scale by checking how a unit vector % parallel to the xaxis is rotated and stretched. u = [0 1]; v = [0 0]; [x, y] = tformfwd(t, 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)
[1] Goshtasby, Ardeshir, "Piecewise linear mapping functions for image registration," Pattern Recognition, Vol. 19, 1986, pp. 459466.
[2] Goshtasby, Ardeshir, "Image registration by local approximation methods," Image and Vision Computing, Vol. 6, 1988, pp. 255261.
cpcorr
 cpselect
 cpstruct2pairs
 imtransform
 tformfwd
 tforminv