Discrete stationary wavelet transform 2-D


SWC = swt2(X,N,'wname')
[A,H,V,D] = swt2(X,N,'wname')
SWC = swt2(X,N,Lo_D,Hi_D)
[A,H,V,D] = swt2(X,N,Lo_D,Hi_D)


swt2 performs a multilevel 2-D stationary wavelet decomposition using either a specific orthogonal wavelet ('wname'— see wfilters for more information) or specific orthogonal wavelet decomposition filters.

SWC = swt2(X,N,'wname') or [A,H,V,D] = swt2(X,N,'wname') compute the stationary wavelet decomposition of the matrix X at level N, using 'wname'.

N must be a strictly positive integer (see wmaxlev for more information), and 2N must divide size(X,1) and size(X,2).

Outputs [A,H,V,D] are 3-D arrays, which contain the coefficients:

  • For 1 i N, the output matrix A(:,:,i) contains the coefficients of approximation of level i.

  • The output matrices H(:,:,i), V(:,:,i) and D(:,:,i) contain the coefficients of details of level i (horizontal, vertical, and diagonal):

    SWC = [H(:,:,1:N) ; V(:,:,1:N) ; D(:,:,1:N) ; A(:,:,N)]

SWC = swt2(X,N,Lo_D,Hi_D) or [A,H,V,D] = swt2(X,N,Lo_D,Hi_D), computes the stationary wavelet decomposition as in the previous syntax, given these filters as input:

  • Lo_D is the decomposition low-pass filter.

  • Hi_D is the decomposition high-pass filter.

Lo_D and Hi_D must be the same length.

    Note   swt2 is defined using dwt with periodic extension.


% Load original image.
load nbarb1;

% Image coding.
nbcol = size(map,1);
cod_X = wcodemat(X,nbcol);

% Visualize the original image.
title('Original image');

% Perform SWT decomposition
% of X at level 3 using sym4.
[ca,chd,cvd,cdd] = swt2(X,3,'sym4');

% Visualize the decomposition.

for k = 1:3
    % Images coding for level k.
    cod_ca  = wcodemat(ca(:,:,k),nbcol);
    cod_chd = wcodemat(chd(:,:,k),nbcol);
    cod_cvd = wcodemat(cvd(:,:,k),nbcol);
    cod_cdd = wcodemat(cdd(:,:,k),nbcol);
    decl = [cod_ca,cod_chd;cod_cvd,cod_cdd];

    % Visualize the coefficients of the decomposition
    % at level k.

    title(['SWT dec.: approx. ', ...
   'and det. coefs (lev. ',num2str(k),')']);
% Editing some graphical properties,
% the following figure is generated.

More About

collapse all


When X represents an indexed image, X is an m-by-n matrix and the output arrays SWC or cA,cH,cV, and cD are m-by-n-by-p arrays.

When X represents a truecolor image, it becomes an m-by-n-by-3 array. This array is an m-by-n-by-3 array, where each m-by-n matrix represents a red, green, or blue color plane concatenated along the third dimension. The output arrays SWC or cA,cH,cV, and cD are m-by-n-by-p-by-3 arrays.

For more information on image formats, see the image and imfinfo reference pages.


For images, an algorithm similar to the one-dimensional case is possible for two-dimensional wavelets and scaling functions obtained from one-dimensional ones by tensor product.

This kind of two-dimensional SWT leads to a decomposition of approximation coefficients at levelj 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 step for images:


Nason, G.P.; B.W. Silverman (1995), "The stationary wavelet transform and some statistical applications," Lecture Notes in Statistics, 103, pp. 281–299.

Coifman, R.R.; Donoho, D.L. (1995), "Translation invariant de-noising," Lecture Notes in Statistics, 103, pp. 125–150.

Pesquet, J.C.; H. Krim, H. Carfatan (1996), "Time-invariant orthonormal wavelet representations," IEEE Trans. Sign. Proc., vol. 44, 8, pp. 1964–1970.

See Also

| |

Introduced before R2006a

Was this topic helpful?