nag_imldwt_2d (c09edc) (PDF version)
c09 Chapter Contents
c09 Chapter Introduction
NAG C Library Manual

NAG Library Function Document

nag_imldwt_2d (c09edc)

+ Contents

    1  Purpose
    7  Accuracy
    9  Example

1  Purpose

nag_imldwt_2d (c09edc) computes the inverse two-dimensional multi-level discrete wavelet transform (DWT). This function reconstructs data from (possibly filtered or otherwise manipulated) wavelet transform coefficients calculated by nag_mldwt_2d (c09ecc) from an original input matrix. The initialization function nag_wfilt_2d (c09abc) must be called first to set up the DWT options.

2  Specification

#include <nag.h>
#include <nagc09.h>
void  nag_imldwt_2d (Integer nwl, Integer lenc, const double c[], Integer m, Integer n, double b[], Integer ldb, const Integer icomm[], NagError *fail)

3  Description

nag_imldwt_2d (c09edc) performs the inverse operation of nag_mldwt_2d (c09ecc). That is, given a set of wavelet coefficients, computed by nag_mldwt_2d (c09ecc) using a DWT as set up by the initialization function nag_wfilt_2d (c09abc), on a real matrix, A, nag_imldwt_2d (c09edc) will reconstruct A. The reconstructed matrix 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 matrix 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_2d (c09ecc). This results in a partial reconstruction.

4  References

None.

5  Arguments

1:     nwlIntegerInput
On entry: the number, nl, of levels to be used in the inverse multi-level transform.
Constraint: 1nwlnfwd, where nfwd is the value used in a preceding call to nag_mldwt_2d (c09ecc).
2:     lencIntegerInput
On entry: the dimension of the array c.
Constraint: lencnct, where nct is the total number of coefficients that correspond to a transform with nfwd levels and is unchanged from the preceding call to nag_mldwt_2d (c09ecc).
3:     c[lenc]const doubleInput
On entry: the coefficients of a multi-level wavelet transform of the original matrix, A, which may have been filtered or otherwise manipulated.
Let qi be the number of coefficients (of each type) at level i, for i=nfwd,nfwd-1,,1. Then, setting k1=qnfwd and kj+1=kj+qnfwd-j/3+1, for j=1,2,,3nfwd, the coefficients are stored in c as follows:
c[i-1], for i=1,2,,k1
Contains the level nfwd approximation coefficients, anfwd.
c[i-1], for i=kj+1,,kj+1
Contains the level nfwd-j/3+1 vertical, horizontal and diagonal coefficients. These are:
  • vertical coefficients if j mod 3=1;
  • horizontal coefficients if j mod 3=2;
  • diagonal coefficients if j mod 3=0,
for j=1,,3nfwd.
4:     mIntegerInput
On entry: the number of elements, m, in the first dimension of the reconstructed matrix B. For a full reconstruction of nfwd levels this is the same as parameter m in nag_mldwt_2d (c09ecc). For a partial reconstruction of nl<nfwd levels this will be equal to dwtlvm[nl] as returned from nag_mldwt_2d (c09ecc).
5:     nIntegerInput
On entry: the number of elements, n, in the second dimension of the reconstructed matrix B. For a full reconstruction of nfwd levels this is the same as parameter n in nag_mldwt_2d (c09ecc). For a partial reconstruction of nl<nfwd levels this will be equal to dwtlvn[nl] as returned from nag_mldwt_2d (c09ecc).
6:     b[ldb×n]doubleOutput
Note: the i,jth element of the matrix B is stored in b[j-1×ldb+i-1].
On exit: the m by n reconstructed matrix, B, based on the input multi-level wavelet transform coefficients and the transform options supplied to the initialization function nag_wfilt_2d (c09abc).
7:     ldbIntegerInput
On entry: the stride separating matrix row elements in the array b.
Constraint: ldbm.
8:     icomm[180]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_2d (c09abc).
9:     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.
NE_BAD_PARAM
On entry, argument value had an illegal value.
NE_INITIALIZATION
Either the initialization function has not been called first or icomm has been corrupted.
Either the initialization function was called with wtrans=Nag_SingleLevel or icomm has been corrupted.
NE_INT
On entry, lenc=value.
Constraint: lencvalue, the total number of coefficients generated by the preceding call to nag_mldwt_2d (c09ecc).
On entry, m=value.
Constraint: mvalue, the number of coefficients in the first dimension at the required level of reconstruction.
On entry, n=value.
Constraint: nvalue, the number of coefficients in the second dimension at the required level of reconstruction.
On entry, nwl=value.
Constraint: nwl1.
NE_INT_2
On entry, ldb=value and m=value.
Constraint: ldbm.
On entry, nwl=value and nfwd=value.
Constraint: nwlnfwd.
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.

8  Further Comments

None.

9  Example

See Section 9 in nag_mldwt_2d (c09ecc).

nag_imldwt_2d (c09edc) (PDF version)
c09 Chapter Contents
c09 Chapter Introduction
NAG C Library Manual

© The Numerical Algorithms Group Ltd, Oxford, UK. 2012