TransformJ: Rotate


General Description

This plugin enables you to rotate an image an arbitrary number of degrees about the z-, y-, and/or x-axis. Several types of interpolation can be chosen for this operation. If you want to rotate an image a multiple of 90 degrees about any axis, it is better to use the Turn plugin.

Rotate Dialog

Description of Dialog Components

z-, y-, x-angle in degrees. The input image can be rotated about the z-, y-, and/or x-axis, in that order.

A right-handed coordinate system is assumed for rotation, 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, "into the screen").

Right-Handed Coordinate System

A rotation of +90 degrees about the z-axis implies that the positive x-axis is mapped onto the positive y-axis. A rotation of +90 degrees about the y-axis maps the positive z-axis onto the positive x-axis. And a rotation of +90 degrees about the x-axis maps the positive y-axis onto the positive z-axis.

Interpolation scheme. Obviously, rotation over arbitrary degrees (not multiples of 90 degrees) can be done only by applying some form of interpolation. The currently available interpolation schemes for the rotation operation are: nearest-neighbor interpolation, linear interpolation, cubic convolution interpolation [1], cubic B-spline interpolation [2,3,4], cubic O-MOMS interpolation [5], and quintic B-spline interpolation [2,3,4], where, in general, the quality of the interpolations should increase in this order.

Background value. Except when rotating over multiples of 90 degrees, parts of the rotated image are not filled, simply because the image elements (pixels/voxels) in those regions do not correspond to positions within the input image. These remaining parts of the new image are filled with the given value.

Adjust size to fit result. In most cases, the rotation operation causes parts of the input image to fall outside the result image, if its size is kept equal to that of the input image. You can choose to adjust the size of the result image so that it fits the entire rotated 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 values in the image. However, the elements in the rotated image which correspond 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 the anti-alias option, the borders in the copy of the input image are not mirrored, but entirely filled with the chosen background value. This generally results in a smoother transition between the borders of the rotated image and the background. Note, however, that when using this option in the case of a 3D or higher-dimensional data set, the first and last few slices of the volume(s) in the result may have a reduced intensity. My recommendation would be, therefore, to use this option only when rotating 2D photographs (as I did with the clown image on the TransformJ front page).


Algorithmic Details

Concerning memory usage, it is important to know that the algorithm works with a bordered copy of the input image. This is done in order 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.


References

[1]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.
[2]M. Unser. Splines: A Perfect Fit for Signal and Image Processing. IEEE Signal Processing Magazine, vol. 16, no. 6, 1999, pp. 22-38.
[3]P. Thevenaz, T. Blu, M. Unser. Interpolation Revisited. IEEE Transactions on Medical Imaging, vol. 19, no. 7, 2000, pp.739-758.
[4]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.
[5]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 - 2010 Erik Meijering