IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 16, 2020, 1:54:47 PM (6 years ago)
Author:
tdeboer
Message:

revert to working Ohana build

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/cmd.data/medimage_commands.c

    r41164 r41340  
    1515int medimage_add (int argc, char **argv) {
    1616
    17   int N;
    1817  Buffer *image;
    19   Buffer *var = NULL;
    20 
    21   if ((N = get_argument (argc, argv, "-variance"))) {
    22     remove_argument (N, &argc, argv);
    23     if ((var = SelectBuffer (argv[N], OLDBUFFER, TRUE)) == NULL) return (FALSE);
    24     remove_argument (N, &argc, argv);
    25   }
    26 
    27   if (argc != 3) {
    28     gprint (GP_ERR, "USAGE: medimage add (name) (image) [-variance variance]\n");
     18
     19  if (argc != 3) {
     20    gprint (GP_ERR, "USAGE: medimage add (name) (image)\n");
    2921    gprint (GP_ERR, "       add the given image to the set of images to be medianed\n");
    30     gprint (GP_ERR, "       optionally supply variance image (for weighted calculations)\n");
    3122    return FALSE;
    3223  }
    3324
    3425  if ((image = SelectBuffer (argv[2], OLDBUFFER, TRUE)) == NULL) return (FALSE);
    35 
    36   if (var) {
    37     if ((var->matrix.Naxis[0] != image->matrix.Naxis[0]) ||
    38         (var->matrix.Naxis[1] != image->matrix.Naxis[1])) {
    39       gprint (GP_ERR, "variance buffer does not match image buffer dimensions\n");
    40       return FALSE;
    41     }
    42   }
    4326
    4427  MedImageType *median = FindMedImage (argv[1]);
     
    6346  // new image should match existing medimage dimensions
    6447
    65   // AddMedImage (median, image, var);
    6648  int Ninput = median->Ninput;
    6749  median->Ninput ++;
    68   REALLOCATE (median->flx, float *, median->Ninput);
    69   REALLOCATE (median->var, float *, median->Ninput);
    70 
    71   ALLOCATE (median->flx[Ninput], float, median->Nx*median->Ny);
    72   memcpy (median->flx[Ninput], image->matrix.buffer, sizeof(float)*median->Nx*median->Ny);
    73 
    74   median->var[Ninput] = NULL;
    75   if (var) {
    76     ALLOCATE (median->var[Ninput], float, median->Nx*median->Ny);
    77     memcpy (median->var[Ninput], var->matrix.buffer, sizeof(float)*median->Nx*median->Ny);
     50  REALLOCATE (median->buffers, float *, median->Ninput);
     51
     52  ALLOCATE (median->buffers[Ninput], float, median->Nx*median->Ny);
     53  memcpy (median->buffers[Ninput], image->matrix.buffer, sizeof(float)*median->Nx*median->Ny);
     54
     55  return TRUE;
     56}
     57
     58int medimage_calc (int argc, char **argv) {
     59
     60  int ix, iy, n, N;
     61  Buffer *output;
     62
     63  int CALC_MEAN = FALSE;
     64  if ((N = get_argument (argc, argv, "-mean"))) {
     65    CALC_MEAN = TRUE;
     66    remove_argument (N, &argc, argv);
     67  }
     68
     69  if (argc != 3) {
     70    gprint (GP_ERR, "USAGE: medimage calc (name) (output) [-mean]\n");
     71    gprint (GP_ERR, "       calculate the median image for the median image set\n");
     72    return FALSE;
     73  }
     74
     75  MedImageType *median = FindMedImage (argv[1]);
     76  if (!median) {
     77    gprint (GP_ERR, "median image %s not found\n", argv[1]);
     78    return FALSE;
     79  }
     80
     81  if ((output = SelectBuffer (argv[2], ANYBUFFER, TRUE)) == NULL) return (FALSE);
     82
     83  int Ninput = median->Ninput;
     84  int Nx = median->Nx;
     85  int Ny = median->Ny;
     86
     87  float *value = NULL;
     88  ALLOCATE (value, float, Ninput);
     89
     90  gfits_free_matrix (&output->matrix);
     91  gfits_free_header (&output->header);
     92  if (!CreateBuffer (output, Nx, Ny, -32, 0.0, 1.0)) return FALSE;
     93
     94  float *outvalue = (float *) output->matrix.buffer;
     95
     96  for (iy = 0; iy < Ny; iy++) {
     97    for (ix = 0; ix < Nx; ix++) {
     98
     99      int N = 0;
     100      int Npix = ix + Nx*iy;
     101      for (n = 0; n < Ninput; n++) {
     102        float v = median->buffers[n][Npix];
     103        if (!isfinite(v)) continue;
     104        value[N] = v;
     105        N++;
     106      }
     107      if (N == 0) continue;
     108
     109      if (CALC_MEAN) {
     110        float sum = 0.0;
     111        for (n = 0; n < N; n++) {
     112          sum += value[n];
     113        }
     114        outvalue[Npix] = sum / (float) N;
     115      } else {
     116        fsort (value, N);
     117        outvalue[Npix] = value[(int)(0.5*N)];
     118      }
     119    }
    78120  }
    79121
     
    82124
    83125/*
    84    int medimage_save (int argc, char **argv) {
    85 
    86    int N;
    87 
    88    int APPEND = FALSE;
    89    if ((N = get_argument (argc, argv, "-append"))) {
    90    APPEND = TRUE;
    91    remove_argument (N, &argc, argv);
    92    }
    93 
    94    if (argc != 3) {
    95    gprint (GP_ERR, "USAGE: medimage save (name) (filename) [-append]\n");
    96    return FALSE;
    97    }
    98 
    99    if (!SaveMedImage(argv[2], argv[1], APPEND)) {
    100    gprint (GP_ERR, "failed to save medimage %s\n", argv[1]);
    101    return (FALSE);
    102    }
    103    return TRUE;
    104    }
    105 
    106    int medimage_load (int argc, char **argv) {
    107 
    108    if (argc != 3) {
    109    gprint (GP_ERR, "USAGE: medimage load (name) (filename)\n");
    110    return FALSE;
    111    }
    112 
    113    if (!LoadMedImage(argv[2], argv[1])) {
    114    gprint (GP_ERR, "failed to load medimage %s\n", argv[1]);
    115    return (FALSE);
    116    }
    117    return TRUE;
    118    }
     126int medimage_save (int argc, char **argv) {
     127
     128  int N;
     129
     130  int APPEND = FALSE;
     131  if ((N = get_argument (argc, argv, "-append"))) {
     132    APPEND = TRUE;
     133    remove_argument (N, &argc, argv);
     134  }
     135
     136  if (argc != 3) {
     137    gprint (GP_ERR, "USAGE: medimage save (name) (filename) [-append]\n");
     138    return FALSE;
     139  }
     140
     141  if (!SaveMedImage(argv[2], argv[1], APPEND)) {
     142    gprint (GP_ERR, "failed to save medimage %s\n", argv[1]);
     143    return (FALSE);
     144  }
     145  return TRUE;
     146}
     147
     148int medimage_load (int argc, char **argv) {
     149
     150  if (argc != 3) {
     151    gprint (GP_ERR, "USAGE: medimage load (name) (filename)\n");
     152    return FALSE;
     153  }
     154
     155  if (!LoadMedImage(argv[2], argv[1])) {
     156    gprint (GP_ERR, "failed to load medimage %s\n", argv[1]);
     157    return (FALSE);
     158  }
     159  return TRUE;
     160}
    119161*/
    120162
Note: See TracChangeset for help on using the changeset viewer.