Main Content

Create spatial transformation structure (`TFORM`

)

`maketform`

is not recommended. Use `fitgeotrans`

, `affine2d`

, `affine3d`

, or `projective2d`

instead.

creates a multidimensional spatial transformation structure`T`

= 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`

.

or`T`

= 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.

or`T`

= 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`

$$\circ $$
`T2`

$$\circ $$ ... $$\circ $$
`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`