📄 filter.h
字号:
#ifndef __FILTER_H_
#define __FILTER_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.
*
*/
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/*
* $LOG
* ----
* - Found a bug in the symmetry of filter, it was never set!!!
* If the wavelet transform is called without specifying the symmetry
* (==-1), then it will rely on the symmetry of the wavelet used.
* In my code, since I used biorthogonal filters most of the time, I have
* specify the symmetry as TRUE. This is alright for filters like Antonini,
* Adelson, Villa1810 etc. However, the problem appears in orthogonal
* filters like Haar, Daub4, Daub6 and Daub8, which requires that the
* symmetry set to FALSE to use periodic extension.
*
*/
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* 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 <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include "global.h"
#include "memchk.h"
typedef struct FilterStruct {
int size, firstIndex, center;
Real *coeff;
} FILTER;
typedef struct FilterSetStruct {
int symmetric;
FILTER *analysisLow;
FILTER *analysisHigh;
FILTER *synthesisLow;
FILTER *synthesisHigh;
} FILTERSET;
/* FILTER */
FILTER * FilterAllocDef(void);
FILTER * FilterAlloc(int size, int firstIndex, Real *coeff);
FILTER * FilterAllocCopy(FILTER *filterSrc);
void FilterDealloc(FILTER *filter);
void FilterInit(FILTER *filter, int size, int firstIndex, Real *coeff);
Real FilterCoeff(FILTER *filter, int index);
void FilterCopy(FILTER *filterDest, FILTER *filterSrc);
/* FILTERSET */
FILTERSET * FilterSetAllocDef(void);
FILTERSET * FilterSetAlloc(int symmetric,
Real *anLow, int anLowSize, int anLowFirst,
Real *synLow, int synLowSize, int synLowFirst);
FILTERSET * FilterSetAllocCopy(FILTERSET *filtersetSrc);
void FilterSetDealloc(FILTERSET *filterset);
void FilterSetCopy(FILTERSET *filtersetDest, FILTERSET *filtersetSrc);
void InitializeFilterSets(void);
void RemoveFilterSets(void);
void FilterError(char *fmt, ...);
void FilterWarning(char *fmt, ...);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -