IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Aug 22, 2008, 2:05:48 PM (18 years ago)
Author:
Paul Price
Message:

Fixing mask values: making a bit more flexible, updating to new pmSubtractionMatch API.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppStack/src/ppStackMatch.c

    r19123 r19172  
    3434    int size = psMetadataLookupS32(NULL, ppsub, "KERNEL.SIZE"); // Kernel half-size
    3535
    36     psMaskType maskIn = pmConfigMaskGet("MASK.VALUE", config); // Bits to mask going in to pmSubtractionMatch
    37     psMaskType maskOut = pmConfigMaskGet("BLANK", config); // Bits to mask after pmSubtractionMatch
     36    psString maskValStr = psMetadataLookupStr(NULL, recipe, "MASK.VAL"); // Name of bits to mask going in
     37    psMaskType maskVal = pmConfigMaskGet(maskValStr, config); // Bits to mask going in to pmSubtractionMatch
     38    psString maskPoorStr = psMetadataLookupStr(NULL, recipe, "MASK.POOR"); // Name of bits to mask for poor
     39    psMaskType maskPoor = pmConfigMaskGet(maskPoorStr, config); // Bits to mask for poor pixels
     40    psString maskBadStr = psMetadataLookupStr(NULL, recipe, "MASK.BAD"); // Name of bits to mask for bad
     41    psMaskType maskBad = pmConfigMaskGet(maskBadStr, config); // Bits to mask for bad pixels
    3842
    3943    bool mdok;                          // Status of MD lookup
     
    4549    int threads = psMetadataLookupS32(NULL, config->arguments, "-threads"); // Number of threads
    4650
    47     if (!pmReadoutMaskNonfinite(readout, maskIn)) {
     51    if (!pmReadoutMaskNonfinite(readout, maskVal)) {
    4852        psError(PS_ERR_UNKNOWN, false, "Unable to mask non-finite pixels in readout.");
    4953        return false;
     
    7579        float optThresh = psMetadataLookupF32(&mdok, ppsub, "OPTIMUM.TOL"); // Tolerance for search
    7680        int optOrder = psMetadataLookupS32(&mdok, ppsub, "OPTIMUM.ORDER"); // Order for search
     81        float poorFrac = psMetadataLookupF32(&mdok, ppsub, "POOR.FRACTION"); // Fraction for "poor"
    7782
    7883        // These values are specified specifically for stacking
     
    8792        {
    8893            psStats *bg = psStatsAlloc(PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV); // Statistics for bg
    89             if (!psImageBackground(bg, NULL, readout->image, readout->mask, maskIn, rng)) {
     94            if (!psImageBackground(bg, NULL, readout->image, readout->mask, maskVal, rng)) {
    9095                psWarning("Can't measure background for image.");
    9196                psErrorClear();
     
    136141                                sources, stampsName, type, size, order, widths, orders, inner, ringsOrder,
    137142                                binning, penalty, optimum, optWidths, optOrder, optThresh, iter, rej,
    138                                 maskIn, maskOut, badFrac, PM_SUBTRACTION_MODE_1)) {
     143                                maskVal, maskBad, maskPoor, poorFrac, badFrac, PM_SUBTRACTION_MODE_1)) {
    139144            psError(PS_ERR_UNKNOWN, false, "Unable to match images.");
    140145            psFree(fake);
     
    226231    if (renorm) {
    227232        psLogMsg("ppStack", PS_LOG_INFO, "Renormalising variance map.");
    228         if (!pmReadoutWeightRenorm(readout, maskOut, renormMean, renormStdev, renormWidth, rng)) {
     233        if (!pmReadoutWeightRenorm(readout, maskBad, renormMean, renormStdev, renormWidth, rng)) {
    229234            psError(PS_ERR_UNKNOWN, false, "Unable to renormalise variances.");
    230235            psFree(output);
     
    235240    // Ensure the background value is zero
    236241    psStats *bg = psStatsAlloc(PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV); // Statistics for background
    237     if (!psImageBackground(bg, NULL, readout->image, readout->mask, maskOut, rng)) {
     242    if (!psImageBackground(bg, NULL, readout->image, readout->mask, maskVal | maskBad, rng)) {
    238243        psWarning("Can't measure background for image.");
    239244        psErrorClear();
Note: See TracChangeset for help on using the changeset viewer.