next up previous contents index
Next: biowave2 Up: Reference Previous: w1threshold   Contents   Index


$ \bigcirc$Name

biowave1 Computes the biorthogonal wavelet transform of an 1D signal

$ \bigcirc$Command Synopsis

biowave1 [-r RecursNum] [-e EdgeMode] [-n FilterNorm] Signal WavTrans ImpulseResponse1 ImpulseResponse2

-r RecursNum : Number of levels (default 1)

-e EdgeMode : Edge processing mode (0/1/2, default 2)

-n FilterNorm : Normalization mode for filter bank (0/1/2, default 0)

Signal : Input signal (fsignal)

WavTrans : Wavelet transform of Signal (wtrans1d)

ImpulseResponse1 : Impulse response of filter 1 (fsignal)

ImpulseResponse2 : Impulse response of filter 2 (fsignal)

$ \bigcirc$Function Summary

void biowave1 (NumRec , Edge , FilterNorm , Signal , Output , Ri1 , Ri2 )

int *NumRec ;

int *Edge ;

int *FilterNorm ;

Fsignal Signal ;

Wtrans1d Output ;

Fsignal Ri1 ;

Fsignal Ri2 ;

$ \bigcirc$Description

biowave1 computes the discrete wavelet transform of the univariate digitized signal whose sample values are in the file Signal, using filter banks associated to biorthogonal bases of wavelets. See owave1 module's documentation for definitions and notations and refer to [CDF92] for the theory.

Let {Vj}j $\scriptstyle \in$ Z, {$ \tilde{{V}}_{{j}}^{}$}j $\scriptstyle \in$ Z be a pair of dual multiresolution analysis. The integer translates of the the two associated scaling functions are no longer required to be orthogonal, but they do satisfy

< $\displaystyle \varphi_{{j,k}}^{}$,$\displaystyle \varphi_{{j'k'}}^{}$ > = $\displaystyle \delta_{{j,j'}}^{}$$\displaystyle \delta_{{k,k'}}^{}$.

The approximation of a signal f is now defined using the projector :

P$\scriptstyle \tilde{{V}}_{{j}}$f = $\displaystyle \sum_{{k}}^{}$ < f,$\displaystyle \varphi_{{j,k}}^{}$(x) > $\displaystyle \tilde{{\varphi}}_{{j,k}}^{}$

The associated wavelet spaces are defined as follows :
Vj-1 = Vj$\displaystyle \;\stackrel{{\perp}}{{\oplus}}\;$$\displaystyle \tilde{{W}}_{{j}}^{}$      
$\displaystyle \tilde{{V}}_{{j-1}}^{}$ = $\displaystyle \tilde{{V}}_{{j}}^{}$$\displaystyle \;\stackrel{{\perp}}{{\oplus}}\;$Wj      

Let $ \psi$ and $ \tilde{{\psi}}$ be the two corresponding mother wavelets. Their integer translates are no longer orthogonal, although the orthogonal property is preserved across scales :

$\displaystyle \psi_{{j,k}}^{}$ $\displaystyle \perp$ $\displaystyle \psi_{{j',k'}}^{}$ if j $\displaystyle \neq$ j'      
$\displaystyle \tilde{{\psi}}_{{j,k}}^{}$ $\displaystyle \perp$ $\displaystyle \tilde{{\psi}}_{{j',k'}}^{}$ if j $\displaystyle \neq$ j'      

If the signal f is in $ \tilde{{V}}_{{0}}^{}$ it can be decomposed as

f = $\displaystyle \sum_{{k}}^{}$ < f,$\displaystyle \varphi_{{J,k}}^{}$(x) > $\displaystyle \tilde{{\varphi}}_{{J,k}}^{}$ + $\displaystyle \sum_{{j=1}}^{{J}}$$\displaystyle \sum_{{k}}^{}$ < f,$\displaystyle \psi_{{j,k}}^{}$(x) > $\displaystyle \tilde{{\psi}}_{{j,k}}^{}$

where J is any positive integer. As in owave1, < f,$ \varphi_{{j,k}}^{}$ > is noted Aj[k] and < f,$ \psi_{{j,k}}^{}$ > is noted Dj[k].

From the coefficients A0[k] (which are stored in the file Signal) biowave1 computes the wavelet decomposition D1, D2,..., DJ, AJ. As for orthogonal decomposition this is done recursively, and the two-scales relationships

$\displaystyle \varphi$(t) = $\displaystyle \sqrt{{2}}$$\displaystyle \sum_{{k}}^{}$hk$\displaystyle \varphi$(2t - k)       $\displaystyle \tilde{{\varphi}}$(t) = $\displaystyle \sqrt{{2}}$$\displaystyle \sum_{{k}}^{}$$\displaystyle \tilde{{h}}_{{k}}^{}$$\displaystyle \tilde{{\varphi}}$(2t - k)
$\displaystyle \psi$(t) = $\displaystyle \sqrt{{2}}$$\displaystyle \sum_{{k}}^{}$gk$\displaystyle \varphi$(2t - k) $\displaystyle \tilde{{\psi}}$(t) = $\displaystyle \sqrt{{2}}$$\displaystyle \sum_{{k}}^{}$$\displaystyle \tilde{{g}}_{{k}}^{}$$\displaystyle \tilde{{\varphi}}$(2t - k)

where gk = (- 1)k$ \tilde{{h}}_{{1-k}}^{}$ and $ \tilde{{g}}_{{k}}^{}$ = (- 1)kh1-k, enable one to simplify each step :
Aj+1[n] = $\displaystyle \sum_{{k}}^{}$$\displaystyle \tilde{{h}}_{{k-2n}}^{}$Aj[k]      
Dj+1[n] = $\displaystyle \sum_{{k}}^{}$$\displaystyle \tilde{{g}}_{{k-2n}}^{}$Aj[k]      

Once again if ($ \tilde{{h}}_{{k}}^{}$) is a low-pas filter, regardless of its definition by the two-scale relationships, then Aj+1[k] is effectively an average of Aj[k], and from this point of view biowave1 does nothing more than a subband coding of the signal. If ($ \tilde{{h}}_{{k}}^{}$) comes from the two-scales relationships above, then it has the exact reconstruction property and the associated filter for reconstruction is (hk). (hk) and ($ \tilde{{h}}_{{k}}^{}$) are then called quadrature mirror filters (QMF).

The different ways of edge processing are the following :

Notice that if one uses the reflexion mode with linear phase filter, then one doesn't have to keep extra coefficients near edges in order to get the exact reconstruction property. This is because the symmetry of the filters implies the symmetry of the sub-signals around each edge.

As for the orthogonal case, the size of the wavelet decomposition (omitting edge problems) is equal to the size of the original signal, the scale parameter J is upperbounded, and when edge processing is performed via periodization, the size of the signal should be a multiple of 2J.

If the impulse responses have size N and $ \tilde{{N}}$ then the complexity of the algorithm is roughly (1 - 2-(J-2))(N + $ \tilde{{N}}$)n multiplications and additions, where n is the size of the signal.

The resulting sub-signals A1, A2,..., AJ and D1, D2,..., DJ are stored in files having all the same prefix Wavtrans. The name of the file is prefix_j_A.wtrans1d for Aj and prefix_j_D.wtrans1d for Dj.

The coefficients (hk) and ($ \tilde{{h}}_{{k}}^{}$) of the filter's impulse responses are stored in the file ImpulseResponse1 and ImpulseResponse2.

$ \bigcirc$See Also


$ \bigcirc$Version 1.3

Last Modification date : Thu Jan 31 15:02:08 2002

$ \bigcirc$Author

Jean-Pierre D'Ales

next up previous contents index
Next: biowave2 Up: Reference Previous: w1threshold   Contents   Index
mw 2004-05-05