IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 29217


Ignore:
Timestamp:
Sep 23, 2010, 7:08:16 AM (16 years ago)
Author:
eugene
Message:

more clearly distinguish mask used to test for bad pixels from mask value used to set possibly blank pixels; do not fail is no covariances are supplied; replace instance of psMetadataAddU8 with psMetadataAddImageMask; replace pmReadoutMaskNonfinite with pmReadoutMaskInvalid (only masks unmasked nan pixels)

Location:
branches/eam_branches/ipp-20100823/ppStack/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20100823/ppStack/src/ppStackCombineFinal.c

    r28405 r29217  
    9393
    9494    // Sum covariance matrices
     95    // the array may be defined, but no covariances actually supplied.
     96    bool haveCovariances = false;
    9597    if (covariances) {
     98        for (int i = 0; i < covariances->n; i++) {
     99            haveCovariances |= (covariances->data[i] != NULL);
     100        }
     101    }
     102
     103    if (haveCovariances) {
    96104        outRO->covariance = psImageCovarianceAverageWeighted(covariances, options->weightings);
    97105    } else {
  • branches/eam_branches/ipp-20100823/ppStack/src/ppStackLoop.c

    r28182 r29217  
    204204#if 1
    205205    // Unconvolved stack --- it's cheap to calculate, compared to everything else!
     206    // XXX unconvolved stack is currently using the convolved mask!  oops!
    206207    if (options->convolve) {
    207208        // Start threading
  • branches/eam_branches/ipp-20100823/ppStack/src/ppStackMatch.c

    r28253 r29217  
    6868
    6969    // user-defined masks to test for good/bad pixels (build from recipe list if not yet set)
    70     psMetadataAddU8(psphotRecipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", maskBad);
     70    psMetadataAddImageMask(psphotRecipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", maskBad);
    7171
    7272    psImage *binned = psphotModelBackgroundReadoutNoFile(ro, config); // Binned background model
     
    153153    int threads = psMetadataLookupS32(NULL, config->arguments, "-threads"); // Number of threads
    154154
    155     if (!pmReadoutMaskNonfinite(readout, maskVal)) {
     155    // Replaced pmReadoutMaskNonfinite with pmReadoutMaskInvalid (tests for already masked pixels)
     156    if (!pmReadoutMaskInvalid(readout, maskVal, maskBad)) {
    156157        psError(psErrorCodeLast(), false, "Unable to mask non-finite pixels in readout.");
    157158        return false;
  • branches/eam_branches/ipp-20100823/ppStack/src/ppStackReadout.c

    r27427 r29217  
    130130    int kernelSize = psMetadataLookupS32(NULL, ppsub, "KERNEL.SIZE"); // Kernel half-size
    131131
    132     psString maskValStr = psMetadataLookupStr(NULL, recipe, "MASK.VAL"); // Name of bits to mask going in
    133     psImageMaskType maskVal = pmConfigMaskGet(maskValStr, config); // Bits to mask going in to pmSubtractionMatch
     132    psString maskBadStr = psMetadataLookupStr(NULL, recipe, "MASK.VAL"); // Name of bits to mask for bad
     133    psImageMaskType maskBad = pmConfigMaskGet(maskBadStr, config); // Bits to mask for bad pixels
     134
    134135    psString maskSuspectStr = psMetadataLookupStr(NULL, recipe, "MASK.SUSPECT"); // Name of suspect mask bits
    135136    psImageMaskType maskSuspect = pmConfigMaskGet(maskSuspectStr, config); // Suspect bits
    136     psString maskBadStr = psMetadataLookupStr(NULL, recipe, "MASK.BAD"); // Name of bits to mask for bad
    137     psImageMaskType maskBad = pmConfigMaskGet(maskBadStr, config); // Bits to mask for bad pixels
     137
     138    bool status = false;
     139    psImageMaskType maskBlank;
     140    psString maskBlankStr = psMetadataLookupStr(&status, recipe, "MASK.BLANK"); // Name of bits to set for empty pixels
     141    if (maskBlankStr) {
     142      maskBlank = pmConfigMaskGet(maskBlankStr, config); // Bits to mask for bad pixels
     143    } else {
     144      maskBlankStr = psMetadataLookupStr(&status, recipe, "MASK.BAD"); // Old name for MASK.BLANK
     145      if (maskBlankStr) {
     146        maskBlank = pmConfigMaskGet(maskBlankStr, config); // Bits to mask for bad pixels
     147      } else {
     148        maskBlank = pmConfigMaskGet("BLANK", config); // Bits to mask for bad pixels
     149      }
     150    }
    138151
    139152    int num = readouts->n;              // Number of inputs
     
    157170    }
    158171
    159     if (!pmStackCombine(outRO, NULL, stack, maskVal | maskBad, maskSuspect, maskBad, kernelSize, iter,
     172    if (!pmStackCombine(outRO, NULL, stack, maskBad, maskSuspect, maskBlank, kernelSize, iter,
    160173                        combineRej, combineSys, combineDiscard, useVariance, safe, false)) {
    161174        psError(PS_ERR_UNKNOWN, false, "Unable to combine input readouts with rejection.");
     
    215228    bool safe = psMetadataLookupBool(&mdok, recipe, "SAFE"); // Be safe when combining small numbers of pixels
    216229
    217     psString maskValStr = psMetadataLookupStr(NULL, recipe, "MASK.VAL"); // Name of bits to mask going in
    218     psImageMaskType maskVal = pmConfigMaskGet(maskValStr, config); // Bits to mask going in to pmSubtractionMatch
     230    psString maskBadStr = psMetadataLookupStr(NULL, recipe, "MASK.VAL"); // Name of bits to mask for bad
     231    psImageMaskType maskBad = pmConfigMaskGet(maskBadStr, config); // Bits to mask for bad pixels
     232
    219233    psString maskSuspectStr = psMetadataLookupStr(NULL, recipe, "MASK.SUSPECT"); // Name of suspect mask bits
    220234    psImageMaskType maskSuspect = pmConfigMaskGet(maskSuspectStr, config); // Suspect bits
    221     psString maskBadStr = psMetadataLookupStr(NULL, recipe, "MASK.BAD"); // Name of bits to mask for bad
    222     psImageMaskType maskBad = pmConfigMaskGet(maskBadStr, config); // Bits to mask for bad pixels
     235
     236    bool status = false;
     237    psImageMaskType maskBlank;
     238    psString maskBlankStr = psMetadataLookupStr(&status, recipe, "MASK.BLANK"); // Name of bits to set for empty pixels
     239    if (maskBlankStr) {
     240      maskBlank = pmConfigMaskGet(maskBlankStr, config); // Bits to mask for bad pixels
     241    } else {
     242      maskBlankStr = psMetadataLookupStr(&status, recipe, "MASK.BAD"); // Old name for MASK.BLANK
     243      if (maskBlankStr) {
     244        maskBlank = pmConfigMaskGet(maskBlankStr, config); // Bits to mask for bad pixels
     245      } else {
     246        maskBlank = pmConfigMaskGet("BLANK", config); // Bits to mask for bad pixels
     247      }
     248    }
    223249
    224250    int num = readouts->n;              // Number of inputs
     
    257283    }
    258284
    259     if (!pmStackCombine(outRO, expRO, stack, maskVal | maskBad, maskSuspect, maskBad, 0, iter, combineRej,
     285    if (!pmStackCombine(outRO, expRO, stack, maskBad, maskSuspect, maskBlank, 0, iter, combineRej,
    260286                        combineSys, combineDiscard, useVariance, safe, rejected)) {
    261287        psError(PS_ERR_UNKNOWN, false, "Unable to combine input readouts.");
Note: See TracChangeset for help on using the changeset viewer.