InverseWaveletTransform

InverseWaveletTransform[dwd]

gives the inverse wavelet transform of a DiscreteWaveletData object dwd.

InverseWaveletTransform[dwd,wave]

gives the inverse transform using the wavelet wave.

InverseWaveletTransform[dwd,wave,wind]

gives the inverse transform from the wavelet coefficients specified by wind.

Details and Options

  • InverseWaveletTransform computes the inverse transform of discrete forward transforms such as DiscreteWaveletTransform etc.
  • The possible wavelets wave are the same as for the forward wavelet transforms.
  • The default wave is Automatic, which is taken to be dwd["Wavelet"].
  • The possible specifications for wind are the same as used by DiscreteWaveletData.
  • The default wind is Automatic, which is taken to be dwd["BasisIndex"].
  • InverseWaveletTransform[dwd,wave,wind] computes the inverse transform using only the wavelet coefficients specified by wind; other coefficients are set to be zero.
  • The inverse transform works recursively by computing coefficients with wavelet index {w1,,wn-1} from coefficients with wavelet index {w1,,wn-1,wn}.
  • An explicit wind specification needs to be consistent. A wind specification is consistent if for each {w1,,wn} that is included no {w1,,wk} for k<n is included.
  • InverseWaveletTransform[dwd,wave,r] can be used to inverse transform the r lowest levels of the wavelet tree.
  • The default level r is given by the number of refinement levels n in dwd. With r<n a new DiscreteWaveletData object is returned with n-r refinement levels.

Examples

open allclose all

Basic Examples  (3)

Perform a discrete wavelet transform:

Inverse transform recovers the original data:

DiscreteWaveletData representing modified wavelet image coefficients:

Inverse transform gives filtered image:

DiscreteWaveletData representing an audio signal:

Inverse transform using refinement level 5 coefficients only:

Scope  (14)

Basic Uses  (8)

Inverse wavelet transform DiscreteWaveletData from any discrete forward transform:

The inverse transform is exact for data directly from the forward transform:

Inverse wavelet transform modified DiscreteWaveletData:

The inverse is computed from the modified wavelet coefficients:

Inverse wavelet transform using specified wavelet coefficients only:

Inverse transform only the detail coefficient {0,1}:

Inverse transform all wavelet coefficients matching {0,_}, setting other coefficients to zero:

Inverse transform an explicitly constructed DiscreteWaveletData object:

The type of wavelet transform is inferred from the form of the specified coefficients:

Unspecified coefficients are taken to be zero:

Specify a different wavelet to use in the inverse transform:

By default, the wavelet used in the forward transform is chosen:

For array data, the inverse transform is an array with the same dimensions:

For image data, the inverse transform is given as an Image object:

The image has the same dimensions and number of color channels as the original data:

For sound data, the inverse transform is given as a Sound object:

The sound has the same duration, sampling rate, and number of channels as the original data:

Reconstruction Basis  (6)

A subset of the available coefficients is used in the inverse transform:

dwd["BasisIndex"] gives the coefficients used by default in the inverse transform:

Use dwd["TreeView"] to get a tree plot of all coefficients with the default basis highlighted:

Compute the inverse transform using the default basis of coefficients:

Compute the inverse transform using a specific basis:

Use a specific subset of a basis, with the other coefficients taken to be zero:

Compute the inverse transform of a single coefficient:

A standard basis is chosen as the default for all non-packet DiscreteWaveletData:

The basis includes the detail coefficients {,1} and the last coarse coefficient {,0}:

The default basis for packet transform data uses coefficients at the highest refinement level:

For packet transform data, the wavelet basis can be changed using WaveletBestBasis:

Choose the basis that minimizes the information entropy of the coefficients:

Choose a specific basis:

Highlight each basis in a tree plot of all coefficients:

For data directly from packet transforms, the inverse transform is independent of the basis:

Compare the inverse transform for several different full wavelet basis specifications:

For modified wavelet data, the inverse transform can depend on the basis chosen:

Generalizations & Extensions  (2)

Partial inverse wavelet transform:

Obtain a DiscreteWaveletData with 1 less level of refinement:

Visualize wavelet coefficients remaining after inverting the lowest levels of refinement:

InverseWaveletTransform[dwd] is equivalent to inverting all levels of refinement:

Inverse transform of complex wavelet coefficients:

InverseWaveletTransform gives the exact inverse transform:

Applications  (8)

Wavelet Synthesis  (2)

Discrete wavelet data consisting of noise in detail coefficient {0,,1} at refinement level :

Use inverse wavelet transform to synthesize noise on a single specific scale:

Stationary wavelet matrix data consisting of noise in vertical detail coefficient {2,2} only:

Use inverse wavelet transform to synthesize noisy data:

Noise in different wavelet coefficients leads to different kinds of synthesized noisy data:

Inverse Discrete Wavelet Transform  (3)

Discrete wavelet transform data with the first coarse coefficient equal to :

Visualize the inverse transform for different coarse coefficients:

Discrete wavelet transform data with the first detail coefficient equal to :

Visualize the inverse transform for different detail coefficients:

Discrete wavelet packet transform data with wavelet coefficients :

Visualize the inverse transform of each coefficient separately:

The set of inverse transforms forms a basis for the signal space :

Inverse Stationary Wavelet Transform  (3)

Stationary wavelet transform data with the first coarse coefficient equal to :

Visualize the inverse transform for different coarse coefficients:

Stationary wavelet transform data with the first detail coefficient equal to :

Visualize the inverse transform for different detail coefficients:

Stationary wavelet packet transform data with wavelet coefficients :

Visualize the inverse transform of each component of each coefficient separately:

The set of 16 inverse transforms spans the signal space :

Properties & Relations  (7)

InverseWaveletTransform is the exact inverse of transforms using an orthogonal wavelet:

Use the orthogonal HaarWavelet:

The inverse is inexact for nonorthogonal wavelet families such as ShannonWavelet:

By default, coefficients in dwd["BasisIndex"] are used in the inverse:

Set all other coefficients to zero:

The inverse using the default basis is unaffected:

InverseWaveletTransform[,,wind] effectively sets other wavelet coefficients to zero:

Explicitly set other wavelet coefficients to zero:

InverseWaveletTransform[,,wind] computes the inverse from the coefficients wind:

dwd[wind,"Inverse"] computes the inverse of each coefficient separately:

The total gives the same result as InverseWaveletTransform:

Use ListLinePlot to plot inverse transforms of individual vector coefficients:

dwd[wind,{"Inverse","ListPlot"}] gives a simple list plot of each inverse transform:

WaveletListPlot[dwd,wind,Method->"Inverse"->True] plots inverses together:

Use MatrixPlot to plot inverse transforms of individual matrix coefficients:

dwd[wind,{"Inverse","MatrixPlot"}] gives a simple matrix plot of each inverse:

Inverse transforms of individual coefficients from image data are given as Image objects:

Possible Issues  (1)

A wind specification is inconsistent if it includes both {a1,,an} and {a1,,ar} for r<n:

The specification is inconsistent because the inverse transform computes {1} from {1,0}:

Use a consistent wind specification:

Introduced in 2010
 (8.0)