nag_dwt_3d (c09fac) computes the three-dimensional discrete wavelet transform (DWT) at a single level. The initialization function nag_wfilt_3d (c09acc)
must be called first to set up the DWT options.
nag_dwt_3d (c09fac) 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 function nag_wfilt_3d (c09acc)
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.
nag_dwt_3d (c09fac) 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 function. Please also consult the Users' Note
for your implementation for any additional implementation-specific information.
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 nag_idwt_3d (c09fbc)
. This example also demonstrates in general how to access any set of coefficients following a single level transform.