IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 27, 2019, 8:42:23 AM (7 years ago)
Author:
eugene
Message:

coding trace analysis to handle bad edge cases; add red & blu sides for trace spline; adding variance to flat-field

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ohana.20190329/src/opihi/cmd.data/medimage_commands.c

    r40662 r40755  
    2222  int N;
    2323  Buffer *image;
    24   Buffer *sig = NULL;
    25 
    26   if ((N = get_argument (argc, argv, "-sigma"))) {
    27     remove_argument (N, &argc, argv);
    28     if ((sig = SelectBuffer (argv[N], OLDBUFFER, TRUE)) == NULL) return (FALSE);
     24  Buffer *var = NULL;
     25
     26  if ((N = get_argument (argc, argv, "-variance"))) {
     27    remove_argument (N, &argc, argv);
     28    if ((var = SelectBuffer (argv[N], OLDBUFFER, TRUE)) == NULL) return (FALSE);
    2929    remove_argument (N, &argc, argv);
    3030  }
    3131
    3232  if (argc != 3) {
    33     gprint (GP_ERR, "USAGE: medimage add (name) (image) [-sigma sigma]\n");
     33    gprint (GP_ERR, "USAGE: medimage add (name) (image) [-variance variance]\n");
    3434    gprint (GP_ERR, "       add the given image to the set of images to be medianed\n");
    3535    gprint (GP_ERR, "       optionally supply variance image (for weighted calculations)\n");
     
    3939  if ((image = SelectBuffer (argv[2], OLDBUFFER, TRUE)) == NULL) return (FALSE);
    4040
    41   if (sig) {
    42     if ((sig->matrix.Naxis[0] != image->matrix.Naxis[0]) ||
    43         (sig->matrix.Naxis[1] != image->matrix.Naxis[1])) {
    44       gprint (GP_ERR, "sigma buffer does not match image buffer dimensions\n");
     41  if (var) {
     42    if ((var->matrix.Naxis[0] != image->matrix.Naxis[0]) ||
     43        (var->matrix.Naxis[1] != image->matrix.Naxis[1])) {
     44      gprint (GP_ERR, "variance buffer does not match image buffer dimensions\n");
    4545      return FALSE;
    4646    }
     
    6868  // new image should match existing medimage dimensions
    6969
    70   // AddMedImage (median, image, sig);
     70  // AddMedImage (median, image, var);
    7171  int Ninput = median->Ninput;
    7272  median->Ninput ++;
    7373  REALLOCATE (median->flx, float *, median->Ninput);
    74   REALLOCATE (median->sig, float *, median->Ninput);
     74  REALLOCATE (median->var, float *, median->Ninput);
    7575
    7676  ALLOCATE (median->flx[Ninput], float, median->Nx*median->Ny);
    7777  memcpy (median->flx[Ninput], image->matrix.buffer, sizeof(float)*median->Nx*median->Ny);
    7878
    79   median->sig[Ninput] = NULL;
    80   if (sig) {
    81     ALLOCATE (median->sig[Ninput], float, median->Nx*median->Ny);
    82     memcpy (median->sig[Ninput], sig->matrix.buffer, sizeof(float)*median->Nx*median->Ny);
     79  median->var[Ninput] = NULL;
     80  if (var) {
     81    ALLOCATE (median->var[Ninput], float, median->Nx*median->Ny);
     82    memcpy (median->var[Ninput], var->matrix.buffer, sizeof(float)*median->Nx*median->Ny);
    8383  }
    8484
     
    105105    if (mode != CALC_MEDIAN) { gprint (GP_ERR, "supply only one of -mean, -irls, -wtmean\n"); return FALSE; }
    106106    mode = CALC_WTMEAN;
     107    remove_argument (N, &argc, argv);
     108  }
     109
     110  Buffer *variance = NULL;
     111  if ((N = get_argument (argc, argv, "-variance"))) {
     112    remove_argument (N, &argc, argv);
     113    if ((variance = SelectBuffer (argv[N], ANYBUFFER, TRUE)) == NULL) return (FALSE);
    107114    remove_argument (N, &argc, argv);
    108115  }
     
    145152        val[N] = v;
    146153        wgt[N] = 1.0;
    147         if (median->sig[n]) {
    148           float s = median->sig[n][Npix];
     154        if (median->var[n]) {
     155          float s = median->var[n][Npix];
    149156          if (!isfinite(s)) continue;
    150157          if (fabs(s) < 2*FLT_MIN) s = 2*FLT_MIN;
    151           wgt[N] = 1.0 / SQ(s);
     158          wgt[N] = 1.0 / s;
    152159        }
    153160        N++;
Note: See TracChangeset for help on using the changeset viewer.