/* * Declare some utilities needed to create quadrature filters. * * Copyright (C) 1991--94 Wickerhauser Consulting. All Rights Reserved. * May be freely copied for noncommercial use. See * ``Adapted Wavelet Analysis from Theory to Software'' ISBN 1-56881-041-5 * by Mladen Victor Wickerhauser [AK Peters, Ltd., Wellesley, Mass., 1994] * */ #ifndef QF_HDR_ALREADY_INCLUDED #define QF_HDR_ALREADY_INCLUDED #include "real.h" #define IFH(x) ((x)&1?((x)-1)/2:(x)/2) #define ICH(x) ((x)&1?((x)+1)/2:(x)/2) #define LOW_PASS_QF (0x0) #define HIGH_PASS_QF (0x1) /* This macro gives the starting offset of the `2m'-preperiodized * filter sequence in the `->fp' element of a `pqf' struct: */ #define PQFL(m) (2*(m)*(m+1)) #define PQFO(m) (2*(m)*(m)) /* DATA STRUCTURES: these are passed to convolution/decimation routines. */ typedef struct { int alpha; /* Least valid `f[]' index. */ int omega; /* Greatest valid `f[]' index. */ real center; /* Center of energy of the filter. */ real deviation; /* Deviation from linear phase. */ const real *f; /* Filter coefficient array. */ real *fp; /* Periodized coefficient array. */ } pqf; /* Periodized conjugate quadrature filter. */ /* UTILITIES: */ void qfcirc( real *fp, /* Preallocated output array. */ const real *f, /* Filter coefficients. */ int alpha, /* First valid `in[]' index. */ int omega); /* Last valid `in[]' index. */ pqf * mkpqf( const real *coefs, /* Original filter: `coefs[0]...'. */ int alpha, /* Least valid index of `?->f[]'. */ int omega, /* Greatest valid index of `?->f[]'. */ int flags); /* Reserved for future use. */ pqf * qf( /* Coefficient struct or NULL pointer. */ const char *name, /* String "B", "C", "D", or "V". */ int range, /* Length of coefficient array. */ int kind); /* LOW_PASS_QF or HIGH_PASS_QF. */ real coe( /* Center of energy. */ const real *in, /* Sequence of coefficients. */ int alpha, /* First valid `in[]' index. */ int omega); /* Last valid `in[]' index. */ real lphdev( /* Center of energy. */ const real *in, /* Sequence of coefficients. */ int alpha, /* First valid `in[]' index. */ int omega); /* Last valid `in[]' index. */ #endif /* QF_HDR_ALREADY_INCLUDED */