**Name**

**iowave1** Reconstructs a signal from an orthogonal wavelet transform

**Command Synopsis**

**iowave1** [-r *RecursNum*] [-h *HaarLevel*] [-e *EdgeMode*] [-p *PrecondMode*] [-i] [-n *FilterNorm*] *WavTrans* *RecompSignal* *ImpulseResponse* [*EdgeIR* ]

-rRecursNum: Number of levels (default 1)

-hHaarLevel: Start reconstruction with Haar from HaarLevel

-eEdgeMode: Edge processing mode (0/1/2/3, default 3)

-pPrecondMode: Edge preconditionning mode (0/1/2, default 0)

-i : Invertible transform

-nFilterNorm: Filter taps normalization (0/1/2, default 2)

WavTrans: Input wavelet transform (wtrans1d)

RecompSignal: Reconstructed signal (fsignal)

ImpulseResponse: Impulse response of inner filters (fsignal)

EdgeIR: Impulse reponses of edge and preconditionning filters (fimage)

**Function Summary**

void iowave1 (NumRec , Haar , Edge , Precond , Inverse , FilterNorm , Wtrans , Output , Ri , Edge_Ri )

int *NumRec ;

int *Haar ;

int *Edge ;

int *Precond ;

int *Inverse ;

int *FilterNorm ;

Wtrans1d Wtrans ;

Fsignal Output ;

Fsignal Ri ;

Fimage Edge_Ri ;

**Description**

*iowave1* reconstructs a signal from a sequence of sub-signals forming a wavelet decomposition, according to the pyramidal algorithm of S. Mallat [Mal89].
The notations that are used here have been already defined in *owave1* module's documentation, and the reader is refered there to see their signification.

*WavTrans* is the prefix name of a sequence of files containing the coefficients of a wavelet decomposition
*A*_{J}, *D*_{J}, *D*_{J-1},..., *D*_{1}. *iowave1* computes *A*_{0}, i.e. the inverse wavelet transform of *WavTrans*.
As for the decomposition this is done recursively : *A*_{j-1} is computed from *A*_{j} and *D*_{j}. Here again the one-step algorithm is very simple due to the two-scale relationship

(2*x*) = *h*_{k-2l}(*x* - *l* )+ *g*_{k-2l}(*x* - *l* )

And thus
The edge processing methods are corresponding to those described for *owave1*.

The complexity of the algorithm is roughly the same as for *owave1*.

The sample values of the reconstructed signal are stored in the file *RecompSignal*.

The coefficients *h*_{k} of the filter's impulse response are stored in the file *ImpulseResponse*. The coefficients of the filter's impulse response for computing the edge coefficients are stored in the file *EdgeIR*.

- The -r option specifies the number of levels
*J*in the decomposition. - The -e option specifies the edge processing mode (see
*owave1*). - The -p option specifies the preconditionning mode.
- 0 : no preconditionning (default).
- 1 : inverse preconditionning of the reconstructed signal.
- 2 : preconditionning of the average at level
*J*and inverse preconditionning of the reconstructed signal.

- The -i option enables to have invertible transform. Since the transform is invertible when EdgeMode is equal to 1 or 3, this only makes sense when EdgeMode is equal to 0 or 2.
- The -n option specifies the normalisation mode of the filter impulse responses' coefficients. It should be selected according to the mode used for the decomposition in order to get exact reconstruction.

**See Also**

**Version 1.2**

Last Modification date : Thu Jan 31 15:11:06 2002

**Author**

Jean-Pierre D'Ales