Previous IDL Wavelet Toolkit User's Guide: IDL Wavelet Toolkit Reference Next

WV_DENOISE

Syntax | Return Value | Arguments | Keywords | Examples | Version History | See Also

The WV_DENOISE function uses the wavelet transform to filter (or de-noise) a multi-dimensional array.

WV_DENOISE computes the discrete wavelet transform of Array, and then discards wavelet coefficients smaller than a certain threshold. WV_DENOISE then computes the inverse wavelet transform on the filtered coefficients and returns the result.

Syntax

Result = WV_DENOISE(Array [, Family, Order] [, COEFFICIENTS=value] [, CUTOFF=variable] [, DENOISE_STATE=variable] [, /DOUBLE] [, DWT_FILTERED=variable] [, PERCENT=value] [, THRESHOLD=value] [, WPS_FILTERED=variable])

Return Value

The result is an array of the same dimensions as the input Array. If Array is double precision or /DOUBLE is set then the result is double precision, otherwise the result is single precision.

Arguments

Array

A one-dimensional array of length N, of floating-point or complex type.

Family

A scalar string giving the name of the wavelet function to use for the transform. WV_DENOISE will construct the actual function name by removing all white space and attaching a prefix of 'WV_FN_'.


Note
WV_DENOISE may only be used with discrete wavelets, such as WV_FN_COIFLET, WV_FN_DAUBECHIES, WV_FN_HAAR, and WV_FN_SYMLET.

Order

The order number, or parameter, for the wavelet function given by Family. If not specified the default for the wavelet function will be used.


Note
If you pass in a DENOISE_STATE structure, then Family and Order may be omitted. In this case the values from DENOISE_STATE are used.

Keywords

COEFFICIENTS

Set this keyword to a scalar specifying the number of wavelet coefficients to retain in the filtered wavelet transform. This keyword is ignored if keyword PERCENT is present.

CUTOFF

Set this keyword to a named variable that, upon return, will contain the cutoff value of wavelet power that was used for the threshold.

DENOISE_STATE

This is both an input and an output keyword. If this keyword is set to a named variable, then on exit, DENOISE_STATE will contain the following structure:

Table 4-4: The Structure Tags for DENOISE_STATE 

Table 4-4: The Structure Tags for DENOISE_STATE 
Tag
Type
Definition
FAMILY
STRING
Name of the wavelet function used.
ORDER
DOUBLE
Order for the wavelet function.
DWT
FLT/DBLARR
Discrete wavelet transform of Array
WPS
FLT/DBLARR
Wavelet power spectrum, equal to |DWT|^2
SORTED
FLT/DBLARR
Percent-normalized WPS, sorted
CUMULATIVE
FLT/DBLARR
Cumulative sum of SORTED
COEFFICIENTS
LONG
Number of coefficients retained
PERCENT
DOUBLE
Percent of coefficients retained


Note
If the DOUBLE keyword is set, then the arrays will be of type double.

Upon input, if DENOISE_STATE is set to a structure with the above form, then DWT, WPS, SORTED, and CUMULATIVE will not be recomputed by WV_DENOISE. This is useful if you want to make multiple calls to WV_DENOISE using the same Array.


Warning
No error checking is made on the input values. The values should not be modified between calls to DENOISE_STATE.

DOUBLE

Set this keyword to force the computation to be done using double-precision arithmetic.

DWT_FILTERED

Set this keyword to a named variable in which the filtered discrete wavelet transform will be returned.

PERCENT

Set this keyword to a scalar specifying the percentage of cumulative power to retain.


Note
If neither COEFFICIENTS nor PERCENT is present then all of the coefficients are retained (i.e. no filtering is done).

THRESHOLD

Set this keyword to a scalar specifying the type of threshold. The actual threshold, T, is set using COEFFICIENTS or PERCENT. Possible values are:

Table 4-5: THRESHOLD Values 

Table 4-5: THRESHOLD Values 
Value
Description
0
Hard threshold (this is the default). The hard threshold sets all wavelet coefficients with magnitude less than or equal to T to zero.
1
Soft threshold. The soft threshold sets all DWT[i] with magnitude less than T to zero, and also linearly reduces the magnitude of the each retained wavelet coefficient by T: Positive coefficients are set equal to DWT[i] – T, while negative coefficients are set equal to DWT[i] + T.

WPS_FILTERED

Set this keyword to a named variable in which the filtered wavelet power spectrum will be returned.

Examples

Remove the noise from a 128 x 128 image:

image = dist(128) + 5*randomn(1, 128, 128)  
; Keep only 100 out of 16384 coefficients:  
denoise = WV_DENOISE(image, 'Daubechies', 2, COEFF=100, $  
   DENOISE_STATE=denoise_state)  
  
window, xsize=256, ysize=155  
tvscl, image, 0  
tvscl, denoise, 1  
xyouts, [64, 196], [5, 5], ['Image', 'Filtered'], $  
   /device, align=0.5, charsize=2  
print, 'Percent of power retained: ', denoise_state.percent  

IDL prints:

Percent of power retained:        93.151491  

Change to a "soft" threshold (use DENOISE_STATE to avoid re-computing):

denoise2 = WV_DENOISE(image, COEFF=100, $  
   DENOISE_STATE=denoise_state, THRESHOLD=1)  

 

Figure 4-1: Example of De-Noising an Image.

Figure 4-1: Example of De-Noising an Image.

Version History

5.4
Introduced

See Also

WV_DWT, WV_TOOL_DENOISE

  IDL Online Help (March 06, 2007)