IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 26, 2009, 8:40:07 PM (17 years ago)
Author:
eugene
Message:

incorporating changes from 16bit mask upgrades (eam_branch_20081230)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppStats/src/ppStatsReadout.c

    r19355 r21183  
    6363        int sampleSpace = 1.0 / data->sample; // Space between samples
    6464        psVector *sampleValues = psVectorAlloc(numSamples, PS_TYPE_F32); // Vector of samples
    65         psVector *sampleMask = psVectorAlloc(numSamples, PS_TYPE_MASK);  // Corresponding mask
    66         if (!mask) {
    67             psVectorInit(sampleMask, 0);
    68         }
     65        psVector *sampleMask = psVectorAlloc(numSamples, PS_TYPE_VECTOR_MASK);  // Corresponding mask
     66        psVectorInit(sampleMask, 0);
     67
    6968        for (int i = 0; i < numSamples; i++) {
    7069            int j = i * sampleSpace;
     
    7271            int x = j % image->numCols;
    7372            sampleValues->data.F32[i] = image->data.F32[y][x];
    74             if ((!mask || !(mask->data.PS_TYPE_MASK_DATA[y][x] & data->maskVal)) &&
    75                 !isfinite(sampleValues->data.F32[i])) {
    76                 if (!warnNonFinite) {
    77                     psWarning("Unmasked non-finite value detected at %d,%d; suppressing further warnings",
    78                               x, y);
    79                     warnNonFinite = true;
    80                 }
    81                 sampleMask->data.PS_TYPE_MASK_DATA[i] = data->maskVal;
    82             } else if (mask) {
    83                 sampleMask->data.PS_TYPE_MASK_DATA[i] = mask->data.PS_TYPE_MASK_DATA[y][x];
    84             }
    85         }
    86         if (!psVectorStats(data->stats, sampleValues, NULL, sampleMask, data->maskVal)) {
     73
     74            // ignore the sampleMask if there is no input mask
     75            if (!mask) continue;
     76
     77            // if this pixel is masked, set the sample mask
     78            if (mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & data->maskVal) {
     79                sampleMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 1;
     80                continue;
     81            }
     82
     83            // mask any unmasked NAN/INF values
     84            if (!isfinite(sampleValues->data.F32[i])) {
     85                // warn for the first unmasked NAN/INF value
     86                if (!warnNonFinite) {
     87                    psWarning("Unmasked non-finite value detected at %d,%d; suppressing further warnings", x, y);
     88                    warnNonFinite = true;
     89                }
     90                sampleMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 1;
     91            }
     92        }
     93        if (!psVectorStats(data->stats, sampleValues, NULL, sampleMask, 1)) {
    8794            psWarning("Unable to perform statistics on readout %s.\n", readoutName);
    8895            psErrorClear();
     
    179186                for (int j = 0; j < readout->mask->numRows; j++) {
    180187                    for (int i = 0; i < readout->mask->numCols; i++) {
    181                         if (readout->mask->data.PS_TYPE_MASK_DATA[j][i] & data->maskVal) {
     188                        if (readout->mask->data.PS_TYPE_IMAGE_MASK_DATA[j][i] & data->maskVal) {
    182189                            numBad++;
    183190                        }
Note: See TracChangeset for help on using the changeset viewer.