📄 fft.h
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -