Table of Contents

NAME

QccWAVWaveletDWT1D, QccWAVWaveletInverseDWT1D - discrete wavelet transform and inverse transform for a 1D signal

SYNOPSIS

#include "libQccPack.h"

int QccWAVWaveletDWT1D(QccVector signal, int signal_length, int signal_origin, int subsample_pattern, int num_scales, const QccWAVWavelet *wavelet);
int QccWAVWaveletInverseDWT1D(QccVector signal, int signal_length, int signal_origin, int subsample_pattern, int num_scales, const QccWAVWavelet *wavelet);
int QccWAVWaveletDWTSubbandLength(int original_length, int level, int highband, int signal_origin, int subsample_pattern);

DESCRIPTION

QccWAVWaveletDWT1D() performs a discrete wavelet transform (DWT) of a one-dimensional signal. num_scales gives the number of scales, or levels, of the decomposition. QccWAVWaveletDWT1D() implements a dyadic decomposition of signal; that is, the lowpass subband is recursively decomposed into lowpass and highpass bands for each level of decomposition. The transform is critically sampled; that is, each subband produced in each decomposition level has roughly half as many samples as the lowpass band of the preceding level. The subbands output from the DWT are returned in signal, overwriting the original input signal. The output subbands are nested in signal starting with the lowpass subband of the lowest (coarsest) level of decomposition (i.e., the baseband) with subsequent highpass subbands of increasing resolution following.

Essentially, QccWAVWaveletDWT1D() calls QccWAVWaveletAnalysis1D(3) for each level of decomposition. QccWAVWaveletAnalysis1D(3) in turn calls either QccWAVFilterBankAnalysis(3) or QccWAVLiftingAnalysis(3) depending on whether wavelet specifies a filter-bank or lifting implementation. In either case, signal_origin indicates the sample index at which signal starts.

QccWAVWaveletInverseDWT1D() performs the inverse DWT of signal which is assumed to have been produced by QccWAVWaveletDWT1D(). num_scales gives the number of levels of decomposition that exist in signal. Essentially, QccWAVWaveletInverseDWT1D() calls QccWAVWaveletSynthesis1D(3) for each level of synthesis; QccWAVWaveletSynthesis1D(3) in turn calls either QccWAVFilterBankSynthesis(3) or QccWAVLiftingSynthesis(3) depending on whether wavelet specifies a filter-bank or lifting implementation. In either case, signal_origin indicates the sample index at which signal starts.

subsample_pattern indicates the even- or odd-phase subsampling to be used at each level of decomposition. In most applications, even subsampling at all levels is desired, in which case subsample_pattern should be set to zero. In more general settings, when some mixture of even- and odd-phase subsampling is desired, subsample_pattern can be an integer between 0 and 2^num_levels - 1. In this integer, the jth bit (where j = 1 is the least-significant bit) indicates whether the jth level of decomposition employs even or odd subsampling (0 = even, 1 = odd). For example, if subsample_pattern is 5, then the first and third decompositions use odd-phase subsampling, while all others use even subsampling.

QccWAVWaveletDWTSubbandLength() gives the length of a subband produced by QccWAVWaveletDWT1D(). original_length gives the original length of the undecomposed original signal. level and highpass indicates for which subband the length is to be returned. level gives the level of decomposition of the subband of interest, with 0 denoting the highest resolution (i.e., the level of the original signal) and num_scales being the lowest resolution scale (where num_scales is the number of scales used by QccWAVWaveletDWT1D() in the decomposition). highpass indicates whether the highpass (highpass = 1) or lowpass (highpass = 0) subband at the given level is of interest. signal_origin indicates the sample index at which the original signal started.

RETURN VALUES

QccWAVWaveletDWTSubbandLength() returns the subband length; the other routines return 0 on success and 1 on error.

SEE ALSO

QccWAVWaveletAnalysis1D(3) , QccWAVWaveletSynthesis1D(3) , QccWAVFilterBankAnalysis(3) , QccWAVFilterBankSynthesis(3) , QccWAVLiftingAnalysis(3) , QccWAVLiftingSynthesis(3) , QccWAVWaveletRedundantDWT1D(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.

AUTHOR

Copyright (C) 1997-2021 James E. Fowler


Table of Contents



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