int im_similarity_area(in, out, s,
a, dx, dy, w, h, x, y)
IMAGE *in, *out;
double s, a, dx, dy;
int w, h, x, y;
int im_similarity(in, out, s, a, dx, dy)
IMAGE *in, *out;
double s, a, dx, dy;
The transformation is described by s, a, dx, dy. The point (x,y) in the input is mapped onto point (X,Y) in the output by
X = s * x - a * y + dx
Y = a * x + s * y + dy
s and a do not correspond to scale and angle of the transformation; the actual scale and angle are given by the equations:
scale = sqrt(s*s +
a*a)
angle = arctan(s/a).
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. Function im_similarity_area resamples the transformed image using bilinear interpolation.
im_similarity works exactly as im_similarity_area, but calculates w, h, x, y for you such that the rectangle described just encloses all of the transformed input pixels.