This function allows a precomputed transformation to be applied to a new image or set of points.
applyTransform(transform, x, interpolation = 3L, nearest = FALSE,
internal = FALSE)
transform | |
---|---|
x | A numeric vector, representing a pixel/voxel location in source space, or a matrix with rows representing such points, or an image with the same dimensions as the original source image. |
interpolation | A single integer specifying the type of interpolation to be applied to the final resampled image. May be 0 (nearest neighbour), 1 (trilinear) or 3 (cubic spline). No other values are valid. |
nearest | Logical value: if |
internal | If |
A resampled image or matrix of transformed points.
Points may be transformed from source to target space exactly under an affine transformation, but nonlinear transformation is inexact. Its accuracy will depend to some extent on the density of the control point grid and the geometry of the deformation in the vicinity of the points of interest. Nevertheless, it should be quite sufficient for most purposes.
The method is to first convert the control points to a deformation field
(cf. deformationField
), which encodes the location of each
target space voxel in the source space. The target voxel closest to the
requested location is found by searching through this deformation field, and
returned if nearest
is TRUE
or it coincides exactly with the
requested location. Otherwise, a block of four voxels in each dimension
around the point of interest is extracted from the deformation field, and
the final location is estimated by local cubic spline regression.
Jon Clayden <code@clayden.org>