**Name**

**stvrestore** Restoration of signal using total variation and thresholding in orthonormal bases

**Command Synopsis**

**stvrestore** [-r] [-n *n*] [-a *alpha*] [-O *O*] [-I *I*] [-V *V*] *M* *u* *out*

-r : Relax constraint on approximation space V_J

-nn: Number of iterations (default: 10000)

-aalpha: Alpha parameter to smooth the total variation

-OO: Use orthonormal wavelet with the given impulse response

-II: Use wavelet adapted to the interval with the given edge filter

-VV: Output signal with minimal total variation

M: Input thresholding mask (1 | -1=coeff.kept, 0=coeff.thresholded)

u: Input thresholded signal

out: Output restored signal

**Function Summary**

Fsignal stvrestore (relax , Niter , alpha , O , I , V , M , u )

char *relax ;

int *Niter ;

double *alpha ;

Fsignal O ;

Fimage I ;

Fsignal V ;

Fsignal M ;

Fsignal u ;

**Description**

This module implements the main step of a wavelet-denoising algorithm combining a total variation (TV) minimization approach. The first presentation of these method has been made in [DF01], while in [DF03] one will find the detail of the algorithm together with the proof of the convergence.

In short, the approach is motivated by wavelet signal denoising methods, where
thresholding small wavelet coefficients leads to pseudo-Gibbs artifacts. By replacing
these thresholded coefficients by values minimizing the total variation of the
reconstructed signal, the method performs a nearly artifact free signal denoising.
Minimizing total variation has first been proposed by Rudin, Osher and Fatemi
in the context of image denoising [ROF92][RO94],
see module `tvdenoise`.

The inputs of `stvrestore` are the thresholded signal *u* within the given orthonormal
basis, and a mask *M* which gives the location of the non-thresholded coefficients.
The output is the restored signal with minimal TV subject to the constraint that
the coefficients are kept unchanged in the location given by the mask.
Although the theory allows to apply this thresholding-restoration process on all
orthonormal bases, at this time only orthonormal wavelets are working : you should
therefore call the module with `-O`.
The mask *M* has to be computed by the module that applies the threshold; in case of
wavelets this is done by `w1threshold`.

To see how to use `stvrestore` and how to run the whole denoising process,
you may look at the user's macro `Swtvdenoise`, which preset for
`stvrestore` most of useful parameters.

**See Also**

**Version 1.6**

Last Modification date : Thu Apr 3 17:11:37 2003

**Author**

Jacques Froment