IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 15, 2021, 8:20:12 AM (5 years ago)
Author:
eugene
Message:

ppStack builds with percentile combination

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ppStack.20211015/src/ppStackReadout.c

    r41841 r41842  
    6868    psVector *addVariance = options->matchChi2; // Additional variance when rejecting
    6969
    70     job->results = ppStackReadoutInitial(config, outRO, thread->readouts, mask,
    71                                          weightings, exposures, addVariance);
     70    job->results = ppStackReadoutInitial(config, outRO, thread->readouts, mask, weightings, exposures, addVariance);
    7271    thread->busy = false;
    7372
     
    340339}
    341340
    342 psArray *ppStackReadoutPercent(const pmConfig *config, pmReadout *outRO, const psArray *readouts,
     341bool pmStackCombineByPercentile(pmReadout *outRO, psArray *stack, float minRange, float maxRange, psImageMaskType maskBad, psImageMaskType maskSuspect, psImageMaskType maskBlank);
     342
     343bool ppStackReadoutPercent(const pmConfig *config, pmReadout *outRO, const psArray *readouts,
    343344                               const psVector *mask, const psVector *weightings, const psVector *exposures,
    344345                               const psVector *addVariance)
     
    357358
    358359    bool mdok;                          // Status of MD lookup
    359     float iter = psMetadataLookupF32(NULL, recipe, "COMBINE.ITER"); // Rejection iterations
    360     float minRange = psMetadataLookupF32(NULL, recipe, "COMBINE.MIN.RANGE"); // Combination threshold
    361     float maxRange = psMetadataLookupF32(NULL, recipe, "COMBINE.MAX.RANGE"); // Combination threshold
    362 
    363     psMetadata *ppsub = psMetadataLookupMetadata(NULL, config->recipes, "PPSUB"); // PPSUB recipe
    364     int kernelSize = psMetadataLookupS32(NULL, ppsub, "KERNEL.SIZE"); // Kernel half-size
    365 
    366     psString maskBadStr = psMetadataLookupStr(NULL, recipe, "MASK.VAL"); // Name of bits to mask for bad
    367     psImageMaskType maskBad = pmConfigMaskGet(maskBadStr, config); // Bits to mask for bad pixels
    368 
    369     psString maskSuspectStr = psMetadataLookupStr(NULL, recipe, "MASK.SUSPECT"); // Name of suspect mask bits
     360    float minRange = psMetadataLookupF32(&mdok, recipe, "COMBINE.MIN.RANGE"); // Combination threshold
     361    float maxRange = psMetadataLookupF32(&mdok, recipe, "COMBINE.MAX.RANGE"); // Combination threshold
     362
     363    char defaultBlankStr[16] = "BLANK";
     364
     365    psString maskBadStr     = psMetadataLookupStr(&mdok, recipe, "MASK.VAL"); // Name of bits to mask for bad
     366    psString maskSuspectStr = psMetadataLookupStr(&mdok, recipe, "MASK.SUSPECT"); // Name of suspect mask bits
     367    psString maskBlankStr   = psMetadataLookupStr(&mdok, recipe, "MASK.BLANK"); // Name of bits to set for empty pixels
     368    if (!maskBlankStr) {
     369      maskBlankStr = psMetadataLookupStr(&mdok, recipe, "MASK.BAD"); // Old name for MASK.BLANK
     370    }
     371    if (!maskBlankStr) {
     372      maskBlankStr = defaultBlankStr; // this is statically allocated above
     373    }
     374
     375    psImageMaskType maskBad     = pmConfigMaskGet(maskBadStr, config); // Bits to mask for bad pixels
    370376    psImageMaskType maskSuspect = pmConfigMaskGet(maskSuspectStr, config); // Suspect bits
    371 
    372     bool status = false;
    373     psImageMaskType maskBlank;
    374     psString maskBlankStr = psMetadataLookupStr(&status, recipe, "MASK.BLANK"); // Name of bits to set for empty pixels
    375     if (maskBlankStr) {
    376       maskBlank = pmConfigMaskGet(maskBlankStr, config); // Bits to mask for bad pixels
    377     } else {
    378       maskBlankStr = psMetadataLookupStr(&status, recipe, "MASK.BAD"); // Old name for MASK.BLANK
    379       if (maskBlankStr) {
    380         maskBlank = pmConfigMaskGet(maskBlankStr, config); // Bits to mask for bad pixels
    381       } else {
    382         maskBlank = pmConfigMaskGet("BLANK", config); // Bits to mask for bad pixels
    383       }
    384     }
     377    psImageMaskType maskBlank   = pmConfigMaskGet(maskBlankStr, config); // Bits to mask for bad pixels
    385378
    386379    int num = readouts->n;              // Number of inputs
     
    412405    sectionNum++;
    413406
    414     psArray *results = psArrayAlloc(2); // Array of results
    415     results->data[0] = inspect;
    416     results->data[1] = reject;
    417 
    418     return results;
    419 }
    420 
    421 
     407    return true;
     408}
     409
     410
Note: See TracChangeset for help on using the changeset viewer.