/*Realiza a media usando uma matriz NxN  */
 
#define MAX
#include "lib.h"
#include <math.h>


void  diff(IMAGE x,IMAGE y)
{
	int i,j,d,k,m ;
	long int erroquadrado;
	float sinalruido;
	float sinal,ruido;
	int b;


        erroquadrado=0;
	sinal =0;
	ruido=0;
	sinalruido = 0.0f;
	for (i= 0; i< x->info->nr-1; i++)
	  for (j= 0; j < x->info->nc-1; j++){
	    b=(x->data[i][j] - y->data[i][j]);
	    erroquadrado+= b*b;
	    sinal += x->data[i][j]*x->data[i][j];
	  } 
	ruido = erroquadrado;
        erroquadrado=sqrt(erroquadrado/(x->info->nc*x->info->nr));
        printf("Erro quadrado medio: %d \n",erroquadrado);
        printf("Sinal/Ruido: %f \n",sinal/ruido);
	return;
}   
 

main (int argc, char *argv[])
{
	IMAGE x=0;
	IMAGE y=0;
	IMAGE medImage=0;
	int n;

	if (argc < 3)
	{
	  printf ("Modo de usar: \n media  <image> <n> \n");
	  exit (1);
	}


	x = Input_PBM (argv[1]);
	y = Input_PBM (argv[2]);
	if (x == 0)
	{
	  printf ("Arquivo Invalido: ('%s')\n", argv[1]);
	  exit (2);
	}
	if (y == 0)
	{
	  printf ("Arquivo Invalido: ('%s')\n", argv[2]);
	  exit (2);
	}

	printf("Calculando a diferenca \n");

	diff(x,y);
/*
	Output_PBM (medImage, "diff.pgm");
	printf ("Imagem de saida gravada no arquivo: 'diff.pgm'\n");
*/
}