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.
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.
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).
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
This number and the meaning of each filter depend to the wavelet type.
nrow (number of rows) and
ncol (number of columns) contain the size of the original image, which is put into
images (see below).
nlevel is the number of levels used in this decomposition; it corresponds to the number of octaves.
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
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[r] are unused except for r = 0.