Interpolation function
#include "dip_interpolation.h"
dip_Error dip_Resampling ( in, out, zoom, shift, method )
binary, integer, float
This function resmaples the input image in to out using various interpolation methods. Both a (subpixel) shift and a zoom factor are supported. The size of the output image is zoom times the size of in. If shift is zero, a shift of zero is assumed. If zoom is zero, a zoom of 1.0 is assumed.
Data type | Name | Description |
dip_Image | in | Input image |
dip_Image | out | Output image |
dip_FloatArray | zoom | Zoom factor |
dip_FloatArray | shift | Shift |
dipf_Interpolation | method | Interpolation method |
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).