The dual tree discrete wavelet transform (DTWT).

USAGE:

wavDTWT( x, n.levels = 3, biorthogonal = ``nearsyma", qshift = ``a" )

DESCRIPTION:

The Dual-Tree Complex Wavelet Transform (DTWT) is a recent development in wavelet theory due to Professor Nick Kingsbury at Cambridge University. The research that resulted in the DTWT was motivated by the quest for a transform that would have several desirable properties: Invertibility, shift invariance, 2-D directional selectivity,and numerical stability Kingsbury's transform retains perfect reconstruction, achieves a good (but approximate) degree of shift invariance, has good directional selectivity, and is numerically stable. These features do come with a modest degree of redundancy (a factor of two in one dimension, or four in two dimensions), but this is considerably less than the redundancy of the non-decimated wavelet transform. The transform is evaluated via two trees of filters that are designed to have the character of "real" and "imaginary" parts of an overall complex wavelet transform. We emphasize, however, that this is accomplished using purely real filters. Here, the "complex" nature of the result must be understood in the analytic signal sense. Thus, the mother wavelets associated with each tree are discrete versions of Hilbert transforms of one another. Equivalently, the lowpass filters of one tree interpolate midway between the lowpass filters of the second tree. While no complex numbers are involved in the evaluation of the transforms themselves, the results obtained from the two trees, ``Tree A" and ``Tree B," are interpreted as (Tree A) + j (Tree B). The wavDTWT function calculates the wavelet coefficients and scaling coefficients for a given filter type. Two sets of filters must be specified: (1) a biorthogonal set used only for level one of the DTWT and (2) an even-length, quarter-sample shift (Q-Shift) filter set used for decomposition levels greater than one.

REQUIRED ARGUMENTS:

x
A vector containing a uniformly-sampled real-valued time series.

OPTIONAL ARGUMENTS:

n.levels
The number of decomposition levels. Default: the maximum level at which there exists at least one interior wavelet coefficient.
biorthogonal
A character string denoting the level one biorthogonal filter type. Supported types are ``antonini", ``legall", ``nearsyma", and ``nearsymb". Default: ``nearsyma".
qshift
A character string denoting the Q-Shift filter type used for levels greater than one. Supported types are ``a", ``b", ``c", and ``d". Default: ``a".

VALUE:

result
An object of class WaveletDualTree.

REFERENCES:

(1) N. G. Kingsbury, ``The dual-tree complex wavelet transform: a new efficient tool for image restoration and enhancement'', Proc. EUSIPCO 98, Rhodes, Sept. 1998.

(2) N. G. Kingsbury, ``Image processing with complex wavelets'', Phil. Trans. Royal Society London A, Sept. 1999, pp. 2543-2560.

(3) N. G. Kingsbury, ``A dual-tree complex wavelet transform with improved orthogonality and symmetry properties'', Proc. IEEE Conf. on Image Processing, Vancouver, Sept. 11-13, 2000, Paper 1429.

(4) I. Daubechies, ``Orthonormal Bases of Compactly Supported Wavelets'', Communications on Pure and, Applied Mathematics, 41, 909-96.

SEE ALSO:

, , .

EXAMPLES:

   ## create data vector
   x <- make.signal("linchirp", n = 128)

   ## calculate DTWT coefficients of data vector
   ## x through level 3
   xwav <- wavDTWT(x, n.levels = 3, bior = "nearsymb",
   + qshift = "b" )

   ## display results
   print(xwav)

   ## plot wavelet coefficients for all levels for both
   ## tree A and tree B
   plot(xwav)

   ## plot complex magnitudes of wavelet coefficients
   ## |treeA + j*treeB|
   plot(xwav, mod = T)

   ## display wavelet detail coefficients, but not the
   ## scaling coefficients
   plot(xwav, plot.scaling = F)

   ## extract and plot wavelet crystals from Levels 1 and
   ## 3 only
   plot(xwav, levels = c(1,3))

   ## reconstruct x from its DTWT
   x.recon <- reconstruct(xwav)

   ## evaluate reconstruction
   vecnorm(x.recon - x)/vecnorm(x)