Table of Contents
QccWAVLiftingScheme - data structure QccWAVLiftingScheme and corresponding
LFT file format for wavelet-based analysis/synthesis using a lifting implementation
#include "libQccPack.h"
int QccWAVLiftingSchemeInitialize(QccWAVLiftingScheme
*lifting_scheme);
int QccWAVLiftingSchemePrint(const QccWAVLiftingScheme
*lifting_scheme);
int QccWAVLiftingSchemeBiorthogonal(const QccWAVLiftingScheme
*lifting_scheme);
int QccWAVLiftingSchemeInteger(const QccWAVLiftingScheme
*lifting_scheme);
QccPack provides data structure QccWAVLiftingScheme
for representing a lifting scheme for a two-band wavelet-based analysis
and synthesis using lifting (as opposed to filtering; see QccWAVFilterBank(3)
).
This lifting-scheme structure can be read from and written to LFT-format
files, or a QccWAVLiftingScheme structure can be used without file input
or output.
The only component of the lifting-scheme structure is an integer
code indicating which lifting scheme to employ. This is due to the fact
that the lifting implementations of wavelet analysis and synthesis are
"hard-coded" into the QccPack library for purposes of execution speed and
ease of implementation (this is opposed to the situation for filter-based
analysis and synthesis which employ generic filter routines and read coefficients
from files). As a consequence, only a limited number (see below) of wavelets
are current supported, and this list cannot be extended by the user (without
modifying the QccPack source code, or course).
The QccWAVLiftingScheme
data structure is defined as:
typedef struct
{
QccString filename;
QccString magic_num;
int major_version;
int minor_version;
int scheme;
} QccWAVLiftingScheme;
The fields of QccWAVLiftingScheme
are as follows:
- filename
- The name of the file.
- magic_num, major_version,
minor_version
- The magic number and version of the file.
- scheme
- The integer
code denoting which lifting scheme to employ. The current possibilities
are limited to QCCWAVLIFTINGSCHEME_LWT (Lazy Wavelet transform), QCCWAVLIFTINGSCHEME_Daubechies4
(Daubechies length-4 orthonormal wavelet), QCCWAVLIFTINGSCHEME_CohenDaubechiesFeauveau9_7
(Cohen-Daubechies-Feauveau length 9-7 biorothogonal wavelet), QCCWAVLIFTINGSCHEME_CohenDaubechiesFeauveau5_3
(Cohen-Daubechies-Feauveau length 5-3 biorthogonal wavelet, which is also
known as "linear lifting"), QCCWAVLIFTINGSCHEME_IntLWT (integer-valued
Lazy Wavelet transform), QCCWAVLIFTINGSCHEME_IntCohenDaubechiesFeauveau9_7
(integer-valued Cohen-Daubechies-Feauveau length 9-7 biorothogonal wavelet),
and QCCWAVLIFTINGSCHEME_IntCohenDaubechiesFeauveau5_3 (integer-valued Cohen-Daubechies-Feauveau
length 5-3 biorothogonal wavelet).
For reading and writing
structures of type QccWAVLiftingScheme, QccPack provides the LFT file
format. This file format starts with an ASCII header followed by binary
data. The ASCII header consists of magic-number/revision information followed
by any amount of white space (space, `\t' (tab), `\n' (newline), `\r' (return))
and/or comments lines (lines starting with `#'). The ASCII integer corresponding
to scheme is given following the header.
The LFT file format consists of
the following information:
LFTX.X
<white space>
scheme
where LFT is
the magic number, X.X is the version number, <white space> is white space
and/or comment lines, and scheme is the lifting scheme.
QccWAVLiftingSchemeInitialize()
should be called before any use of a QccWAVLiftingScheme structure. QccWAVLiftingSchemeInitialize()
initializes the fields of lifting_scheme to the following values:
filename:
NULL string
magic_num: QCCLIFTINGSCHEME_MAGICNUM
major_version, minor_version:
initialized to output of QccGetQccPackVersion(3)
scheme: -1 (undefined)
QccWAVLiftingSchemePrint() prints the contents of lifting_scheme to stdout.
QccWAVLiftingSchemeBiorthogonal() returns 1 if lifting_scheme is biorthogonal,
0 otherwise.
QccWAVLiftingSchemeInteger() returns 1 if lifting_scheme
is integer-valued, 0 otherwise.
QccPack comes with the following
LFT- format files for specifying certain lifting wavelets. The LFT files
and their corresponding wavelets are
LWT.lft - Lazy Wavelet transform
CohenDaubechiesFeauveau.5-3.lft - length 9/5 biorthogonal wavelet
CohenDaubechiesFeauveau.9-7.lft
- length 9/7 biorthogonal wavelet
Daubechies.4.lft - length 4 orthogonal
wavelet
LWT.int.lft - integer-valued Lazy Wavelet transform
CohenDaubechiesFeauveau.9-7.int.lft
- integer-valued length 9/7 biorthogonal wavelet
CohenDaubechiesFeauveau.5-3.int.lft
- integer-valued length 5/3 biorthogonal wavelet
These routines
return 0 on success, and 1 on failure.
QccPackWAV(3)
, QccPack(3)
Copyright (C) 1997-2021 James E. Fowler
Table of Contents