- Timestamp:
- May 27, 2019, 8:42:23 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ohana.20190329/src/opihi/cmd.data/medimage_commands.c
r40662 r40755 22 22 int N; 23 23 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); 29 29 remove_argument (N, &argc, argv); 30 30 } 31 31 32 32 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"); 34 34 gprint (GP_ERR, " add the given image to the set of images to be medianed\n"); 35 35 gprint (GP_ERR, " optionally supply variance image (for weighted calculations)\n"); … … 39 39 if ((image = SelectBuffer (argv[2], OLDBUFFER, TRUE)) == NULL) return (FALSE); 40 40 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, " sigmabuffer 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"); 45 45 return FALSE; 46 46 } … … 68 68 // new image should match existing medimage dimensions 69 69 70 // AddMedImage (median, image, sig);70 // AddMedImage (median, image, var); 71 71 int Ninput = median->Ninput; 72 72 median->Ninput ++; 73 73 REALLOCATE (median->flx, float *, median->Ninput); 74 REALLOCATE (median-> sig, float *, median->Ninput);74 REALLOCATE (median->var, float *, median->Ninput); 75 75 76 76 ALLOCATE (median->flx[Ninput], float, median->Nx*median->Ny); 77 77 memcpy (median->flx[Ninput], image->matrix.buffer, sizeof(float)*median->Nx*median->Ny); 78 78 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); 83 83 } 84 84 … … 105 105 if (mode != CALC_MEDIAN) { gprint (GP_ERR, "supply only one of -mean, -irls, -wtmean\n"); return FALSE; } 106 106 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); 107 114 remove_argument (N, &argc, argv); 108 115 } … … 145 152 val[N] = v; 146 153 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]; 149 156 if (!isfinite(s)) continue; 150 157 if (fabs(s) < 2*FLT_MIN) s = 2*FLT_MIN; 151 wgt[N] = 1.0 / SQ(s);158 wgt[N] = 1.0 / s; 152 159 } 153 160 N++;
Note:
See TracChangeset
for help on using the changeset viewer.
