Interpolation function
#include "dip_interpolation.h"
dip_Error dip_Rotation3d_Axis ( in, out, angle, axis, method, bgval )
binary, integer, float
This function rotates an 3-D image in over angle around axis to out using three skews. The rotation axis is 0 (x), 1 (y) or 2 (z). The function implements the rotation in the mathmetical sense, but note the Y-axis is positive downwards! The rotation is over the centre of the image.
For backwards compatability, the macro Rotation3dAxis calls the function Rotation3d_Axis but uses 1, 2 and 3 to select the axis of rotation.
Data type | Name | Description |
dip_Image | in | Input image |
dip_Image | out | Output image |
dip_float | angle (radians) | Rotation angle |
dip_int | axis | Rotation axis |
dipf_Interpolation | method | Interpolation method |
dip_BackgroundValue | bgval | Background value |
The dipf_Interpolation enumaration consists of the following constants:
Name | Description |
DIP_INTERPOLATION_DEFAULT | Default method, usually equivalent to DIP_INTERPOLATION_BSPLINE |
DIP_INTERPOLATION_BSPLINE | B-Spline interpolation |
DIP_INTERPOLATION_FOURTH_ORDER_CUBIC | Forth order cubic interpolation |
DIP_INTERPOLATION_THIRD_ORDER_CUBIC | Third order cubic interpolation |
DIP_INTERPOLATION_LINEAR | Linear interpolation |
DIP_INTERPOLATION_ZERO_ORDER_HOLD | Zero order hold interpolation |
DIP_INTERPOLATION_NEAREST_NEIGHBOUR | Nearest neighbour interpolation |
DIP_INTERPOLATION_LANCZOS_2 | Lanczos interpolation with a=2 |
DIP_INTERPOLATION_LANCZOS_3 | Lanczos interpolation with a=3 |
DIP_INTERPOLATION_LANCZOS_4 | Lanczos interpolation with a=4 |
DIP_INTERPOLATION_LANCZOS_6 | Lanczos interpolation with a=6 |
DIP_INTERPOLATION_LANCZOS_8 | Lanczos interpolation with a=8 |
All interpolation is performed separably. B-spline interpolation uses all samples on the image line. Cubic interpolation uses a cubic spline kernel (piecewise cubic polynomial), covering 4 (third order) or 6 (fourth order) input samples. Lanczos interpolation uses a sinc function windowed by a wider sinc function, using 2a input samples. Zero order hold and nearest neighbour are the same method, but for the function Resampling, zero order hold results in a shift of half a pixel (i.e. the nearest value "to the left" is always used).
The dip_BackgroundValue enumaration consists of the following flags:
Name | Description |
DIP_BGV_DEFAULT | Default: fill with zeros |
DIP_BGV_ZERO | Fill with zeros |
DIP_BGV_MAX_VALUE | Fill with maximum value for data type |
DIP_BGV_MIN_VALUE | Fill with minimum value for data type |
This function is only implemented for 3D images, for rotating 2D images see Rotation.