Exemplo n.º 1
0
int main(int argc, char* argv[]){
  static const char *optString = "M:o:f:p:q:r:";
  int c, method, factor;
  char* picture;
  char* output;
  double p,q;

  while((c = getopt(argc, argv, optString)) != -1){
    switch(c){
      case 'M': { method = atoi(optarg); break; }
      case 'f': { picture = optarg; break; }
      case 'o': { output = optarg; break; }
      case 'p': { p = atof(optarg); break; }
      case 'q': { q = atof(optarg); break; }
      case 'r': { factor = atoi(optarg); break; }

      default:  { printf("Cannot parse.\n"); }
    }
  }
  printf("p = %lf \n" , p );

  PGMInfo pgm_info = parse_pgm(picture,1);
  double results[pgm_info.height * pgm_info.width];


  switch(method) {
    case 0:  { printf("Salt: \n");      createWithSaltPeperNoise(results, p, q, output, &pgm_info);   break; }
    case 1:  { printf("gaussian:\n");   createGaussianNoise(results, factor, output, &pgm_info); break; }
    default: { printf("Metodo no valido.\n"); }
  }


  free_pixels_memory(&pgm_info);
  return 0;
}
Exemplo n.º 2
0
int main(int argc, char* argv[]){
  static const char *optString = "o:l:f:r:";
  int c;
  char* picture;
  char* output;
  double lambda;
  int factor;

  while((c = getopt(argc, argv, optString)) != -1){
    switch(c){
      case 'l': { lambda  = atof(optarg); break; }
      case 'f': { picture = optarg; break; }
      case 'o': { output = optarg; break; }
      case 'r': { factor = atoi(optarg); break; }
      default:  { printf("Cannot parse.\n"); }
    }
  }

  PGMInfo pgm_info = parse_pgm(picture,factor);
  Matrix matrix = build_matrix(lambda, &pgm_info);
  double results[pgm_info.fHeight * pgm_info.fWidth];

  gauss(matrix, &pgm_info);
  solve_equations(matrix, &pgm_info, results);
  create_new_picture(results, output, &pgm_info);

  free_pixels_memory(&pgm_info);

  return 0;
}
Exemplo n.º 3
0
Arquivo: pgm_io.c Projeto: 1ee7/cuav
int size_pgm(const char* path, size_t* w, size_t* h, size_t* bpp)
{
  FILE* f = fopen(path, "rb");
  if (f == NULL)
  {
    perror("open");
    return -1;
  }
  int ret = parse_pgm(f, w, h, bpp);
  fclose(f);
  return ret;
}
Exemplo n.º 4
0
Arquivo: pgm_io.c Projeto: 1ee7/cuav
int load_pgm_uint16(const char* path, uint16_t* image, size_t w, size_t stride, size_t h, size_t bpp)
{
  FILE* f = fopen(path, "rb");
  if (f == NULL)
  {
    perror("open");
    return -1;
  }
  size_t _w;
  size_t _h;
  size_t _bpp;
  int ret = parse_pgm(f, &_w, &_h, &_bpp);
  if (ret)
  {
    return ret;
  }
  if (bpp != _bpp || w != _w || h != _h)
  {
    fprintf(stderr, "mismatch expected %ldx%ldx%ld but file is %ldx%ldx%ld\n",
            w,h,bpp, _w,_h,_bpp);
    fclose(f);
    return -1;
  }
  if (stride < w)
  {
    fprintf(stderr, "Invalid image stride\n");
  }
  size_t i;
  for (i = 0; i < h; ++i)
  {
    size_t n = w*bpp/8;
    if (fread(image, n, 1, f) != 1)
    {
      fprintf(stderr, "failed to read from file\n");
      fclose(f);
      return -1;
    }
#if __BYTE_ORDER == __LITTLE_ENDIAN
    swab(image, image, n);
#endif
    image += stride;
  }
  fclose(f);

  return 0;
}