C09FAF computes the three-dimensional discrete wavelet transform (DWT) at a single level. The initialization routine
C09ACF must be called first to set up the DWT options.
C09FAF computes the three-dimensional DWT of some given three-dimensional input data, considered as a number of two-dimensional frames, at a single level. For a chosen wavelet filter pair, the output coefficients are obtained by applying convolution and downsampling by two to the input data,
, first over columns, next over rows and finally across frames. The three-dimensional approximation coefficients are produced by the low pass filter over columns, rows and frames. In addition there are 7 sets of three-dimensional detail coefficients, each corresponding to a different order of low pass and high pass filters (see the
C09 Chapter Introduction). All coefficients are packed into a single array. To reduce distortion effects at the ends of the data array, several end extension methods are commonly used. Those provided are: periodic or circular convolution end extension, half-point symmetric end extension, whole-point symmetric end extension and zero end extension. The total number,
, of coefficients computed is returned by the initialization routine
C09ACF.
If on entry
or
, explanatory error messages are output on the current error message unit (as defined by
X04AAF).
The accuracy of the wavelet transform depends only on the floating-point operations used in the convolution and downsampling and should thus be close to machine precision.
C09FAF is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
Please consult the
X06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this routine. Please also consult the
Users' Note for your implementation for any additional implementation-specific information.
None.
This example computes the three-dimensional discrete wavelet decomposition for
input data using the Haar wavelet,
, with half point end extension, prints the wavelet coefficients and then reconstructs the original data using
C09FBF. This example also demonstrates in general how to access any set of coefficients following a single level transform.