**Name**

**funzoom** Image reduction by projection on a B-spline space

**Command Synopsis**

**funzoom** [-z *z*] [-x *tx*] [-y *ty*] [-o *o*] *in* *out*

-zz: unzoom factor (default 2.0)

-xtx: to first translate (x) the original image

-yty: to first transalte (y) the original image

-oo: spline space order, 0..5, default 0

in: input Fimage

out: output Fimage

**Function Summary**

Fimage funzoom (in , out , z , o , tx , ty )

Fimage in , out ;

float *z , *tx , *ty ;

int *o ;

**Description**

This module unzooms an image by a factor *z*. The input image is first
projected orthogonally onto the space of B-splines of order *n* (see
the `fcrop`

module). The order *n* can be specified
by the `-o`

option. Then, an appropriate subsampling is performed.
Hence, the *L*^{2} norm of the error caused by image reduction is minimized.
This method, described in [UAE95], allows to
avoid undesirable artifacts like aliasing.

If *n* = 0, the method is a simple averaging under the assumption that pixel
are adjacent squares. The input image *u* is supposed to take constant values
in each 1×1 square (nearest neighbor interpolation), and the output
value at a given pixel is given by the average of *u* on the corresponding
*z*×*z* square. In particular, this yields the classical simple
``block averaging'' for integer reduction factors.

For *n* 1, the algorithm consists in two steps :

1. a zoom by a certain cubic (non-regular) spline,
*, where is the
B-spline of order 1 and
(*x*) = (*x*/*z*).

2. an inverse spline transform of order 3, performed by the
`finvspline`

module.

**See Also**

**Version 2.3**

Last Modification date : Tue Feb 19 13:45:23 2002

**Author**

Lionel Moisan