📄 wtransform.h
字号:
#ifndef _WTRANSFORM_
#define _WTRANSFORM_
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* 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.
//
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Some note
* ---------
* LL | LH
* -------------
* HL | HH
*
* LH -> HPF row, LPF col
* HL -> LPF row, HPF col
* HH -> HPF row, HPF col
*
* Note that we can have the following convention:
* The lowest scale subband, LL_0 has scale = 0, then we have LH_1, HL_1 and HH_1,
* whihc have scale = 1, LH_2, HL_2 and HH_2 which have scale = 2 and so on.
* To access a subband coeff, we specifiy the scale and orientation (0, 1 or 2),
* and its (y,x) location in the subband, i.e coeff (y, x) in HL_2 is access via
*
* idx = 3*scale-2+orientation --> 3*2-2+1 = 5
* coeff = transform->subbandPtr[idx][y*transform->subbandHSize[idx] + x]
*
* In this convention, scale=0 has to be treated as special case.
*
*
*/
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
#include <stdlib.h>
#include <math.h>
#include <stdarg.h>
#include "wavelet.h"
#include "image.h"
#include "memchk.h"
typedef struct WaveletTransformStruct{
int hsize, vsize;
Real *value;
WAVELET *wavelet;
int nsteps;
int symmetric;
int nSubbands;
int *subbandSize;
int *subbandHSize;
int *subbandVSize;
Real **subbandPtr;
} WTRANSFORM;
WTRANSFORM *WaveletTransformAlloc(WAVELET *wavelet, FIMAGE *image,
int nsteps, int symmetric);
WTRANSFORM *WaveletTransformAllocBlank(WAVELET *wavelet, int hsize, int vsize,
int nsteps, int symmetric);
WTRANSFORM *WaveletTransformAllocCopy(WTRANSFORM *WaveletTransformSrc);
void WaveletTransformDealloc(WTRANSFORM *WaveletTransform);
void WaveletTransformForward(WTRANSFORM *WaveletTransform, FIMAGE *image,
WAVELET *wavelet, int nsteps, int symmetric);
void WaveletTransformInvert(WTRANSFORM *WaveletTransform, FIMAGE *invertedImage);
Real WaveletTransformGetValue(WTRANSFORM *WaveletTransform, int scale,
int orientation, int x, int y);
void WaveletTransformSetValue(WTRANSFORM *WaveletTransform, int scale,
int orientation, int x, int y, Real val);
FIMAGE *WaveletTransformInvertThis(WTRANSFORM *WaveletTransform);
void MallatToLinear(WTRANSFORM *WaveletTransform, Real *mallat);
void LinearToMallat(WTRANSFORM *WaveletTransform, Real *mallat);
void WaveletTransformInit(WTRANSFORM *WaveletTransform);
void WaveletTransformFreeAll(WTRANSFORM *WaveletTransform);
void WaveletTransformError(char *fmt, ...);
void WaveletTransformWarning(char *fmt, ...);
FIMAGE *WaveletTransformCodeCoeff(WTRANSFORM *WaveletTransform, int DrawLine);
void WaveletTransformWriteCoeffToText(WTRANSFORM *WaveletTransform, char *filename);
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -