这段代码编译的时候没有报错,运行的时候就自动关闭了,好心人帮我看下,很急!!!
LPBYTE GeneralMallat(LPBYTE Image,long ww,long hh,int level)
{
int loop,i,j;
BYTE *HHHL; 
BYTE *LLLH;  
BYTE *tmpImage;
BYTE *finalImage=new BYTE[ww*hh];
BYTE *ImageToRe=new BYTE[ww*hh];//存储图像信息的中间变量 double h[20]={0.7071,0.7071,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
double g[20]={-0.7071,0.7071,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; for(loop=0;loop<level;loop++)
{
if(loop==0)
{
tmpImage=new BYTE[ww*hh]; for(i=0;i<hh;i++)
for(j=0;j<ww;j++)
tmpImage[i*ww+j]=Image[i*ww+j];
}

LLLH=new BYTE[ww*hh/2];
HHHL=new BYTE[ww*hh/2];  LLLH=RealMallat(h,3,5,g,3,3,tmpImage,ww,hh,TRUE);
HHHL=RealMallat(g,3,5,h,3,3,tmpImage,ww,hh,FALSE);

for(i=0;i<hh;i++)
for(j=0;j<ww/2;j++)
{
ImageToRe[i*ww/2+j]=LLLH[i*(ww/2)+j];
ImageToRe[i*ww/2+j+ww/2]=HHHL[i*(ww/2)+j];
}
delete[]tmpImage;
} for(i=0;i<ww;i++)
for(j=0;j<hh;j++)
{
finalImage[i*ww+j]=ImageToRe[i*ww+j];
}
return finalImage;
}LPBYTE RealMallat(double h[], int h0, int ln_h, double g[], int g0, int ln_g, LPBYTE Image, long ww, long hh, bool Low)
{
BYTE *tmp=new BYTE[ww*hh];
BYTE *resultImage=new BYTE[ww*hh/2];//转换后的图像
int i,j,k;
double var;
for(i=0;i<hh;i++)
{
for(j=0;j<h0-1;j++)//图像的左侧边界需要对称延拓
{
var=0;
for(k=0;k<ln_h;k++)
{
if((j+k-(h0-1)<0))
var=var+h[k]*Image[i*ww+(abs(j+k-(h0-1))-(ln_h-1)%2)];
else
var=var+h[k]*Image[i*ww+(j+k-(h0-1))];
}
tmp[i*ww+j]=var;
}
for(j=h0-1;j<ww-(ln_h-h0);j++)
{
var=0;
for(k=0;k<ln_h;k++)
var=var+h[k]*Image[i*ww+j+k-(h0-1)];
tmp[i*ww+j]=var;
var=tmp[i*ww+j];
}
for(j=ww-(ln_h-h0);j<ww;j++)//,图像的右侧边界需要对称延拓
{
var=0;
for(k=0;k<ln_h;k++)
{if((j+k-h0+1)<ww)
var=var+h[k]*Image[(j+k-h0+1)*ww+j];//(2*hh-(i+k-(h0-1))-2+(ln_h-1)%2)
else
var=var+h[k]*Image[(2*ww-(j+k-h0+1)-2+(ln_h-1)%2)*ww+j];}
tmp[i*ww+j]=var;
}
}
for(i=0;i<hh;i++)//抽样 隔二取一
{
for(j=0;j<ww/2;j++)
tmp[i*ww+j]=tmp[i*ww+2*j];
}
//LH HL
for(j=0;j<ww/2;j++)
{
for(i=0;i<g0-1;i++)
{
var=0;
for(k=0;k<ln_g;k++)
{
if((i+k-(g0-1)<0))
var=var+g[k]*tmp[(abs(i+k-(g0-1))-(ln_g-1)%2)*ww+j];
else
var=var+g[k]*tmp[(i+k-(g0-1))*ww+j];
}
tmp[i*ww+j+ww/2]=var;
}
for(i=g0-1;i<hh-(ln_g-g0);i++)
{
var=0;
for(k=0;k<ln_g;k++)
var=var+g[k]*tmp[(i+k-(g0-1))*ww+j];
tmp[i*ww+j+ww/2]=var;
}
for(i=hh-(ln_g-g0);i<hh;i++)
{
var=0;
for(k=0;k<ln_g;k++)
{
if((i+k-g0+1)<hh)
var=var+g[k]*tmp[(i+k-g0+1)*ww+j];
else
var=var+g[k]*tmp[(2*hh-(i+k-g0+1)-2+(ln_g-1)%2)*ww+j];}
tmp[i*ww+j+ww/2]=var;
}
}
for(i=0;i<hh/2;i++)
for(j=0;j<ww/2;j++)//左上角
{
if(Low)
resultImage[i*(ww/2)+j]=tmp[2*i*ww+j+ww/2];//隔四取一
else
resultImage[(i+hh/2)*(ww/2)+j]=tmp[2*i*ww+j+ww/2];
}
 //计算LL HH
for(j=0;j<ww/2;j++)
{
for(i=0;i<h0-1;i++)
{
var=0;
for(k=0;k<ln_h;k++)
{
if((i+k-(h0-1)<0))
var=var+h[k]*tmp[(abs(i+k-(h0-1))-(ln_h-1)%2)*ww+j];
else
var=var+h[k]*tmp[(i+k-(h0-1))*ww+j];
}
tmp[i*ww+j+ww/2]=var;
}
for(i=h0-1;i<hh-(ln_h-h0);i++)
{
var=0;
for(k=0;k<ln_h;k++)
var=var+h[k]*tmp[(i+k-(h0-1))*ww+j];
tmp[i*ww+j+ww/2]=var;
}
for(i=hh-(ln_h-h0);i<hh;i++)
{
var=0;
for(k=0;k<ln_h;k++)
{
if((i+k-h0+1)<hh)
var=var+h[k]*tmp[(i+k-h0+1)*ww+j];//(2*hh-(i+k-(h0-1))-2+(ln_h-1)%2)
else
var=var+h[k]*tmp[(2*hh-(i+k-h0+1)-2+(ln_h-1)%2)*ww+j];
}
tmp[i*ww+j+ww/2]=var;
}
}//return tmp; for(i=hh/2;i<hh;i++)//左下角
for(j=0;j<ww/2;j++)
{
if(Low)
resultImage[i*(ww/2)+j]=tmp[2*(i-hh/2)*ww+j+ww/2];
else
resultImage[(i-hh/2)*(ww/2)+j]=tmp[2*(i-hh/2)*ww+j+ww/2];
}  
return resultImage; 
}