fft.h

来自「上述是VIsualc++ 数字图像处理一书的源码」· C头文件 代码 · 共 96 行

H
96
字号
#ifndef _INSIDE_VISUAL_CPP_TRANSFORM
#define _INSIDE_VISUAL_CPP_TRANSFORM
#include"ImageCenterDib.h"


//宏定义,PI
#define PI 3.1415926

//复数类型结构体
struct ComplexNumber
{
	float imag;// imaginary虚部
	float real;//实部
};

//快速傅立叶变换类
class Transform_FFT:public ImgCenterDib
{
public:
	//输出图像每像素位数
	int m_nBitCountOut;
	
	//输出图像位图数据指针
	unsigned char * m_pImgDataOut;
	
	//输出图像颜色表
	LPRGBQUAD m_lpColorTableOut;
protected:
	
	//输出图像的宽
	int m_imgWidthOut;
	
	//输出图像的高
	int m_imgHeightOut;
	
	//输出图像颜色表长度
	int m_nColorTableLengthOut;
	
	//输入图像为非2的幂次的方阵时,扩展图像所需要的缓冲区指针
	unsigned char *m_pImgExpandBuf;
	
	//傅立叶变换缓冲区
	ComplexNumber *m_pFFTBuf;
	
	//图像是否被扩展的标志变量
	bool m_isExpanded;
	
public:
	//不带参数构造函数
	Transform_FFT();
	
	//带参数的构造函数
	Transform_FFT(CSize size, int nBitCount, LPRGBQUAD lpColorTable, 
		unsigned char *pImgData);
	
	//析构函数
	~Transform_FFT();
	
	//以像素为单位返回输出图像的宽和高
	CSize GetDimensions();
	
	//输入原图像数据
	void InputImgData(CSize size, int nBitCount, LPRGBQUAD lpColorTable, 
		unsigned char *pImgData);
	
	//图像傅立叶变换
	void Fourier();
	
	//傅立叶反变换
	void IFourier();
	
	//扩展的图像傅立叶变换
	void FourierEx();
	
	//扩展的傅立叶反变换
	void IFourierEx();
	
protected:
	//一维快速傅立叶正变换
	void FFT1D(ComplexNumber *arrayBuf, int n);
	
	//一维快速傅立叶反变换
	void IFFT1D(ComplexNumber *arrayBuf, int n);
	
	//二维快速傅立叶变换
	void ImgFFT2D(unsigned char* imgBuf, int width, int height, unsigned char *imgBufOut);
	
	//二维快速傅立叶变换
	void ImgIFFT2D(unsigned char* imgBufOut, int width, int height);
	
	//一维快速傅立叶正变换
	
	//一维快速傅立叶反变换
};

#endif // _INSIDE_VISUAL_CPP_TRANSFORM

⌨️ 快捷键说明

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