www.pudn.com > DigtalImageProc.rar > ImageCT.cpp
#include "stdafx.h"
#include "memBitmap.h"
#include "dft.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
void ImageDFT(wComplex *Data,memBITMAP &m_mBmp)
{
}
void ImageNDFT(wComplex *Data,memBITMAP &m_mBmp)
{
}
void ImageFFT(wComplex *Data,memBITMAP &m_mBmp)
{
int width=m_mBmp.GetWidth();
int height=m_mBmp.GetHeight();
wFOURIOR hDft(width);
wFOURIOR vDft(height);
int i,j;
for(i=0;iabs());
x=x>255?255:x;
m_mBmp.SetPixel(i,j,RGB(BYTE(x),BYTE(x),BYTE(x)));
}
}
}
void ImageNFFT(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;iabs());
x=x>255?255:x;
m_mBmp.SetPixel(i,j,RGB(BYTE(x),BYTE(x),BYTE(x)));
}
}
}
void Imagemove(memBITMAP &sBmp,memBITMAP &dBmp)
{
int i,j,w = sBmp.GetWidth(),h = sBmp.GetHeight();
dBmp.ChangeSize(w,h);
for(i = 0;i < w; i++)
for(j = 0; j < h; j++)
dBmp.SetPixel(i,j,sBmp.GetPixel(i,j));
return;
}
void ImageHMirror(memBITMAP &sBmp,memBITMAP &dBmp)
{
int i,j,w = sBmp.GetWidth(),h = sBmp.GetHeight();
dBmp.ChangeSize(w,h);
for(i = 0;i < w; i++)
for(j = 0; j < h; j++)
dBmp.SetPixel(w-i-1,j,sBmp.GetPixel(i,j));
return;
}
void ImageVMirror(memBITMAP &sBmp,memBITMAP &dBmp)
{
int i,j,w = sBmp.GetWidth(),h = sBmp.GetHeight();
dBmp.ChangeSize(w,h);
for(i = 0;i < w; i++)
for(j = 0; j < h; j++)
dBmp.SetPixel(i,h-j-1,sBmp.GetPixel(i,j));
return;
}
void ImageZoom(float zoom,memBITMAP &sBmp,memBITMAP &dBmp)
{
int i,j,w = sBmp.GetWidth(),h = sBmp.GetHeight();
int cx = int(w*zoom+1),cy = int(h*zoom+1);
if(cx < 8 || cy < 8)
{
AfxMessageBox("图象小于宽度或高度小于8点,可能已经完全失真");
return;
}
dBmp.ChangeSize(cx,cy);
for(i = 0;i < w; i++)
for(j = 0; j < h; j++)
dBmp.SetPixel(int(i*zoom),int(j*zoom),sBmp.GetPixel(i,j));
return;
}
void ImageRotate(int angle,memBitmap &sBmp,memBitmap &dBmp)
{
double sina = sin(3.14159*angle/180),cosa = cos(3.14159*angle/180);
int x,y,i,j;
int w = sBmp.GetWidth(),h = sBmp.GetHeight();
int size = (int)sqrt(w*w+h*h);
int xoffset = int(h*sina);
dBmp.ChangeSize(size,size);
FillMemory(dBmp.bitData,size*size*3,255);
for(i = 0; i < w; i++)
for(j = 0; j < h; j++)
{
x = int(i*cosa-j*sina+xoffset);
y = int(i*sina+j*cosa);
dBmp.SetPixel(x,y,sBmp.GetPixel(i,j));
}
}
void ImageGray(memBITMAP &sBmp,memBITMAP &dBmp)
{
int i,j,w = sBmp.GetWidth(),h = sBmp.GetHeight();
COLORREF rgb;
dBmp.ChangeSize(w,h);
for(i = 0; i < w; i++)
for(j = 0; j < h; j++)
{
rgb = sBmp.GetPixel(i,j);
int gray = int(0.299*GetRValue(rgb)+0.587*GetGValue(rgb)+0.114*GetBValue(rgb)+0.5);
dBmp.SetPixel(i,j,RGB(gray,gray,gray));
}
}