IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 14820


Ignore:
Timestamp:
Sep 11, 2007, 2:15:28 PM (19 years ago)
Author:
eugene
Message:

allow clipping of bad pixels

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/tools/src/medianfilter.c

    r12902 r14820  
    99
    1010  int i, j, k, n, Npixels, Npixin, Npixrd, Npixlast, N;
    11   int Npass, NFILES, Nfiles;
     11  int Npass, NFILES, Nfiles, Nvalid;
    1212
    1313  char **filename;
     
    1515  Matrix out,  *tmpmatr;
    1616  float *list, *v, *O;
    17   float fmin, fmax, Nval, sum;
     17  float fmin, fmax, Nval, sum, MinValid;
    1818
    1919  if ((N = get_argument (argc, argv, "-unsign"))) {
    2020    remove_argument (N, &argc, argv);
    2121    gfits_set_unsign_mode (TRUE);
     22  }
     23
     24  MinValid = 1.0;
     25  if ((N = get_argument (argc, argv, "-bad"))) {
     26    remove_argument (N, &argc, argv);
     27    MinValid = atof(argv[N]);
     28    remove_argument (N, &argc, argv);
    2229  }
    2330
     
    6471  ALLOCATE (tmpmatr, Matrix, Nfiles);
    6572  ALLOCATE (list, float, Nfiles);
     73
     74  /*
    6675  Nval = 0;
    6776  for (k = fmin*Nfiles; k < fmax*Nfiles; k++) {
    6877    Nval += 1.0;
    6978  }
     79  */
    7080
    7181  O = (float *) out.buffer;
     
    8797    fprintf (stderr, "starting sorts\n");
    8898    for (j = 0; j < Npixrd; j++, O++) {
     99      Nvalid = 0;
    89100      for (k = 0; k < Nfiles; k++) {
    90101        v = (float *)tmpmatr[k].buffer;
     102        if (v[j] < MinValid) continue;
    91103        list[k] = v[j];
     104        Nvalid ++;
    92105      }
    93       fsort (list, Nfiles);
     106      if (Nvalid == 0) {
     107        *O = 0.0;
     108        continue;
     109      }
     110      fsort (list, Nvalid);
    94111      sum = 0;
    95       for (k = fmin*Nfiles; k < fmax*Nfiles; k++) {
     112      Nval = 0;
     113      for (k = fmin*Nvalid; k < fmax*Nvalid; k++) {
    96114        sum += list[k];
     115        Nval ++;
    97116      }
    98117      *O = (sum / Nval);
Note: See TracChangeset for help on using the changeset viewer.