📄 1.h
字号:
#include "iostream.h"
#include "math.h"
#define M 6
#define N 256
double s[N];
double cs[N];
int gray[256];
double a[M][N];
double b[M-1][N/2];
BYTE spic[1024*1024];
double hp(double x)
{
if(x>=0&&x<=1) return 1.0;
else return 0.0;
}
double hq(double x)
{
if(x>=0&&x<=0.5) return 1.0;
else if(x>0.5&&x<=1) return -1.0;
else return 0.0;
}
void hw()
{
for(int k=0;k<N;k++)
{
a[0][k]=s[k];
}
for(int i=1;i<M;i++)
{
for(k=0;k<N*pow(2,-i);k++)
{
a[i][k]=0.5*(a[i-1][2*k]+a[i-1][2*k+1]);
b[i][k]=0.5*(a[i-1][2*k]-a[i-1][2*k+1]);
}
}
}
double h[4]={0.5,(1+sqrt(2))/2,0.5,(1-sqrt(2))/2};
//h[4]={(1+sqrt(3))/4,(3+sqrt(3))/4,sqrt(3-sqrt(3))/4,(1-sqrt(3))/4};
void wtD4()
{
for(int k=0;k<N;k++)
{
a[0][k]=s[k];
}
for(int i=1;i<M;i++)
{
for(k=0;k<N*pow(2,-i);k++)
{
a[i][k]=h[0]*a[i-1][2*k]+h[1]*a[i-1][2*k+1]+h[2]*a[i-1][2*k+2]+h[3]*a[i-1][2*k+3];
a[i][k]*=0.5;
//0.5*(a[i-1][2*k]+a[i-1][2*k+1]);
//b[i][k]=0.5*(a[i-1][2*k]-a[i-1][2*k+1]);
}
}
}
void recons(int m)
{
for(int i=0;i<N;i++)
{
cs[i]=0;
for(int k=0;k<N*pow(2,-m);k++)
{
cs[i]+=a[m][k]*hp((i+0.3)*pow(2,-m)-k);
}
}
}
double ah[6][1024][1024];
BYTE bh[3*1024*1024];
double dh1[6][1024][1024];
double dh2[6][1024][1024];
double dh3[6][1024][1024];
double as[1024][1024];
int width=1024;
int height=1024;
void harrp()
{
for(int j=1;j<6;j++)
{
for(int m=0;m<height*pow(2,-j);m++)
{
for(int n=0;n<width*pow(2,-j);n++)
{
ah[j][m][n]=ah[j-1][2*m][2*n]+ah[j-1][2*m+1][2*n]+ah[j-1][2*m][2*n+1]+ah[j-1][2*m+1][2*n+1];
dh1[j][m][n]=ah[j-1][2*m][2*n]+ah[j-1][2*m+1][2*n]-ah[j-1][2*m][2*n+1]-ah[j-1][2*m+1][2*n+1];
dh2[j][m][n]=ah[j-1][2*m][2*n]-ah[j-1][2*m+1][2*n]+ah[j-1][2*m][2*n+1]-ah[j-1][2*m+1][2*n+1];
dh3[j][m][n]=ah[j-1][2*m][2*n]-ah[j-1][2*m+1][2*n]-ah[j-1][2*m][2*n+1]+ah[j-1][2*m+1][2*n+1];
ah[j][m][n]*=0.25;
dh1[j][m][n]*=0.25;
dh2[j][m][n]*=0.25;
dh3[j][m][n]*=0.25;
}
}
}
}
void process()
{
for(int m=0;m<height/2;m++)
{
for(int n=0;n<width/2;n++)
{
as[2*m][2*n]=as[2*m+1][2*n]=as[2*m][2*n+1]=as[2*m+1][2*n+1]=0.25*(ah[0][2*m][2*n]+ah[0][2*m+1][2*n]+ah[0][2*m][2*n+1]+ah[0][2*m+1][2*n+1]);
}
}
}
void press()
{
for(int m=0;m<1024/2;m++)
for(int n=0;n<1024/2;n++)
{
if(abs(dh1[1][m][n])<64)dh1[1][m][n]=0;
if(abs(dh2[1][m][n])<36)dh2[1][m][n]=0;
if(abs(dh3[1][m][n])<64)dh3[1][m][n]=0;
}
}
int HC=0;
void reconstruct()
{
for(int m=0;m<height/2;m++)
{
for(int n=0;n<width/2;n++)
{
float k=0;
as[2*m][2*n]=as[2*m+1][2*n]=as[2*m][2*n+1]=as[2*m+1][2*n+1]=ah[1][m][n];
//as[2*m][2*n]+= (dh1[1][m][n])+dh2[1][m][n]+(dh3[1][m][n]);
//as[2*m+1][2*n]+= (dh1[1][m][n])-dh2[1][m][n]-(dh3[1][m][n]);
//as[2*m][2*n+1]+=(-dh1[1][m][n])+dh2[1][m][n]-(dh3[1][m][n]);
//as[2*m+1][2*n+1]+=(-dh1[1][m][n])-dh2[1][m][n]+(dh3[1][m][n]);
}
}
for(m=0;m<height-1;m++)
{
for(int n=0;n<width-1;n++)
{
if(abs(ah[0][m][n]-ah[0][m+1][n])>10||abs(ah[0][m][n]-ah[0][m][n+1]>10))
{as[m][n]=ah[0][m][n];HC++;}
//else as[m][n]=255;
}
}
}
void recon(int j)
{
int XM=pow(2,j);
for(int m=0;m<height/XM;m++)
{
for(int n=0;n<width/XM;n++)
{
for(int l=0;l<XM;l++)
for(int k=0;k<XM;k++)
{
as[XM*m+l][XM*n+k]=ah[j][m][n];
}
}
}
for(m=0;m<height-1;m++)
{
for(int n=0;n<width-1;n++)
{
if(abs(ah[0][m][n]-ah[0][m+1][n])>10||abs(ah[0][m][n]-ah[0][m][n+1]>10))
{as[m][n]=ah[0][m][n];HC++;}
//else as[m][n]=255;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -