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

📄 imagect.h

📁 主要是应用VC进行傅立叶变换和反变换的程序
💻 H
字号:
#ifndef IMAGECT
#define IMAGECT

#include "stdafx.h"
#include "memBitmap.h"
#include "dft.h"
void ImageDFT(wComplex *Data,memBITMAP &m_mBmp);
void ImageNDFT(wComplex *Data,memBITMAP &m_mBmp);
void ImageFFT(wComplex *Data,memBITMAP &m_mBmp);
void ImageNFFT(wComplex *Data,memBITMAP &m_mBmp);

#endif
/*

void ImageDFT(wComplex *Data,memBITMAP &m_mBmp)
{
	int width=m_mBmp.GetWidth();
	int height=m_mBmp.GetHeight();
//	BYTE *temp2=new BYTE[(long)width*height*sizeof(wComplex)];
//	wComplex *Data=(wComplex *)temp2;
//	if(!Data)
//	{
//		AfxMessageBox("内存不够");
//		return;
//	}
	wFOURIOR hDft(width);
	wFOURIOR vDft(height);
	int i,j;
	for(i=0;i<width;i++)
	{
		for(j=0;j<height;j++)
		{
			COLORREF color=m_mBmp.GetPixel(i,j);
			int r=GetRValue(color);
			int g=GetGValue(color);
			int b=GetBValue(color);
			float gray1=float(r)*0.3f+(float)g*0.59f+(float)b*0.11f;
			if((i+j)&1==1)
				*(Data+j*width+i)=wComplex(-(double)gray1,0.0);
			else
				*(Data+j*width+i)=wComplex((double)gray1,0.0);
		}
	}
	for(i=0;i<height;i++)
	{
		hDft.DFT(Data+i*width);
		for(j=0;j<width;j++)
			*(Data+i*width+j)/=(float)width;
	}
	BYTE *temp1=new BYTE[height*sizeof(wComplex)];
	wComplex *vData=(wComplex*)temp1;
	for(i=0;i<width;i++)
	{
		for(j=0;j<height;j++)
			*(vData+j)=*(Data+j*width+i);
		vDft.DFT(vData);
		for(j=0;j<height;j++)
			*(Data+j*width+i)=*(vData+j);
	}
	delete temp1;
	for(i=0;i<width;i++)
	{
		for(j=0;j<height;j++)
		{
			int x=int((Data+j*width+i)->abs());
			x=x>255?255:x;
			x=x<0?0:x;
			m_mBmp.SetPixel(i,j,RGB(BYTE(x),BYTE(x),BYTE(x)));
		}
	}
//	delete temp2;
}

void ImageNDFT(wComplex *Data,memBITMAP &m_mBmp)
{
	int width=m_mBmp.GetWidth();
	int height=m_mBmp.GetHeight();

	wFOURIOR hDft(width);
	wFOURIOR vDft(height);
	hDft.SetInverse();
	vDft.SetInverse();

	int i,j;
	for(i=0;i<height;i++)
	{
		hDft.DFT(Data+i*width);
		for(j=0;j<width;j++)
			*(Data+i*width+j)/=(float)width;
	}
	BYTE *temp1=new BYTE[height*sizeof(wComplex)];
	wComplex *vData=(wComplex*)temp1;
	for(i=0;i<width;i++)
	{
		for(j=0;j<height;j++)
			*(vData+j)=*(Data+j*width+i);
		vDft.DFT(vData);
		for(j=0;j<height;j++)
			*(Data+j*width+i)=*(vData+j);
	}
	delete temp1;
	for(i=0;i<width;i++)
	{
		for(j=0;j<height;j++)
		{
			int x=int((Data+j*width+i)->abs());
			x=x>255?255:x;
			x=x<0?0:x;
			m_mBmp.SetPixel(i,j,RGB(BYTE(x),BYTE(x),BYTE(x)));
		}
	}
//	delete temp2;
}

*/

⌨️ 快捷键说明

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