/*----------------------------MegaWave2 module----------------------------*/
/* mwcommand
name = {test_error};
version = {"1.0"};
author = {"Lionel Moisan"};
function = {"Compute test error"};
usage = {
 e1->e1               "samples from class 1 (2-Flist)",
 e2->e2               "samples from class 2 (2-Flist)",
 map->map             "classification map (Cimage)"
        };
*/

/* Note: the result is written on standart output */
 
#include <stdio.h>
#include "mw.h"

void test_error(e1,e2,map)
     Flist e1,e2;
     Cimage map;
{
  double p;
  int i,x,y,nx,ny;

  p = 0.;
  nx = map->ncol; ny = map->nrow;
  for (i=0;i<e1->size;i++) {
    x = (int)((float)nx*e1->values[i*e1->dim  ]);
    y = (int)((float)ny*e1->values[i*e1->dim+1]);
    if (x<0 || x>=nx || y<0 || y>=ny || map->gray[y*nx+x]>128) p += 1.;
  }
  for (i=0;i<e2->size;i++) {
    x = (int)((float)nx*e2->values[i*e2->dim  ]);
    y = (int)((float)ny*e2->values[i*e2->dim+1]);
    if (x<0 || x>=nx || y<0 || y>=ny || map->gray[y*nx+x]<128) p += 1.;
  }
  p /= (double)(e1->size+e2->size);
  printf("%g\n",p);
}
