DIPlib Documentation - ©1995-2013 Quantitative Imaging Group, Delft University of Technology.

# Skewing

Interpolation function

## SYNOPSIS

`#include "dip_interpolation.h"`

dip_Error dip_Skewing ( in, out, shear, skew, axis, method, bgval, periodicSkew )

## DATA TYPES

binary, integer, float

## FUNCTION

This function skews the axis `axis` of `in` over an angle `angle` to `out` using the interpolation method `method`. The skew is over the centre of the image. If `periodicSkew` is set to `DIP_TRUE`, the output image will be of the same size as the input image, and its pixels in the `skew` dimension wrapped around the image boundaries. `bgval` is not used in this case.

## ARGUMENTS

Data type | Name | Description
`dip_Image` | `in` | Input image
`dip_Image` | `out` | Output image
`dip_float` | `shear (radians)` | Shear angle
`dip_int` | `skew` | Skew dimension
`dip_int` | `axis` | Skew axis
`dipf_Interpolation` | `method` | Interpolation method
`dip_BackgroundValue` | `bgval` | Background value
`dip_Boolean` | `periodicSkew` | Skew using periodic image boundaries

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

## SEE ALSO

`Rotation`, `Rotation3d`, `Rotation3d_Axis`