#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: