This module applies an affine or a projective transformation to an image.
\index{projective transform|see{homography}}
\index{homography}
The original (interpolated) 
image $(x,y)\mapsto u(x,y)$ is transformed into the image
$(x,y)\mapsto v(x,y)=u(F(x,y))$ where $F$ is defined by its values on three
(affine case) or four (projective case) points of the original 
image. 

\medskip

$\bullet$ In the affine case, one has
$$F(x,y) = (a x + b y +c, d x +  e y + f),$$
and the constants $a,b,c,d,e,f$ are computed in order that
\begin{eqnarray*}
F(x_1,y_1) &=& (0,0) \\
F(x_2,y_2) &=& (sx,0) \\
F(x_3,y_3) &=& (0,sy) .
\end{eqnarray*}
This means that the new image is extracted from the original one 
in a parallelogram domain.

\medskip

$\bullet$ In the projective case, one has
$$F(x,y) = \left(\frac{a x + b y +c}{gx + hy +1}, 
\frac{d x + e y + f}{gx + hy +1}\right),$$
and the constants $a,b,c,d,e,f,g,h$ are computed in order that
\begin{eqnarray*}
F(x_1,y_1) &=& (0,0) \\
F(x_2,y_2) &=& (sx,0) \\
F(x_3,y_3) &=& (0,sy) \\
F(x_4,y_4) &=& (sx,sy) 
\end{eqnarray*}
This means that the new image is extracted from the original one 
in a quadrilateral domain.

\bigskip

The interpolation method is the same as the \verb+fcrop+ module.
However, for generic transforms the separability of the interpolation
functions cannot be used, which results in a much slower algorithm.
Hence, whenever it is possible (extraction of a rectangular region with 
vertical and horizontal sides) it is better to use the \verb+fcrop+ 
module (up to 10 times faster) instead.

\medskip

The \verb+-i+ option performs the (approximate) inverse transform.

\medskip

NB : calling this module with out=in is not possible
