📄 imagect.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 + -