⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wtransform.h

📁 该程序把数字图像处理与小波变换结合起来
💻 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 + -