The structure Wtrans2d

The C structure is the following:

char cmt[mw_cmtsize]; /* Comments */ char name[mw_namesize]; /* Name of the wtrans2d */ int type; /* Type of the wtrans2d performed */ int edges; /* Type of the edges statments */ char filter_name[mw_namesize][mw_max_nfilter_2d]; /* Filters used */ int nrow; int ncol; /* Size of the original image */ int nlevel; /* Number of levels (octave) for this decomposition */ int norient; /* Number of orientations for this decomposition */ int nfilter; /* Number of filters used to compute the decomposition */ Fimage images[mw_max_nlevel+1][mw_max_norient+1]; /* Wavelet decomposition space */ } *Wtrans2d;

The first two fields of this structure is well known by the reader.
The field `type`

records the type of the wavelet transform used.
Its value can be:

`mw_orthogonal`

: orthogonal wavelet transform;`mw_biorthogonal`

: biorthogonal wavelet transform;`mw_dyadic`

: dyadic wavelet transform.

The field `edges`

gives the type of the edges statment used to compute
the transformation. Indeed, since it is implemented as a bank of convolution
products, errors occur near the borders if no special statment is performed.
This field can have the following values:

`mw_edges_zeropad`

: the image is zero-padded (no special statment);`mw_edges_periodic`

: the image is made periodic;`mw_edges_mirror`

: the image is padded by mirror effect (avoid first-order discontinuities);`mw_edges_wadapted`

: special border functions are added to the wavelets (wavelets on the rectangle).

The field `filter_name`

is an array of strings, where the names of the filters used for the decomposition are put.
The number of filters is put into the field `nfilter`

.
This number and the meaning of each filter depend to the wavelet type.

The fields `nrow`

(number of rows) and `ncol`

(number of columns) contain the size of the original image, which is put into `images[0][0]`

(see below).
The field `nlevel`

is the number of levels used in this decomposition; it corresponds to the number of octaves.

The field `norient`

gives the number of orientations used for the decomposition;
usually (but the user may modify that) the first orientation (index *r* = 0 in the array `images[][r]`

) corresponds to the coarse image at the given resolution (low-pass image or smooth image);
the second orientation (index *r* = 1) corresponds to the detail image (wavelet coefficients) along the y direction (horizontal details);
the third orientation (index *r* = 2) corresponds to the detail image (wavelet coefficients) along the x direction (vertical details);
in the orthonormal and biorthonormal cases, there is another direction (index *r* = 3) which corresponds to the detail image (wavelet coefficients) along the diagonal direction (cross details).

The result of the wavelet decomposition is put into one two-dimensional arrays of images called `images`

:
`images[l][r]`

for
*l* = 1...`nlevel` and for
*r* = 0...`norient` is the coarse or the detail image at the octave *l* and at the orientation *r*.

Notice that the images `images[0][r]`

are unused except for *r* = 0.