图像高斯模糊处理(vc++)
#define EXTRA_NAME "@gausssmooth."
#include "loadbmp.h"
#define In(x,y) lpInput[(x)+(y)*nWidth]
#define Out(x,y) lpOutput[(x)+(y)*nWidth]
#define Mediate(x,y) lpMediate[(x)+(y)*nWidth]
#define Point(x,y) lpPoints[(x)+(y)*nWidth]
#define sigma 1
void Gauss()
{
int x,y,xx,xk,yk;
BYTE *lpInput=new BYTE[nWidth*nHeight];
BYTE *lpOutput=new BYTE[nWidth*nHeight];
GetPoints(lpInput);
int radius,window;
double dev_inv=0.5/(sigma*sigma);
radius = (int)ceil(3*sigma);
window = radius*2+1;
memcpy(lpOutput,lpInput,nWidth*nHeight);
double* lpMediate=new double[nWidth*nHeight];
double* mask=new double[window];
double sum=0;
double temp;
double weight;
for(x=0;x<radius;x++)
{
xx=(x-radius)*(x-radius);
mask[x]=exp(-xx*dev_inv);
mask[window-1-x]=mask[x];
sum+=2*mask[x];
}
mask[radius]=1;
sum+=1;
for(x=0;x<window;x++)
{
mask[x]/=sum;
}
for(y=0;y<nHeight;y++)
{