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

📄 dwt.h

📁 基于DCT的小波变换EZW压缩算法以及毕业设计论文
💻 H
字号:
// DWT.h: interface for the CDWT class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DWT_H__899AB5CC_B749_4003_8466_192FEE1743FF__INCLUDED_)
#define AFX_DWT_H__899AB5CC_B749_4003_8466_192FEE1743FF__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CDWT  
{
public:
	CDWT();
	virtual ~CDWT();

// Attributes
public:
	    
// Operations
public:

	// 下面是关于小波的分解、合成需要的相关函数
	
	// 滤波器的名称
	CString		FilterName;
	// 滤波器组
	double *Hi_D,*Lo_D,*Hi_R,*Lo_R;
	// 滤波器长度
	int	L_Hi_D,L_Lo_D,L_Hi_R,L_Lo_R, FilterLong;
		
	//  填充长度,即取低频和高频滤波器长度的最大值
    int npad;
	
	// 边界延拓模式,当ExtendMode=0,为周期延拓;
	//              当ExtendMode=1,为对称延拓
	int ExtendMode;

	// 设置分解合成滤波器组,filtername是滤波器组的名称
	void SetFilters(LPCSTR filtername);

	BOOL ImageDWT  (LPBYTE lpImage, double *outdata, 
					int ImageWidth, int ImageHeight, 
					int nCurStep, int nSteps,
					int extendmode);
	BOOL ImageIDWT (double *indata, LPBYTE lpImage,
					int ImageWidth, int ImageHeight, 
					int nCurStep, int nSteps,
					int extendmode);  

protected:
   //小波变换函数
	void DWTStep_1D (double *input, double *output, 
		             int dataLong, int extendmode);	
    void DWT_1D  (double *input, double *output, 
		          int dataLong, int nsteps, int extendmode);
	void DWT_2D  (double *input, double *output, 
		          int rowLong, int colLong,
			      int nsteps,  int extendmode);

	void IDWTStep_1D (double *input, double *output, 
		              int dataLong, int extendmode);
	void IDWT_1D (double *input, double *output, 
		          int dataLong, int nsteps, int extendmode);
	void IDWT_2D (double *input, double *output,
				  int rowLong, int colLong,
		          int nsteps,  int extendmode);

    void symmetric_extension (double *output, int dataLong);
	void periodic_extension (double *output, int dataLong);

	// copy elements from p1 to p2
	void copy (const double *p1, double *p2, const int length)
	{int temp = length; while(temp--) *p2++ = *p1++;}

	void copy (const double *p1, const int stride1, double *p2, 
	           const int length)
	{int temp = length; while(temp--) {*p2++ = *p1; p1 += stride1;}}
    BYTE DoubleToByte(double f);
    char DoubleToChar(double f); 
};

#endif // !defined(AFX_DWT_H__899AB5CC_B749_4003_8466_192FEE1743FF__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -