Learn R Programming

waveslim (version 1.8.5)

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)

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

Arguments

x

N-point vector or MxN matrix.

J

number of stages.

Faf

analysis filters for the first stage.

af

analysis filters for the remaining stages.

w

DWT coefficients.

Fsf

synthesis filters for the last stage.

sf

synthesis filters for the preceeding stages.

Author

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

Details

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

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

See Also

FSfarras, farras, convolve, cshift, afb, sfb.

Examples

Run this code

## 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)

Run the code above in your browser using DataLab