histogram.c
/***************************************************************
histogram
reads an .int file,and calculate its histogram
(the b_w.int file is same file cerresponding to b_w.pnm)
created Feb 2009
by a.k.nandan
**************************************************************/
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define col 300
#define row 300
int **image,**hist;
FILE *fpt1,*fpt3;
int main()
{
int i,j,k,a,histogram[256];
double prob[256];
fpt1=fopen("b_w.int","r"); //input file name
fpt3=fopen("histogram.int","w"); //histogram file
image=(int**)calloc(col,sizeof(int));
for(i=0;i<col;i++)
image[i]=(int *)calloc(row,sizeof(int));
for(i=0;i<256;i++)
histogram[i]=0; //initialing a null array
for(i=0;i<col;i++)
for(j=0;j<row;j++)
{
fscanf(fpt1,"%d\n",&k);
image[i][j]=k;
histogram[k]++;
}
for(i=0;i<256;i++)
{
prob[i]=(double)(histogram[i])/(double)(row*col); // probability distribution calculation
}
for(i=0;i<256;i++)
{
fprintf(fpt3,"%d %lf\n",i,prob[i]);
}
fclose(fpt1);
fclose(fpt3);
return 0;
}