#include<stdio.h>
#include<stdlib.h>
#define H 200
#define V 301
main (){
int i, j, q, p,**mem, **mean,sum;
char s[256];
FILE *fp;
// memの確保
mem=(int **)malloc(sizeof(int *)*H);
if(mem==NULL){
printf("please put any key to stop program \n");
exit(1);
}
for(i=0;i<V;i++){
mem[i]=(int *)malloc(sizeof(int)*V);
if(mem[i]==NULL){
printf("please put any key to stop program \n");
exit(1);
}
}
//平滑化後のmeanを確保
mean=(int **)malloc(sizeof(int *)*H);
if(mean==NULL){
printf("please put any key to stop program \n");
exit(1);
}
for(i=0;i<V;i++){
mean[i]=(int *)malloc(sizeof(int)*V);
if(mean[i]==NULL){
printf("please put any key to stop program \n");
exit(1);
}
}
//meanの初期化
for(j=0;j<V;j++){
for(i=0;i<H;i++){
mean[i][j]=0;
}
}
//元画像の読み込み
fp=fopen("testimg.pgm","r");
if(fp==NULL){
printf("Can not open file \n");
exit(1);
}
//ヘッダ情報を無視
for(i=0; i<4; i++){
fgets(s, 256, fp);
}
//ピクセル輝度値をmemに代入
for(j=0;j<V;j++){
for(i=0;i<H;i++){
fscanf(fp,"%d", &mem[i][j]);
}
}
fclose(fp);
//5×5のwindow
for (j=2;j<V-2;j++){
for (i=2;i<H-2;i++){
sum=0;
for (q=0;q<5;q++){
for (p=0;p<5;p++){
sum= sum+mem[i+p-2][j+q-2];
}
}
mean[i][j] =sum/25;
}
}
fp=fopen("mean1.txt","w");
if(fp==NULL){
printf("Can not open file \n");
exit(1);
}
for(j=0;j<V;j++){
for(i=0;i<H;i++){
fprintf(fp,"%d ",mean[i][j]);
}
fprintf(fp,"\n");
}
fclose(fp);
}