TransformJ: Affine


General Description

This plugin enables one to apply affine transformations to images. It is the most generic and therefore also the most computationally demanding plugin in the TransformJ package. If only rotation, or scaling, or translation is required, it is better to use, respectively, the Rotate, Scale, or Translate plugin.

Affine Dialog

Dialog Description

Matrix file. The transformation is determined by a 4 x 4 matrix applied to input positions expressed in homogeneous coordinates [1,2] as follows:

Affine Transformation Equation

The matrix file should be a tab-delimited text file (comma- and space-delimited text files are also accepted) containing exactly four rows and four columns representing the affine transformation matrix. The full path of the file should be given, which is most easily done by pressing the Browse button, and selecting the file in the resulting file dialog. If needed, matrix files can be easily created, modified, and saved, by pressing the Create button and working with the resulting dialog. The transformation corresponding to the selected matrix file is applied to every time frame in every channel of a 5D image.

A right-handed coordinate system is assumed for transformation, where the origin is taken precisely in the center of the image or volume, and where the x-axis is taken horizontally on the screen (with increasing x-coordinate when moving from left to right), the y-axis is taken vertically on the screen (with increasing y-coordinate when moving from top to bottom), and finally the z-axis is taken perpendicular to the screen (with increasing z-coordinate when moving away from the observer, that is "into the screen").


Right-Handed Coordinate System

Interpolation scheme. Affine transformation can be done only by applying some form of interpolation. The currently available interpolation schemes for this operation are: nearest-neighbor interpolation, linear interpolation, cubic convolution interpolation [3], cubic B-spline interpolation [4,5,6], cubic O-MOMS interpolation [7], and quintic B-spline interpolation [4,5,6], where, in general, the quality of the interpolations should increase in this order.

Background value. Parts of the transformed image may not be filled, simply because the image elements in those regions do not correspond to positions within the input image. These remaining parts of the result image are filled with the given value.

Adjust size to fit result. The affine transformation may cause parts of the input image to fall outside the result image, if the size of the latter is kept equal to that of the input image. Selecting this option adjusts the size of the result image so that it fits the entire transformed image.

Anti-alias borders. In order for the linear and higher-order interpolation schemes to operate properly, a bordered copy of the input image is used internally. The standard setting is that the borders of this copy are filled by mirroring the image values. Since the elements in the transformed image corresponding to positions outside the borders of the input image are always filled with the background value, this may cause a "stair-casing" effect (also referred to as "aliasing" by some) at the borders. By selecting this option, the borders in the copy of the input image are not mirrored, but entirely filled with the given background value. This generally results in a smoother transition between the borders of the transformed image and the background. However, when using this option in the case of 3D or higher-dimensional data sets, the first and last few slices of the volume(s) in the result may have a reduced intensity. It is therefore recommended to use this option only when transforming 2D photographs (as with the clown image on the TransformJ front page).


Algorithmic Details

The algorithm works with a bordered copy of the input image, not only to solve the boundary problem, but also because some of the interpolation schemes require recursive prefiltering of the input image. Since the prefiltering operations need to be carried out with high accuracy, the bordered copy is always stored in floating-point format, which may require quite some memory, depending on image size.


References

[1]G. Wolberg. Digital Image Warping. IEEE Computer Society Press, Washington, DC, 1990.
[2]J. Foley, A. van Dam, S. K. Feiner, J. F. Hughes. Computer Graphics: Principles and Practice. 2nd edition, Systems Programming Series, Addison-Wesley, Reading, MA, 1990.
[3]R. G. Keys. Cubic Convolution Interpolation for Digital Image Processing. IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 29, no. 6, 1981, pp. 1153-1160.
[4]M. Unser. Splines: A Perfect Fit for Signal and Image Processing. IEEE Signal Processing Magazine, vol. 16, no. 6, 1999, pp. 22-38.
[5]P. Thevenaz, T. Blu, M. Unser. Interpolation Revisited. IEEE Transactions on Medical Imaging, vol. 19, no. 7, 2000, pp. 739-758.
[6]E. H. W. Meijering, W. J. Niessen, M. A. Viergever. Quantitative Evaluation of Convolution-Based Methods for Medical Image Interpolation. Medical Image Analysis, vol. 5, no. 2, 2001, pp. 111-126.
[7]T. Blu, P. Thevenaz, M. Unser. MOMS: Maximal-Order Interpolation of Minimal Support. IEEE Transactions on Image Processing, vol. 10, no. 7, 2001, pp. 1069-1080.
Copyright © 1996 - 2012 Erik Meijering