# dwt2

Single-level discrete 2-D wavelet transform

## Syntax

``[cA,cH,cV,cD] = dwt2(X,wname)``
``[cA,cH,cV,cD] = dwt2(X,LoD,HiD)``
``[cA,cH,cV,cD] = dwt2(___,'mode',extmode)``

## Description

`dwt2` computes the single-level 2-D wavelet decomposition. Compare `dwt2` with `wavedec2` which may be more useful for your application. The decomposition is done with respect to either a particular wavelet (see `wfilters` for more information) or particular wavelet decomposition filters.

example

````[cA,cH,cV,cD] = dwt2(X,wname)` computes the single-level 2-D discrete wavelet transform (DWT) of the input data `X` using the `wname` wavelet. `dwt2` returns the approximation coefficients matrix `cA` and detail coefficients matrices `cH`, `cV`, and `cD` (horizontal, vertical, and diagonal, respectively).```

example

````[cA,cH,cV,cD] = dwt2(X,LoD,HiD)` computes the single-level 2-D DWT using the wavelet decomposition lowpass filter `LoD` and highpass filter `HiD`. The decomposition filters must have the same length and an even number of samples.```
````[cA,cH,cV,cD] = dwt2(___,'mode',extmode)` computes the single-level 2-D DWT with the extension mode `extmode`. Include this argument after all other arguments.```

## Examples

collapse all

Load and display an image.

```load woman imagesc(X) colormap(map)```

Obtain the single-level 2-D discrete wavelet transform of the image using the order 4 symlet and periodic extension.

`[cA,cH,cV,cD] = dwt2(X,'sym4','mode','per');`

Display the vertical detail coefficients and the approximation coefficients.

```imagesc(cV) title('Vertical Detail Coefficients')```

```imagesc(cA) title('Approximation Coefficients')```

Load and display an image.

```load sculpture imagesc(X) colormap gray```

Generate the lowpass and highpass decomposition filters for the Haar wavelet.

`[LoD,HiD] = wfilters('haar','d');`

Use the filters to perform a single-level 2-D wavelet decomposition. Use half-point symmetric extension. Display the approximation and detail coefficients.

```[cA,cH,cV,cD] = dwt2(X,LoD,HiD,'mode','symh'); subplot(2,2,1) imagesc(cA) colormap gray title('Approximation') subplot(2,2,2) imagesc(cH) colormap gray title('Horizontal') subplot(2,2,3) imagesc(cV) colormap gray title('Vertical') subplot(2,2,4) imagesc(cD) colormap gray title('Diagonal')```

## Input Arguments

collapse all

Input data, specified as a numeric or logical array. `X` can be an `m`-by-`n` array representing an indexed image or an `m`-by-`n`-by-3 array representing a truecolor image. For more information on truecolor images, see RGB (Truecolor) Images (MATLAB).

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `logical`

Analyzing wavelet used to compute the 2-D DWT, specified as a character vector or string scalar. The analyzing wavelet is from one of the following wavelet families: Daubechies, Coiflets, Symlets, Fejér-Korovkin, Discrete Meyer, Biorthogonal, and Reverse Biorthogonal. See `wfilters` for the wavelets available in each family.

Wavelet decomposition lowpass filter, specified as an even-length real-valued vector. `LoD` must be of the same length as `HiD`.

Data Types: `double` | `single`

Wavelet decomposition highpass filter, specified as an even-length real-valued vector. `HiD` must be of the same length as `LoD`.

Data Types: `double` | `single`

Extension mode used when performing the DWT, specified as one of the following:

`mode`

DWT Extension Mode

`'zpd'`

Zero extension

`'sp0'`

Smooth extension of order 0

`'spd'` (or``` 'sp1'```)

Smooth extension of order 1

`'sym'` or `'symh'`

Symmetric extension (half point): boundary value symmetric replication

`'symw'`

Symmetric extension (whole point): boundary value symmetric replication

`'asym'` or `'asymh'`

Antisymmetric extension (half point): boundary value antisymmetric replication

`'asymw'`

Antisymmetric extension (whole point): boundary value antisymmetric replication

`'ppd'`

Periodized extension (1)

`'per'`

Periodized extension (2)

If the signal length is odd, `wextend` adds to the right an extra sample that is equal to the last value, and performs the extension using the `'ppd'` mode. Otherwise, `'per'` reduces to `'ppd'`. This rule also applies to images.

The global variable managed by `dwtmode` specifies the default extension mode.

Example: ```[cA,cH,cV,cD] = dwt2(x,'db4','mode','symw');```

## Output Arguments

collapse all

Approximation coefficients, returned as an array whose size depends on `X`. Let `sx = size(X)` and `lf = `the length of the decomposition filters.

• If the DWT extension mode is set to periodization, then this output is of size `ceil(sx/2)`.

• For the other extension modes, this output is of size `floor((sx+lf-1)/2)`.

Data Types: `double` | `single`

Horizontal detail coefficients, returned as an array whose size depends on `X`. Let `sx = size(X)` and `lf = `the length of the decomposition filters.

• If the DWT extension mode is set to periodization, then this output is of size `ceil(sx/2)`.

• For the other extension modes, this output is of size `floor((sx+lf-1)/2)`.

Data Types: `double` | `single`

Vertical detail coefficients, returned as an array whose size depends on `X`. Let `sx = size(X)` and `lf = `the length of the decomposition filters.

• If the DWT extension mode is set to periodization, then this output is of size `ceil(sx/2)`.

• For the other extension modes, this output is of size `floor((sx+lf-1)/2)`.

Data Types: `double` | `single`

Diagonal detail coefficients, returned as an array whose size depends on `X`. Let `sx = size(X)` and `lf =` the length of the decomposition filters.

• If the DWT extension mode is set to periodization, then this output is of size `ceil(sx/2)`.

• For the other extension modes, this output is of size `floor((sx+lf-1)/2)`.

Data Types: `double` | `single`

## Algorithms

The 2-D wavelet decomposition algorithm for images is similar to the one-dimensional case. The two-dimensional wavelet and scaling functions are obtained by taking the tensor products of the one-dimensional wavelet and scaling functions. This kind of two-dimensional DWT leads to a decomposition of approximation coefficients at level j in four components: the approximation at level j + 1, and the details in three orientations (horizontal, vertical, and diagonal). The following chart describes the basic decomposition steps for images.

• — Downsample columns: keep the even indexed columns

• — Downsample rows: keep the even indexed rows

• — Convolve with filter X the rows of the entry

• — Convolve with filter X the columns of the entry

The decomposition is initialized by setting the approximation coefficients equal to the image s: $C{A}_{0}=s$.

### Note

To deal with signal-end effects introduced by a convolution-based algorithm, the 1-D and 2-D DWT use a global variable managed by `dwtmode`. This variable defines the kind of signal extension mode used. The possible options include zero-padding and symmetric extension, which is the default mode.

## References

[1] Daubechies, I. Ten Lectures on Wavelets, CBMS-NSF Regional Conference Series in Applied Mathematics. Philadelphia, PA: SIAM Ed, 1992.

[2] Mallat, S. G. “A Theory for Multiresolution Signal Decomposition: The Wavelet Representation,” IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. 11, Issue 7, July 1989, pp. 674–693.

[3] Meyer, Y. Wavelets and Operators. Translated by D. H. Salinger. Cambridge, UK: Cambridge University Press, 1995.