Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

Dualtree

Dual-tree Complex Discrete Wavelet Transform


Description

One- and two-dimensional dual-tree complex discrete wavelet transforms developed by Kingsbury and Selesnick et al.

Usage

dualtree(x, J, Faf, af)
idualtree(w, J, Fsf, sf)
dualtree2D(x, J, Faf, af)
idualtree2D(w, J, Fsf, sf)

Arguments

x

N-point vector or MxN matrix.

w

DWT coefficients.

J

number of stages.

Faf

analysis filters for the first stage.

af

analysis filters for the remaining stages.

Fsf

synthesis filters for the last stage.

sf

synthesis filters for the preceeding stages.

Details

In one dimension N is divisible by 2^J and N≥2^{J-1}\cdot\mbox{length}(\mbox{\code{af}}).

In two dimensions, these two conditions must hold for both M and N.

Value

For the analysis of x, the output is

w

DWT coefficients. Each wavelet scale is a list containing the real and imaginary parts. The final scale (J+1) contains the low-pass filter coefficients.

For the synthesis of w, the output is

y

output signal

Author(s)

Matlab: S. Cai, K. Li and I. Selesnick; R port: B. Whitcher

References

WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
http://eeweb.poly.edu/iselesni/WaveletSoftware/

See Also

Examples

## EXAMPLE: dualtree
x = rnorm(512)
J = 4
Faf = FSfarras()$af
Fsf = FSfarras()$sf
af = dualfilt1()$af
sf = dualfilt1()$sf
w = dualtree(x, J, Faf, af)
y = idualtree(w, J, Fsf, sf)
err = x - y
max(abs(err))

## Example: dualtree2D
x = matrix(rnorm(64*64), 64, 64)
J = 3
Faf = FSfarras()$af
Fsf = FSfarras()$sf
af = dualfilt1()$af
sf = dualfilt1()$sf
w = dualtree2D(x, J, Faf, af)
y = idualtree2D(w, J, Fsf, sf)
err = x - y
max(abs(err))

## Display 2D wavelets of dualtree2D.m

J <- 4
L <- 3 * 2^(J+1)
N <- L / 2^J
Faf <- FSfarras()$af
Fsf <- FSfarras()$sf
af <- dualfilt1()$af
sf <- dualfilt1()$sf
x <- matrix(0, 2*L, 3*L)
w <- dualtree2D(x, J, Faf, af)
w[[J]][[1]][[1]][N/2, N/2+0*N] <- 1
w[[J]][[1]][[2]][N/2, N/2+1*N] <- 1
w[[J]][[1]][[3]][N/2, N/2+2*N] <- 1
w[[J]][[2]][[1]][N/2+N, N/2+0*N] <- 1
w[[J]][[2]][[2]][N/2+N, N/2+1*N] <- 1
w[[J]][[2]][[3]][N/2+N, N/2+2*N] <- 1
y <- idualtree2D(w, J, Fsf, sf)
image(t(y), col=grey(0:64/64), axes=FALSE)

waveslim

Basic Wavelet Routines for One-, Two-, and Three-Dimensional Signal Processing

v1.8.2
BSD_3_clause + file LICENSE
Authors
Brandon Whitcher
Initial release
2020-02-13

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.