Automatic 1-D de-noising

`[XD,CXD,LXD] = wden(X,TPTR,SORH,SCAL,N,`

* 'wname'*)

[XD,CXD,LXD] = wden(C,L,TPTR,SORH,SCAL,N,

`'wname'`

`wden`

is a one-dimensional
de-noising function.

`wden`

performs an automatic
de-noising process of a one-dimensional signal using wavelets.

`[XD,CXD,LXD] = wden(X,TPTR,SORH,SCAL,N,`

returns
a de-noised version * 'wname'*)

`XD`

of input signal `X`

obtained
by thresholding the wavelet coefficients.Additional output arguments `[CXD,LXD]`

are
the wavelet decomposition structure (see `wavedec`

for
more information) of the de-noised signal `XD`

.

`TPTR`

string contains the threshold selection
rule:

`'rigrsure'`

uses the principle of Stein's Unbiased Risk.`'heursure'`

is an heuristic variant of the first option.`'sqtwolog'`

for the universal threshold $$\sqrt{2\mathrm{ln}(\xb7)}$$`'minimaxi'`

for minimax thresholding (see`thselect`

for more information)

`SORH`

(`'s'`

or `'h'`

)
is for soft or hard thresholding (see `wthresh`

for
more information).

`SCAL`

defines multiplicative threshold rescaling:

`'one'`

for no rescaling

`'sln'`

for rescaling using a single estimation
of level noise based on first-level coefficients

`'mln'`

for rescaling done using level-dependent
estimation of level noise

Wavelet decomposition is performed at level `N`

and `'`

`wname`

`'`

is
a string containing the name of the desired orthogonal wavelet (see `wmaxlev`

and `wfilters`

for more information).

`[XD,CXD,LXD] = wden(C,L,TPTR,SORH,SCAL,N,`

returns
the same output arguments, using the same options as above, but obtained
directly from the input wavelet decomposition structure * 'wname'*)

`[C,L]`

of
the signal to be de-noised, at level `N`

and using `'wname'`

The underlying model for the noisy signal is basically of the following form:

$$s(n)=f(n)+\sigma e(n)$$

where time *n* is equally spaced.

In the simplest model, suppose that *e*(*n*)
is a Gaussian white noise *N*(0,1) and the noise
level σ a is supposed to be equal to 1.

The de-noising objective is to suppress the noise part of the
signal *s* and to recover *f*.

The de-noising procedure proceeds in three steps:

Decomposition. Choose a wavelet, and choose a level

`N`

. Compute the wavelet decomposition of the signal s at level`N`

.Detail coefficients thresholding. For each level from 1 to

`N`

, select a threshold and apply soft thresholding to the detail coefficients.Reconstruction. Compute wavelet reconstruction based on the original approximation coefficients of level

`N`

and the modified detail coefficients of levels from 1 to`N`

.

More details about threshold selection rules are in Denoising and Nonparametric Function Estimation, in the
User's Guide, and in the help of the `thselect`

function.
Let us point out that

The detail coefficients vector is the superposition of the coefficients of

*f*and the coefficients of*e*, and that the decomposition of*e*leads to detail coefficients that are standard Gaussian white noises.Minimax and SURE threshold selection rules are more conservative and are more convenient when small details of function

*f*lie in the noise range. The two other rules remove the noise more efficiently. The option`'heursure'`

is a compromise.

In practice, the basic model cannot be used directly. This section
examines the options available, to deal with model deviations. The
remaining parameter `scal`

has to be specified. It
corresponds to threshold rescaling methods.

Option

`scal`

=`'one'`

corresponds to the basic model.In general, you can ignore the noise level that must be estimated. The detail coefficients

*CD*(the finest scale) are essentially noise coefficients with standard deviation equal to σ. The median absolute deviation of the coefficients is a robust estimate of σ. The use of a robust estimate is crucial because if level 1 coefficients contain_{1}*f*details, these details are concentrated in few coefficients to avoid signal end effects, which are pure artifacts due to computations on the edges.The option

`scal = 'sln'`

handles threshold rescaling using a single estimation of level noise based on the first-level coefficients.When you suspect a nonwhite noise

*e*, thresholds must be rescaled by a level-dependent estimation of the level noise. The same kind of strategy is used by estimating σlevel by level. This estimation is implemented in the file_{lev}`wnoisest`

, which handles the wavelet decomposition structure of the original signal*s*directly.The option

`scal`

=`'mln'`

handles threshold rescaling using a level-dependent estimation of the level noise.

% The current extension mode is zero-padding (see dwtmode). % Set signal to noise ratio and set rand seed. snr = 3; init = 2055615866; % Generate original signal and a noisy version adding % a standard Gaussian white noise. [xref,x] = wnoise(3,11,snr,init); % De-noise noisy signal using soft heuristic SURE thresholding % and scaled noise option, on detail coefficients obtained % from the decomposition of x, at level 5 by sym8 wavelet. lev = 5; xd = wden(x,'heursure','s','one',lev,'sym8'); % Plot signals. subplot(611), plot(xref), axis([1 2048 -10 10]); title('Original signal'); subplot(612), plot(x), axis([1 2048 -10 10]); title(['Noisy signal - Signal to noise ratio = ',... num2str(fix(snr))]); subplot(613), plot(xd), axis([1 2048 -10 10]); title('De-noised signal - heuristic SURE'); % De-noise noisy signal using soft SURE thresholding xd = wden(x,'heursure','s','one',lev,'sym8'); % Plot signal. subplot(614), plot(xd), axis([1 2048 -10 10]); title('De-noised signal - SURE'); % De-noise noisy signal using fixed form threshold with % a single level estimation of noise standard deviation. xd = wden(x,'sqtwolog','s','sln',lev,'sym8'); % Plot signal. subplot(615), plot(xd), axis([1 2048 -10 10]); title('De-noised signal - Fixed form threshold'); % De-noise noisy signal using minimax threshold with % a multiple level estimation of noise standard deviation. xd = wden(x,'minimaxi','s','sln',lev,'sym8'); % Plot signal. subplot(616), plot(xd), axis([1 2048 -10 10]); title('De-noised signal - Minimax'); % If many trials are necessary, it is better to perform % decomposition once and threshold it many times: % decomposition. [c,l] = wavedec(x,lev,'sym8'); % threshold the decomposition structure [c,l]. xd = wden(c,l,'minimaxi','s','sln',lev,'sym8'); % Editing some graphical properties, % the following figure is generated.

Antoniadis, A.; G. Oppenheim, Eds. (1995), *Wavelets
and statistics*, 103, Lecture Notes in Statistics, Springer
Verlag.

Donoho, D.L. (1993), "Progress in wavelet analysis and
WVD: a ten minute tour," in *Progress in wavelet analysis
and applications*, Y. Meyer, S. Roques, pp. 109–128.
Frontières Ed.

Donoho, D.L.; I.M. Johnstone (1994), "Ideal spatial adaptation
by wavelet shrinkage," *Biometrika*, Vol.
81, pp. 425–455.

Donoho, D.L. (1995), "De-noising by soft-thresholding," *IEEE
Trans. on Inf. Theory*, 42 3, pp. 613– 627.

Donoho, D.L.; I.M. Johnstone, G. Kerkyacharian, D. Picard (1995),
"Wavelet shrinkage: asymptotia," *Jour. Roy.
Stat. Soc.*, *series B*, Vol. 57, No.
2, pp. 301–369.

Was this topic helpful?