NAME
im_affinei - apply an affine transform to an image
SYNOPSIS
#include <vips/vips.h>
int im_affinei(in, out, interpolate, a, b, c, d, dx, dy, x, y, w, h)
IMAGE *in, *out;
VipsInterpolate *interpolate;
double a, b, c, d, dx, dy;
int x, y;
int w, h;
int im_affinei_all(in, out, interpolate, a, b, c, d, dx, dy)
IMAGE *in, *out;
VipsInterpolate *interpolate;
double a, b, c, d, dx, dy;
DESCRIPTION
im_affinei(3) applies an affine transformation on the image held by the
IMAGE descriptor in and puts the result at the location pointed by the
IMAGE descriptor out. in many have any number of bands, be any size,
and have any non-complex type.
The transformation is described by a, b, c, d, dx, dy. The point (x,y)
in the input is mapped onto point (X,Y) in the output by
X = a * x + b * y + dx
Y = c * x + d * y + dy
The area of the output image given by w, h, x, y is generated. (0,0) is
the position of the transformed top-left-hand corner of the input
image.
Points are generated using the supplied interpolator. See
VipsInterpolate(3) for a list of the interpolators that come with vips.
im_affinei_all(3) is a convenience function that transforms the whole
of the input image. It calls im_affine(3) for you, with x y w h set to
exactly enclose the transformed image.
RETURN VALUE
The functions return 0 on success and -1 on error.
BUGS
As with most resamplers, im_affine(3) performs poorly at the edges of
images.
SEE ALSO
im_similarity(3)
8 February 2009