int QccWAVFilterBankMakeOrthogonal(QccWAVFilterBank
*filter_bank, const QccFilter *primary_filter);
int QccWAVFilterBankMakeBiorthogonal(QccWAVFilterBank
*filter_bank, const QccFilter *primary_filter, const QccFilter *dual_filter);
int QccWAVFilterBankBiorthogonal(const QccWAVFilterBank *filter_bank);
QccWAVFilterBankMakeBiorthogonal() constructs a biorthogonal wavelet filter bank using the sets of coefficients given by primary_filter and dual_filter. primary_filter is the primary filter of the biorthogonal filter bank, i.e., the lowpass synthesis filter (primary scaling filter). dual_filter is the dual filter of the biorthogonal filter bank, i.e., the lowpass analysis filter (dual scaling filter). Both primary_filter and dual_filter must be symmetric (i.e., primary_filter->causality = QCCFILTER_SYMMETRIC and likewise for dual_filter) or an error will be returned. The highpass synthesis and highpass analysis filters and constructed using "alternate sign flip" from primary_filter and dual_filter.
For both of these routines, filter_bank is first allocated via a call to QccWAVFilterBankAlloc(3) and then the four filters are stored in the appropriate fields of filter_bank.
QccWAVFilterBankBiorthogonal() returns 1 if filter_bank is a biorthogonal filter bank, and 0 if it is not.
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.