IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 16, 2006, 2:41:05 PM (20 years ago)
Author:
magnier
Message:

adding MANAPLOT type to pmFPAfile

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/camera/pmFPA_JPEG.c

    r8935 r9585  
    55 *  @author EAM, IfA
    66 *
    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 $
    99 *
    1010 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    124124    PS_ASSERT_PTR_NON_NULL(file, false);
    125125
    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    }
    132130
    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);
    140135
    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
    144143
    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);
    163147
    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);
    168166
    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    }
    176171
    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    }
    180179
    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;
    188185}
Note: See TracChangeset for help on using the changeset viewer.