#include <stdlib.h> #include <stdio.h> #include <math.h> #include "basicImage.c" int main ( int argc, char* argv[] ) { image imgA, imgB; int r, c, a, b; double sumSQdiff=0.0; if ( argc != 3 ) { printf( "RMSdifference imageA imageB \n" ); system( "pause" ); exit( EXIT_FAILURE ); } /* read in the images */ readPGMimage( &imgA, argv[1] ); readPGMimage( &imgB, argv[2] ); /* scan through the image */ for ( r=0; r<imgA.nrows; r++ ) for ( c=0; c<imgA.ncols; c++ ) { a = getPixel( imgA, r, c ) ; b = getPixel( imgB, r, c ) ; sumSQdiff += (a-b)*(a-b) ; } /* square root of average squared difference */ sumSQdiff = sumSQdiff/(imgA.nrows*imgA.ncols); printf("RMS difference: %lf\n", sqrt( sumSQdiff ) ); /* free memory */ freeImage( &imgA ); freeImage( &imgB ); }
Comments: