c09 Chapter Contents
c09 Chapter Introduction
NAG Library Manual

NAG Library Function Documentnag_imldwt_3d (c09fdc)

1  Purpose

nag_imldwt_3d (c09fdc) computes the inverse three-dimensional multi-level discrete wavelet transform (IDWT). This function reconstructs data from (possibly filtered or otherwise manipulated) wavelet transform coefficients calculated by nag_mldwt_3d (c09fcc) from an original input array. The initialization function nag_wfilt_3d (c09acc) must be called first to set up the IDWT options.

2  Specification

 #include #include
 void nag_imldwt_3d (Integer nwlinv, Integer lenc, const double c[], Integer m, Integer n, Integer fr, double b[], Integer ldb, Integer sdb, const Integer icomm[], NagError *fail)

3  Description

nag_imldwt_3d (c09fdc) performs the inverse operation of nag_mldwt_3d (c09fcc). That is, given a set of wavelet coefficients, computed up to level ${n}_{\mathrm{fwd}}$ by nag_mldwt_3d (c09fcc) using a DWT as set up by the initialization function nag_wfilt_3d (c09acc), on a real three-dimensional array, $A$, nag_imldwt_3d (c09fdc) will reconstruct $A$. The reconstructed array is referred to as $B$ in the following since it will not be identical to $A$ when the DWT coefficients have been filtered or otherwise manipulated prior to reconstruction. If the original input array is level $0$, then it is possible to terminate reconstruction at a higher level by specifying fewer than the number of levels used in the call to nag_mldwt_3d (c09fcc). This results in a partial reconstruction.

4  References

Wang Y, Che X and Ma S (2012) Nonlinear filtering based on 3D wavelet transform for MRI denoising URASIP Journal on Advances in Signal Processing 2012:40

5  Arguments

1:     nwlinvIntegerInput
On entry: the number of levels to be used in the inverse multi-level transform. The number of levels must be less than or equal to ${n}_{\mathrm{fwd}}$, which has the value of argument nwl as used in the computation of the wavelet coefficients using nag_mldwt_3d (c09fcc). The data will be reconstructed to level $\left({\mathbf{nwl}}-{\mathbf{nwlinv}}\right)$, where level $0$ is the original input dataset provided to nag_mldwt_3d (c09fcc).
Constraint: $1\le {\mathbf{nwlinv}}\le {\mathbf{nwl}}$, where nwl is the value used in a preceding call to nag_mldwt_3d (c09fcc).
2:     lencIntegerInput
On entry: the dimension of the array c.
Constraint: ${\mathbf{lenc}}\ge {n}_{\mathrm{ct}}$, where ${n}_{\mathrm{ct}}$ is the total number of wavelet coefficients that correspond to a transform with nwlinv levels.
3:     c[lenc]const doubleInput
On entry: the coefficients of the multi-level discrete wavelet transform. This will normally be the result of some transformation on the coefficients computed by function nag_mldwt_3d (c09fcc).
Note that the coefficients in c may be extracted according to level and type into three-dimensional arrays using nag_wav_3d_coeff_ext (c09fyc), and inserted using nag_wav_3d_coeff_ins (c09fzc).
4:     mIntegerInput
On entry: the number of elements, $m$, in the first dimension of the reconstructed array $B$. For a full reconstruction of nwl levels, where nwl is as supplied to nag_mldwt_3d (c09fcc), this must be the same as argument m used in a preceding call to nag_mldwt_3d (c09fcc). For a partial reconstruction of ${\mathbf{nwlinv}}<{\mathbf{nwl}}$ levels, this must be equal to ${\mathbf{dwtlvm}}\left[{\mathbf{nwlinv}}\right]$, as returned from nag_mldwt_3d (c09fcc)
5:     nIntegerInput
On entry: the number of elements, $n$, in the second dimension of the reconstructed array $B$. For a full reconstruction of nwl, levels, where nwl is as supplied to nag_mldwt_3d (c09fcc), this must be the same as argument n used in a preceding call to nag_mldwt_3d (c09fcc). For a partial reconstruction of ${\mathbf{nwlinv}}<{\mathbf{nwl}}$ levels, this must be equal to ${\mathbf{dwtlvn}}\left[{\mathbf{nwlinv}}\right]$, as returned from nag_mldwt_3d (c09fcc).
6:     frIntegerInput
On entry: the number of elements, $\mathit{fr}$, in the third dimension of the reconstructed array $B$. For a full reconstruction of nwl levels, where nwl is as supplied to nag_mldwt_3d (c09fcc), this must be the same as argument fr used in a preceding call to nag_mldwt_3d (c09fcc). For a partial reconstruction of ${\mathbf{nwlinv}}<{\mathbf{nwl}}$ levels, this must be equal to ${\mathbf{dwtlvfr}}\left[{\mathbf{nwlinv}}\right]$, as returned from nag_mldwt_3d (c09fcc).
7:     b[$\mathit{dim}$]doubleOutput
Note: the dimension, dim, of the array b must be at least ${\mathbf{ldb}}×{\mathbf{sdb}}×{\mathbf{fr}}$.
On exit: the $m$ by $n$ by $\mathit{fr}$ reconstructed array, $B$, with ${B}_{ijk}$ stored in ${\mathbf{b}}\left[\left(k-1\right)×{\mathbf{ldb}}×{\mathbf{sdb}}+\left(j-1\right)×{\mathbf{ldb}}+i-1\right]$. The reconstruction is based on the input multi-level wavelet transform coefficients and the transform options supplied to the initialization function nag_wfilt_3d (c09acc).
8:     ldbIntegerInput
On entry: the stride separating row elements of each of the sets of frame coefficients in the three-dimensional data stored in b.
Constraint: ${\mathbf{ldb}}\ge {\mathbf{m}}$.
9:     sdbIntegerInput
On entry: the stride separating corresponding coefficients of consecutive frames in the three-dimensional data stored in b.
Constraint: ${\mathbf{sdb}}\ge {\mathbf{n}}$.
10:   icomm[$260$]const IntegerCommunication Array
On entry: contains details of the discrete wavelet transform and the problem dimension as setup in the call to the initialization function nag_wfilt_3d (c09acc).
11:   failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

6  Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
On entry, argument $⟨\mathit{\text{value}}⟩$ had an illegal value.
NE_INITIALIZATION
Either the communication array icomm has been corrupted or there has not been a prior call to the initialization function nag_wfilt_3d (c09acc).
The initialization function was called with ${\mathbf{wtrans}}=\mathrm{Nag_SingleLevel}$.
NE_INT
On entry, ${\mathbf{fr}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{fr}}\ge ⟨\mathit{\text{value}}⟩$, the number of coefficients in the third dimension at the required level of reconstruction.
On entry, ${\mathbf{m}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{m}}\ge ⟨\mathit{\text{value}}⟩$, the number of coefficients in the first dimension at the required level of reconstruction.
On entry, ${\mathbf{n}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{n}}\ge ⟨\mathit{\text{value}}⟩$, the number of coefficients in the second dimension at the required level of reconstruction.
On entry, ${\mathbf{nwlinv}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{nwlinv}}\ge 1$.
NE_INT_2
On entry, ${\mathbf{ldb}}=⟨\mathit{\text{value}}⟩$ and ${\mathbf{m}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{ldb}}\ge {\mathbf{m}}$.
On entry, ${\mathbf{lenc}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{lenc}}\ge ⟨\mathit{\text{value}}⟩$, the number of wavelet coefficients required for a transform operating on nwlinv levels. If ${\mathbf{nwlinv}}={\mathbf{nwlmax}}$, the maximum number of levels as returned by the initial call to nag_wfilt_3d (c09acc), then lenc must be at least ${n}_{\mathrm{ct}}$, the value returned in nwct by the same call to nag_wfilt_3d (c09acc).
On entry, ${\mathbf{nwlinv}}=⟨\mathit{\text{value}}⟩$ and ${\mathbf{nwl}}=⟨\mathit{\text{value}}⟩$ where nwl is as used in the computation of the wavelet coefficients by a call to nag_mldwt_3d (c09fcc).
Constraint: ${\mathbf{nwlinv}}\le {\mathbf{nwl}}$ as used in the call to nag_mldwt_3d (c09fcc).
On entry, ${\mathbf{sdb}}=⟨\mathit{\text{value}}⟩$ and ${\mathbf{n}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{sdb}}\ge {\mathbf{n}}$.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.

7  Accuracy

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.

Not applicable.