#include <stdlib.h>
#include <stdio.h>
#include "basicImage.c"
void statistics( image img, double *avg, double *sd )
{
int r, c, value ;
double sum = 0.0;
double sumOfSquares = 0.0;
double avgSumOfSquares = 0.0;
for ( r=0; r < img.nrows; r++ )
for ( c=0; c < img.ncols; c++ )
{
value = getPixel( img, r, c ) ;
sum += value;
sumOfSquares += value*value;
}
*avg = sum/(img.nrows*img.ncols);
avgSumOfSquares = sumOfSquares/(img.nrows*img.ncols);
*sd = sqrt( avgSumOfSquares - *avg * *avg );
}
int main ( int argc, char* argv[] )
{
image img;
double average, stdDev ;
if ( argc != 2 )
{
printf("imgStats imageFile\n");
exit( EXIT_FAILURE );
}
/* read in the image */
readPGMimage( &img, argv[1]);
/* compute statistics */
statistics( img, &average, &stdDev ) ;
/* write out results */
printf("average: %lf\tstandard deviation: %lf\n",
average, stdDev) ;
/* free memory */
freeImage( &img );
}
Comments: