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)