Table of Contents
QccWAVWaveletAnalysis2D, QccWAVWaveletSynthesis2D - separable wavelet
analysis/synthesis of a 2D signal
#include "libQccPack.h"
int
QccWAVWaveletAnalysis2D(QccMatrix matrix, int num_rows, int num_cols,
int phase_row, int phase_col, const QccWAVWavelet *wavelet);
int QccWAVWaveletSynthesis2D(QccMatrix
matrix, int num_rows, int num_cols, int phase_row, int phase_col, const
QccWAVWavelet *wavelet);
QccWAVWaveletAnalysis2D() performs
one level of a separable 2D wavelet decomposition for a two-dimensional
signal, matrix, which is represented as a matrix of num_rows rows and
num_cols columns. Essentially, QccWAVWaveletAnalysis2D() calls QccWAVWaveletAnalysis1D(3)
once for each row of the matrix, then once for each column of the matrix.
phase_row and phase_col indicate whether the rows and columns, respectively,
of the image start with even- or odd-indexed samples. Usually, one assumes
that the upper-left corner of the image is indexed as (0, 0) - in this case,
both phase_row and phase_col would be QCCWAVWAVELET_PHASE_EVEN. In any
event, phase_row is passed as the phase argument for each call to QccWAVWaveletAnalysis1D(3)
for the rows, and similarly for phase_col for analysis of the columns.
The result of the separable decomposition is returned in matrix. The low-low
subband (baseband) is returned in the upper-left quadrant of matrix, the
low-high subband (vertical subband) is returned in the upper-right quadrant,
the high-low subband (horizontal subband) is returned in the lower-left
quadrant, and the high-high subband (diagonal subband) is returned in the
lower-right quadrant.
QccWAVWaveletSynthesis2D() performs one level of separable
wavelet synthesis for a 2D signal. Subbands in matrix are assumed to be
organized as described above for the output of QccWAVWaveletAnalysis2D().
QccWAVWaveletSynthesis2D() calls QccWAVWaveletSynthesis1D(3)
once for
each column then once for each row. The result of the separable wavelet
synthesis is returned in matrix.
Note: In general, you will probably want
to use QccWAVWaveletDWT2D(3)
and QccWAVWaveletInverseDWT2D(3)
instead
of these routines for implementing a discrete wavelet transform and its
inverse since QccWAVWaveletDWT2D(3)
and QccWAVWaveletInverseDWT2D(3)
allow
any number of scales, or levels, of decomposition to be performed.
These routines return 0 on success and 1 on error.
QccWAVWaveletAnalysis1D(3)
,
QccWAVWaveletSynthesis1D(3)
, QccWAVWaveletDWT2D(3)
, QccWAVWaveletInverseDWT2D(3)
,
QccWAVWavelet(3)
, QccPackWAV(3)
, QccPack(3)
M. Antonini, M. Barlaud, P. Mathieu,
and I. Daubechies, "Image Coding Using Wavelet Transform," IEEE Transactions
on Image Processing, vol. 1, pp. 205-220, April 1992.
I. Daubechies and W. Sweldens,
"Factoring Wavelet Transforms Into Lifting Steps," J. Fourier Anal. Appl.,
vol. 4, no. 3, pp. 245-267, 1998.
Copyright (C) 1997-2021 James E. Fowler
Table of Contents