R: Dual-tree Complex Discrete Wavelet Transform

Dualtree {waveslim} | R Documentation

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

### See Also

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

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

[Package waveslim version 1.8.3 Index]