You should almost always call xform
rather
calling thanxformimage
directly.
xformimage(reg, image, ...)
# S3 method for character
xformimage(reg, image, ...)
# S3 method for cmtkreg
xformimage(
reg,
image,
transformtype = c("warp", "affine"),
direction = NULL,
...
)
# S3 method for reglist
xformimage(reg, image, ...)
# S3 method for default
xformimage(reg, image, ...)
A registration defined by a matrix or a cmtkreg
object, or
a character vector specifying a path to a CMTK registration on disk (see
details). If reg
is a character vector of length >1 defining a
sequence of registration files on disk they should proceed from sample to
reference.
Nx3 matrix of image
Additional arguments passed to methods (and then eventually to
cmtk.reformatx
)
Which transformation to use when the CMTK file contains both warp (default) and affine (TODO)
Whether to transform image from sample space to reference
space (called forward by CMTK) or from reference to sample space
(called inverse by CMTK). Default (when NULL
is forward).
Character vector with path to transformed image.
When passed a character vector, xformimage will check to see if it defines a path containing CMTK registration erroring out if this is not the case. If the path does indeed point to a CMTK registration, this method will hand off to xformimage.cmtkreg. A future TODO would be to provide a mechanism for extending this behaviour for other registration formats. If a list of transformations is passed in, these transformations are passed to the cmtk reformatx tool in the order received. Note that there is presently no support for
using the inverse of a registration
specifying a mask
passing additional arguments to reformatx
Note that the direction of CMTK registrations can be the source of much confusion. This is because CMTK defines the forward direction as the transform required to reformat an image in sample (floating) space to an image in template space. Since this operation involves filling a regular grid in template space by looking up the corresponding positions in sample space, the transformation that is required is (somewhat counterintuitively) the one that maps template to sample. However in neuroanatomical work, one often has points in sample space that one would like to transform into template space. Here one needs CMTK's inverse transformation.
A second source of confusion is that when there are multiple
transformations, CMTK's reformatx tool (wrapped by
cmtk.reformatx
) expects them to be listed:
ref_intermediate.list intermediate_sample.list
where ref_intermediate.list
is the CMTK registration obtained with
ref as target/reference and intermediate as sample/floating image.
For consistency, all xform.*
methods expect multiple registrations
to be listed from sample to reference and this order is then swapped when
they are passed on to cmtk.reformatx
.
whereas CMTK's streamxform
tool (wrapped by
xformpoints
) expects them in the opposite order.