0
#include<stdio.h>
1.
include<stdlib.h>
2.
include<time.h>
3.
include<math.h>
void scaler(double **wer, double **dizi, double **asd,int a,int a2,int b,double b2)
{
double sum=0.0;
int i,j,k,x,y;
for(i=0;i<b;i++)
{
for(j=0;j<a2;j++)
{
sum+=dizi[i][j]*asd[i][j]; wer[i][j]=sum; sum=0;
}
}
}
void kaydir(double **wer, double **dizi, double **asd,int a,int a2,int b,int b2)
{
double sum=0;
int i,j,k,x,y;
for(j=0;j<a-b+1;j++)
{
for(k=0;k<a2-b2+1;k++)
{
for(x=0;x<b;x++)
{
for(y=0;y<b2;y++)
sum+=dizi[x+j][y+k]*asd[x][y];
}
wer[j][k]=sum;
sum=0;
}
}
}
int main()
{FILE *str;
char ch;
int bu=0;int lu;int t=0;
char ara1[3];
char ara2[3];
int i,k,j,x,y,a,b,a2,b2,mux,muy,thr;
double sum=0,**zaa,**asda,**C,**G,**GT,**ix,**iy,**ixx,**iyy,**ixy,**sxy,**sxx,**syy,**butukaylin,m=0.04,sig=0.02;
srand(time(NULL));
scanf("%d%d",&b,&b2);
mux=(b-1)/2;
muy=(b2-1)/2;
str=fopen("C:\lena.pgm","rb");
while(bu<3){
ch=fgetc(str);
/*printf("%cn",ch);*/bu++;}
fscanf(str,"%s",ara2);
/*printf("%s",y);*/
a=atoi(ara2);
a2=a;
zaa=(double**)malloc(a*sizeof(double));
for(i=0;i<a;i++)
zaa[i]=(double*)malloc(a2*sizeof(double));
while(t<9){fgetc(str);t++;}
for(bu=0;bu<a;bu++){
for(lu=0;lu<a2;lu++){
fscanf(str,"%s",ara1);
zaa[bu][lu]=atoi(ara1);
}}
fclose(str);
asda=(double**)malloc(b*sizeof(double));
for(i=0;i<b2;i++)
asda[i]=(double*)malloc(b2*sizeof(double));
//for(k=0;k<a;k++)
//{
//for(j=0;j<a;j++)
//{
//zaa[k][j]=rand()%10;
//}
//}
for(k=0;k<b;k++)
{
for(j=0;j<b;j++)
{
asda[k][j]=exp(-((k-mux)*(k-mux)+(j-muy)*(j-muy))/2*sig*sig);
}
}
C=(double**)malloc((a-b+1)*sizeof(double));
for(i=0;i<(a-b+1);i++)
C[i]=(double*)malloc((a2-b2+1)*sizeof(double));
kaydir(C,zaa, asda,a,a2,b,b2);
G=(double**)malloc(sizeof(double));
for(i=0;i<1;i++)
G[i]=(double*)malloc(3*sizeof(double));
G[0][0]=1;G[0][1]=-2;G[0][2]=1;
ix=(double**)malloc((a-b+1)*sizeof(double));
for(i=0;i<a-b+1;i++)
ix[i]=(double*)malloc((a2-b2-1)*sizeof(double));
kaydir(ix,C,G,a-b+1,a2-b2+1,1,3);
GT=(double**)malloc(3*sizeof(double));
for(i=0;i<3;i++)
GT[i]=(double*)malloc(sizeof(double));
GT[0][0]=1;GT[1][0]=-2;GT[2][0]=1;
iy=(double**)malloc((a-b-1)*sizeof(double));
for(i=0;i<a-b-1;i++)
iy[i]=(double*)malloc((a2-b2+1)*sizeof(double));
kaydir(iy,C,GT,a-b+1,a2-b2+1,3,1);
ixy=(double**)malloc((a-b-1)*sizeof(double));
for(i=0;i<a-b-1;i++)
ixy[i]=(double*)malloc((a2-b2-1)*sizeof(double));
scaler(ixy,ix,iy,a-b+1,a2-b2-1,a2-b2-1,a-b+1);
ixx=(double**)malloc((a-b+1)*sizeof(double));
for(i=0;i<(a-b+1);i++)
ixx[i]=(double*)malloc((a2-b2-1)*sizeof(double));
scaler(ixx,ix,ix,a-b+1,a2-b2-1,a-b+1,a2-b2-1);
iyy=(double**)malloc((a-b-1)*sizeof(double));
for(i=0;i<a-b-1;i++)
iyy[i]=(double*)malloc((a2-b2+1)*sizeof(double));
scaler(iyy,iy,iy,a2-b2-1,a-b+1,a2-b2-1,a-b+1);
sxx=(double**)malloc((a-(2*b)+2)*sizeof(double));
for(i=0;i<(a-(2*b)+2);i++)
sxx[i]=(double*)malloc((a2-(2*b2))*sizeof(double));
kaydir(sxx,ixx, asda,a-b+1,a2-b2-1,b,b2);
sxy=(double**)malloc((a-(2*b))*sizeof(double));
for(i=0;i<a-(2*b);i++)
sxy[i]=(double*)malloc((a2-(2*b2))*sizeof(double));
kaydir(sxy,ixy, asda,a-b-1,a2-b2-1,b,b2);
syy=(double**)malloc((a-(2*b))*sizeof(double));
for(i=0;i<a-(2*b);i++)
syy[i]=(double*)malloc((a2-(2*b2)+2)*sizeof(double));
kaydir(syy,iyy, asda,a-b-1,a2-b2+1,b,b2);
printf("thr degeri gir.n");
scanf("%d",&thr);
butukaylin=(double**)malloc((a-(2*b))*sizeof(double));
for(i=0;i<a-(2*b);i++)
butukaylin[i]=(double*)malloc((a2-(2*b2))*sizeof(double));
for(i=0;i<a-(2*b);i++){
for(j=0;j<a2-(2*b2);j++){
if( thr<sxx[i][j]*syy[i][j]-sxy[i][j]*sxy[i][j]-m*(sxx[i][j]+syy[i][j])*(sxx[i][j]+syy[i][j]) )
butukaylin[i][j]=1.0;
else butukaylin[i][j]=0;
}
}
for(i=0;i<a-(2*b);i++){
for(j=0;j<a2-(2*b2);j++){
if(butukaylin[i][j]>0)
{zaa[i+b][j+b]=0;
zaa[i+b-1][j+b]=0;
zaa[i+b][j+b-1]=0;
zaa[i+b+1][j+b]=0;
zaa[i+b][j+b+1]=0;
zaa[i+b+1][j+b+1]=0;
zaa[i+b-1][j+b-1]=0;
zaa[i+b-1][j+b+1]=0;
zaa[i+b+1][j+b-1]=0;}}}
str=fopen("asdasd.pgm","w");
for(i=0;i<256;i++)
for(j=0;j<256;j++)
fprintf(str,"%.0lf ",zaa[i][j]);
fprintf(str,"n");
/*for(i=0;i<50;i++)
{
for(j=0;j<50;j++)
printf("%.0lf ",butukaylin[i][j]);
printf("n");
}*/
system("pause");
return 0;
}
edit:proje ödevim
Tümünü Göster