Create spatial transformation structure (TFORM)
maketform is not recommended. Use fitgeotrans, affine2d, affine3d, or projective2d instead.
creates a multidimensional spatial transformation structureT = maketform('affine',A)T for an
N-dimensional affine transformation. A is a nonsingular real
(N+1)-by-(N+1) or (N+1)-by-N matrix. If A is (N+1)-by-(N+1), the last
column of A must be [zeros(N,1);1]. Otherwise,
A is augmented automatically, such that its last column is
[zeros(N,1);1]. The matrix A defines a forward
transformation such that tformfwd(U,T), where U is a
1-by-N vector, returns a 1-by-N vector X, such that X = U *
A(1:N,1:N) + A(N+1,1:N). T has both forward and inverse
transformations.
A spatial transformation structure (called a TFORM struct) that can
be used with the tformfwd, tforminv,
fliptform, imtransform, or
tformarray functions.
creates a T = maketform('projective',A)TFORM struct for an N-dimensional projective transformation.
A is a nonsingular real (N+1)-by-(N+1) matrix.
A(N+1,N+1) cannot be 0. The matrix A defines a
forward transformation such that tformfwd(U,T), where
U is a 1-by-N vector, returns a 1-by-N vector X,
such that X = W(1:N)/W(N+1), where W = [U 1] * A. The
transformation structure T has both forward and inverse
transformations.
creates a custom T = maketform('custom',NDIMS_IN,NDIMS_OUT,FORWARD_FCN,INVERSE_FCN,TDATA)TFORM struct T based on user-provided
function handles and parameters. NDIMS_IN and
NDIMS_OUT are the numbers of input and output dimensions.
FORWARD_FCN and INVERSE_FCN are function handles to
forward and inverse functions. The forward function must support the following syntax:
X = FORWARD_FCN(U,T). The inverse function must support the following
syntax: U = INVERSE_FCN(X,T). In these syntaxes, U is
a P-by-NDIMS_IN matrix whose rows are points in the
transformation input space. X is a
P-by-NDIMS_OUT matrix whose rows are points in the
transformation output space. The TDATA argument can be any MATLAB® array and is typically used to store parameters of the custom transformation.
It is accessible to FORWARD_FCN and INVERSE_FCN via
the tdata field of T. Either
FORWARD_FCN or INVERSE_FCN can be empty, although at
least INVERSE_FCN must be defined to use T with
tformarray or imtransform.
orT = maketform('box',tsize,LOW,HIGH)
T = maketform('box',INBOUNDS, OUTBOUNDS) builds an
N-dimensional affine TFORM struct T. The
tsize argument is an N-element vector of positive integers.
LOW and HIGH are also N-element vectors. The
transformation maps an input box defined by the opposite corners
ones(1,N) and tsize, or by corners
INBOUNDS(1,:) and INBOUND(2,:), to an output box
defined by the opposite corners LOW and HIGH or
OUTBOUNDS(1,:) and OUTBOUNDS(2,:).
LOW(K) and HIGH(K) must be different unless
tsize(K) is 1, in which case the affine scale factor along the Kth
dimension is assumed to be 1.0. Similarly, INBOUNDS(1,K) and
INBOUNDS(2,K) must be different unless
OUTBOUNDS(1,K) and OUTBOUNDS(2,K) are the same, and
conversely. The 'box'
TFORM is typically used to register the row and column subscripts of an
image or array to some world coordinate system.
orT = maketform('composite',T1,T2,...,TL)
T = maketform('composite', [T1 T2 ... TL]) builds a
TFORM struct T whose forward and inverse functions
are the functional compositions of the forward and inverse functions of T1, T2,
..., TL.
The inputs T1, T2, ..., TL are ordered just as they would be when
using the standard notation for function composition: T = T1
T2
...
TL and note also that composition is associative, but not commutative.
This means that to apply T to the input U, one must
apply TL first and T1 last. Thus if L =
3, for example, then tformfwd(U,T) is the same as
tformfwd(tformfwd(tformfwd(U,T3),T2),T1). The components
T1 through TL must be compatible in terms of the
numbers of input and output dimensions. T has a defined forward transform
function only if all the component transforms have defined forward transform functions.
T has a defined inverse transform function only if all the component
functions have defined inverse transform functions.
An affine or projective transformation can also be expressed like this equation, for a
3-by-2 A:
[X Y]' = A' * [U V 1] '
Or, like this equation, for a 3-by-3 A:
[X Y 1]' = A' * [U V 1]'
fliptform | imtransform | tformarray | tformfwd | tforminv