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;

}