www.pudn.com > EZW_.rar > WAVELET.H
#ifndef __WAVELET_H_ #define __WAVELET_H_ /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ /* Port to C from C++ * * Mow-Song, Ng 2/9/2002 * msng@mmu.edu.my * http://www.pesona.mmu.edu.my/~msng * * I do not claim copyright to the code, but if you use them or modify them, * please drop me a mail. * */ /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ /* Original copyright info */ /*---------------------------------------------------------------------------*/ // Baseline Wavelet Transform Coder Construction Kit // // Geoff Davis // gdavis@cs.dartmouth.edu // http://www.cs.dartmouth.edu/~gdavis // // Copyright 1996 Geoff Davis 9/11/96 // // Permission is granted to use this software for research purposes as // long as this notice stays attached to this software. // /*---------------------------------------------------------------------------*/ #include#include #include "global.h" #include "filter.h" #include "memchk.h" typedef struct WaveletStruct { FILTER *analysisLow, *analysisHigh; // H and G FILTER *synthesisLow, *synthesisHigh; // H~ and G~ int symmetric; // TRUE if filter set is symmetric int npad; } WAVELET; WAVELET *WaveletAlloc(FILTERSET *filterset); void WaveletDealloc(WAVELET *wavelet); void WaveletTransform1D(WAVELET *wavelet, Real *input, Real *output, int size, int nsteps, int symExt); void WaveletInvert1D(WAVELET *wavelet, Real *input, Real *output, int size, int nsteps, int symExt); void WaveletTransform2D(WAVELET *wavelet, Real *input, Real *output, int hsize, int vsize, int nsteps, int symExt); void WaveletInvert2D(WAVELET *wavelet, Real *input, Real *output, int hsize, int vsize, int nsteps, int symExt); void WaveletSymmetricExtension(WAVELET *wavelet, Real *output, int size, int leftExt, int rightExt, int symmetry); void WaveletPeriodicExtension(WAVELET *wavelet, Real *output, int size); void WaveletTransformStep (WAVELET *wavelet, Real *input, Real *output, int size, int symExt); void WaveletInvertStep (WAVELET *wavelet, Real *input, Real *output, int size, int symExt); void copy (const Real *p1, Real *p2, const int length); void copy_p1_skip (const Real *p1, const int stride1, Real *p2, const int length); void copy_p2_skip (const Real *p1, Real *p2, const int stride2, const int length); void WaveletError(char *fmt, ...); void WaveletWarning(char *fmt, ...); extern FILTERSET *Haar, *Daub4, *Daub6, *Daub8, *Antonini, *Villa1810, *Adelson, *Brislawn, *Brislawn2, *Villa1, *Villa2, *Villa3, *Villa4, *Villa5, *Villa6, *Odegard; #endif