Changeset 9585
- Timestamp:
- Oct 16, 2006, 2:41:05 PM (20 years ago)
- Location:
- trunk/psModules/src/camera
- Files:
-
- 2 added
- 4 edited
-
Makefile.am (modified) (2 diffs)
-
pmFPA_JPEG.c (modified) (2 diffs)
-
pmFPA_MANAPLOT.c (added)
-
pmFPA_MANAPLOT.h (added)
-
pmFPAfile.h (modified) (2 diffs)
-
pmFPAfileIO.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/camera/Makefile.am
r9584 r9585 17 17 pmHDUGenerate.c \ 18 18 pmFPA_JPEG.c \ 19 pmFPA_MANAPLOT.c \ 19 20 pmFPAview.c \ 20 21 pmFPAfile.c \ … … 39 40 pmHDUGenerate.h \ 40 41 pmFPA_JPEG.h \ 42 pmFPA_MANAPLOT.h \ 41 43 pmFPAview.h \ 42 44 pmFPAfile.h \ -
trunk/psModules/src/camera/pmFPA_JPEG.c
r8935 r9585 5 5 * @author EAM, IfA 6 6 * 7 * @version $Revision: 1. 9$ $Name: not supported by cvs2svn $8 * @date $Date: 2006- 09-25 20:23:10$7 * @version $Revision: 1.10 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2006-10-17 00:41:05 $ 9 9 * 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 124 124 PS_ASSERT_PTR_NON_NULL(file, false); 125 125 126 switch (file->type) { 127 case PM_FPA_FILE_JPEG: { 128 // XXX we need to decide where the scale will come from in the long term 129 psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS, 0); 130 psStats *stats = psImageBackground(readout->image, NULL, 0, 0.25, 0.75, 10000, rng); 131 psFree(rng); 126 if (file->type != PM_FPA_FILE_JPEG) { 127 psError(PS_ERR_UNKNOWN, true, "warning: type mismatch"); 128 return false; 129 } 132 130 133 if (!isfinite(stats->robustMedian) || !isfinite(stats->robustUQ) || !isfinite(stats->robustLQ)) { 134 psError(PS_ERR_UNKNOWN, false, "Unable to measure statistics for image.\n"); 135 psFree(stats); 136 return false; 137 } 138 float delta = stats->robustUQ - stats->robustLQ; // Inter-quartile range 139 float min, max; // Minimum and maximum for stretch 131 // XXX we need to decide where the scale will come from in the long term 132 psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS, 0); 133 psStats *stats = psImageBackground(readout->image, NULL, 0, 0.25, 0.75, 10000, rng); 134 psFree(rng); 140 135 141 psString mode = pmFPAfileNameFromRule (file->extrule, file, view); 142 psString word = pmFPAfileNameFromRule (file->extxtra, file, view); 143 psArray *range = psStringSplitArray (word, ":", false); 136 if (!isfinite(stats->robustMedian) || !isfinite(stats->robustUQ) || !isfinite(stats->robustLQ)) { 137 psError(PS_ERR_UNKNOWN, false, "Unable to measure statistics for image.\n"); 138 psFree(stats); 139 return false; 140 } 141 float delta = stats->robustUQ - stats->robustLQ; // Inter-quartile range 142 float min, max; // Minimum and maximum for stretch 144 143 145 if (!strcasecmp (mode, "RANGE") && range) { 146 float fmin = atof(range->data[0]); 147 float fmax = atof(range->data[1]); 148 min = stats->robustMedian + fmin*delta; 149 max = stats->robustMedian + fmax*delta; 150 } else if (!strcasecmp (mode, "FRACTION")) { 151 float fmin = atof(range->data[0]); 152 float fmax = atof(range->data[1]); 153 min = fmin*stats->robustMedian; 154 max = fmax*stats->robustMedian; 155 } else { 156 min = stats->robustMedian - 3*delta; 157 max = stats->robustMedian + 6*delta; 158 } 159 psFree(mode); 160 psFree(word); 161 psFree(range); 162 psFree(stats); 144 psString mode = pmFPAfileNameFromRule (file->extrule, file, view); 145 psString word = pmFPAfileNameFromRule (file->extxtra, file, view); 146 psArray *range = psStringSplitArray (word, ":", false); 163 147 164 if (!isfinite(min) || !isfinite(max)) { 165 psError(PS_ERR_UNKNOWN, true, "The stretch parameters are not both finite.\n"); 166 return false; 167 } 148 if (!strcasecmp (mode, "RANGE") && range) { 149 float fmin = atof(range->data[0]); 150 float fmax = atof(range->data[1]); 151 min = stats->robustMedian + fmin*delta; 152 max = stats->robustMedian + fmax*delta; 153 } else if (!strcasecmp (mode, "FRACTION")) { 154 float fmin = atof(range->data[0]); 155 float fmax = atof(range->data[1]); 156 min = fmin*stats->robustMedian; 157 max = fmax*stats->robustMedian; 158 } else { 159 min = stats->robustMedian - 3*delta; 160 max = stats->robustMedian + 6*delta; 161 } 162 psFree(mode); 163 psFree(word); 164 psFree(range); 165 psFree(stats); 168 166 169 psString name = pmFPAfileNameFromRule (file->filerule, file, view); 170 psString mapname = pmFPAfileNameFromRule (file->filextra, file, view); 171 psImageJpegColormap *map = psImageJpegColormapSet (NULL, mapname); 172 psFree(mapname); 173 if (!map) { 174 map = psImageJpegColormapSet (NULL, "-greyscale"); 175 } 167 if (!isfinite(min) || !isfinite(max)) { 168 psError(PS_ERR_UNKNOWN, true, "The stretch parameters are not both finite.\n"); 169 return false; 170 } 176 171 177 psImageJpeg (map, readout->image, name, min, max); 178 psFree(name); 179 psFree(map); 172 psString name = pmFPAfileNameFromRule (file->filerule, file, view); 173 psString mapname = pmFPAfileNameFromRule (file->filextra, file, view); 174 psImageJpegColormap *map = psImageJpegColormapSet (NULL, mapname); 175 psFree(mapname); 176 if (!map) { 177 map = psImageJpegColormapSet (NULL, "-greyscale"); 178 } 180 179 181 return true; 182 } 183 default: 184 fprintf (stderr, "warning: type mismatch\n"); 185 break; 186 } 187 return false; 180 psImageJpeg (map, readout->image, name, min, max); 181 psFree(name); 182 psFree(map); 183 184 return true; 188 185 } -
trunk/psModules/src/camera/pmFPAfile.h
r7727 r9585 7 7 * @author EAM, IfA 8 8 * 9 * @version $Revision: 1. 5$ $Name: not supported by cvs2svn $10 * @date $Date: 2006- 06-28 19:22:11$9 * @version $Revision: 1.6 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2006-10-17 00:41:05 $ 11 11 * 12 12 * Copyright 2004-2005 Institute for Astronomy, University of Hawaii … … 36 36 PM_FPA_FILE_PSF, 37 37 PM_FPA_FILE_JPEG, 38 PM_FPA_FILE_MANAPLOT, 38 39 } pmFPAfileType; 39 40 -
trunk/psModules/src/camera/pmFPAfileIO.c
r9511 r9585 27 27 #include "pmPSF_IO.h" 28 28 #include "pmFPA_JPEG.h" 29 # include "pmDetrendDB.h" 29 #include "pmFPA_MANAPLOT.h" 30 #include "pmDetrendDB.h" 30 31 31 32 // open file (if not already opened) … … 232 233 case PM_FPA_FILE_PSF: 233 234 case PM_FPA_FILE_JPEG: 235 case PM_FPA_FILE_MANAPLOT: 234 236 psTrace ("pmFPAfile", 5, "defer opening %s\n", file->filename); 235 237 break; … … 315 317 316 318 case PM_FPA_FILE_JPEG: 319 case PM_FPA_FILE_MANAPLOT: 317 320 break; 318 321 … … 375 378 case PM_FPA_FILE_PSF: 376 379 case PM_FPA_FILE_JPEG: 380 case PM_FPA_FILE_MANAPLOT: 377 381 break; 378 382 … … 454 458 case PM_FPA_FILE_JPEG: 455 459 pmFPAviewWriteJPEG (view, file); 456 psTrace ("pmFPAfile", 5, "wrote PSF %s (fpa: %p)\n", file->filename, file->fpa); 460 psTrace ("pmFPAfile", 5, "wrote JPEG %s (fpa: %p)\n", file->filename, file->fpa); 461 break; 462 463 case PM_FPA_FILE_MANAPLOT: 464 pmFPAviewWriteMANAPLOT (view, file); 465 psTrace ("pmFPAfile", 5, "wrote MANAPLOT %s (fpa: %p)\n", file->filename, file->fpa); 457 466 break; 458 467 … … 517 526 case PM_FPA_FILE_PSF: 518 527 case PM_FPA_FILE_JPEG: 528 case PM_FPA_FILE_MANAPLOT: 519 529 break; 520 530 … … 573 583 case PM_FPA_FILE_PSF: 574 584 case PM_FPA_FILE_JPEG: 585 case PM_FPA_FILE_MANAPLOT: 575 586 break; 576 587
Note:
See TracChangeset
for help on using the changeset viewer.
