Table of Contents

NAME

QccWAVWaveletLWT2DInt, QccWAVWaveletInverseLWT2DInt - forward and inverse separable 2D integer-valued lazy wavelet transform

SYNOPSIS

#include "libQccPack.h"

int QccWAVWaveletLWT2DInt(const QccMatrixInt input_matrix, QccMatrixInt output_matrix, int num_rows, int num_cols, int origin_row, int origin_col, int subsample_pattern_row, int subsample_pattern_col);
int QccWAVInverseWaveletLWT2DInt(const QccMatrixInt input_matrix, QccMatrixInt output_matrix, int num_rows, int num_cols, int origin_row, int origin_col, int subsample_pattern_row, int subsample_pattern_col);

DESCRIPTION

QccWAVWaveletLWT2DInt() implements a separable lazy wavelet transform (LWT). Essentially, the input_matrix is partitioned into four subsets: the even-row-even-column samples, the even-row-odd-column samples, the odd-row-even-column samples, and the odd-row-odd-column samples. These four subsets lie in the four quadrants of output_matrix.

origin_row and origin_col give the row and column index numbers of the upper-left-corner sample of input_matrix and are used to determine the phases of subsampling in each level of the signal decomposition. In most cases, input_matrix starts at (0, 0), so origin_row and origin_col are both 0.

subsample_pattern_row and subsample_pattern_col may both be either QCCWAVWAVELET_PHASE_EVEN or QCCWAVWAVELET_PHASE_ODD, indicating whether even- or odd-phase subsampling is desired along each row and column, respectively. In the usual case, even subsampling is normally used.

In the case that num_rows is even, all four "subbands" of the LWT have the same number of rows. On the other hand, if num_rows is odd, two of the four subbands will be one row longer than the others. Which subbands will be longer will depend on whether origin_row is odd or even. Likewise, num_cols and origin_col determine if the subbands have the same number of columns, and which ones are wider if not.

QccWAVWaveletLWT2DInt() is implemented as a separable decomposition using 1D LWTs via calls to QccWAVWaveletLWTInt().

QccWAVWaveletInverseLWT2DInt() performs the opposite operation as QccWAVWaveletLWT2DInt(). That is, the subbands are extracted from input_matrix and "interleaved" to produce output_matrix.

For both of these routines, output_matrix must be allocated to sufficient size before calling the routine.

RETURN VALUES

Both QccWAVWaveletLWT2DInt() and QccWAVWaveletInverseLWT2DInt() return 0 on success and 1 on error.

SEE ALSO

QccWAVWaveletLWTInt(3) , QccWAVWaveletInverseLWTInt(3) , QccPackWAV(3) , QccPack(3)

I. Daubechies and W. Sweldens, "Factoring Wavelet Transforms Into Lifting Steps," J. Fourier Anal. Appl., vol. 4, no. 3, pp. 245-267, 1998.

AUTHOR

Copyright (C) 1997-2021 James E. Fowler


Table of Contents



Get QccPack at SourceForge.net. Fast, secure and Free Open Source software downloads