IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 27040


Ignore:
Timestamp:
Feb 23, 2010, 1:08:20 PM (16 years ago)
Author:
Paul Price
Message:

ppSub wasn't writing out the subkernel file required for the 'update' mode. pmSubtractionMatchPrecalc() wasn't allocating the image.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppSub/src/ppSubCamera.c

    r26982 r27040  
    107107
    108108    // look for the file on the RUN metadata
    109     pmFPAfile *file = pmFPAfileDefineFromRun(&status, bind, config, filerule); // File to return
     109    pmFPAfile *file = pmFPAfileDefineFromRun(&status, NULL, config, filerule); // File to return
    110110    if (!status) {
    111111        psError(psErrorCodeLast(), false, "Failed to load file definition for %s", filerule);
     
    348348
    349349    // Output subtraction kernel
    350     pmFPAfile *kernel = defineCalcFile(config, NULL, "PPSUB.OUTPUT.KERNELS", PM_FPA_FILE_SUBKERNEL);
     350    pmFPAfile *kernel = defineCalcFile(config, output, "PPSUB.OUTPUT.KERNELS", PM_FPA_FILE_SUBKERNEL);
    351351    if (!kernel) {
    352352        psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to define file PPSUB.OUTPUT.KERNELS");
  • trunk/psModules/src/imcombine/pmSubtractionMatch.c

    r26980 r27040  
    197197}
    198198
     199
     200/// Allocate images, as required
     201static void subtractionMatchAlloc(pmReadout *conv1, pmReadout *conv2, // Output readouts
     202                                  const pmReadout *ro1, const pmReadout *ro2, // Input readouts
     203                                  const psImage *subMask,                     // Subtraction mask
     204                                  psImageMaskType maskBad,                    // Mask value for bad pixels
     205                                  pmSubtractionMode subMode,          // Subtraction mode
     206                                  int numCols, int numRows            // Size of image
     207    )
     208{
     209    if (subMode == PM_SUBTRACTION_MODE_1 || subMode == PM_SUBTRACTION_MODE_UNSURE ||
     210        subMode == PM_SUBTRACTION_MODE_DUAL) {
     211        if (!conv1->image) {
     212            conv1->image = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     213        }
     214        psImageInit(conv1->image, NAN);
     215        if (ro1->variance) {
     216            if (!conv1->variance) {
     217                conv1->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     218            }
     219            psImageInit(conv1->variance, NAN);
     220        }
     221        if (subMask) {
     222            if (!conv1->mask) {
     223                conv1->mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK);
     224            }
     225            psImageInit(conv1->mask, maskBad);
     226        }
     227    }
     228    if (subMode == PM_SUBTRACTION_MODE_2 || subMode == PM_SUBTRACTION_MODE_UNSURE ||
     229        subMode == PM_SUBTRACTION_MODE_DUAL) {
     230        if (!conv2->image) {
     231            conv2->image = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     232        }
     233        psImageInit(conv2->image, NAN);
     234        if (ro2->variance) {
     235            if (!conv2->variance) {
     236                conv2->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     237            }
     238            psImageInit(conv2->variance, NAN);
     239        }
     240        if (subMask) {
     241            if (!conv2->mask) {
     242                conv2->mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK);
     243            }
     244            psImageInit(conv2->mask, maskBad);
     245        }
     246    }
     247
     248    return;
     249}
     250
     251
    199252static void subtractionAnalysisUpdate(pmReadout *conv1, pmReadout *conv2, // Convolved images
    200253                                      const psMetadata *analysis, // Analysis metadata
     
    343396    psMetadata *outHeader = psMetadataAlloc(); // Output header values
    344397
     398    int numCols = ro1->image->numCols, numRows = ro1->image->numRows; // Size of image
     399    subtractionMatchAlloc(conv1, conv2, ro1, ro2, subMask, maskBad, mode, numCols, numRows);
     400
    345401    psTrace("psModules.imcombine", 2, "Convolving...\n");
    346402    for (int i = 0; i < kernels->n; i++) {
     
    515571            stampThresh2 = threshold * bg->robustStdev;
    516572            psBinaryOp(ro2->image, ro2->image, "-", psScalarAlloc((float)bg->robustMedian, PS_TYPE_F32));
    517        }
     573        }
    518574        psFree(bg);
    519575    }
    520576
    521     // Just in case the iso-kernel region doesn't cover the entire image...
    522     if (subMode == PM_SUBTRACTION_MODE_1 || subMode == PM_SUBTRACTION_MODE_UNSURE ||
    523         subMode == PM_SUBTRACTION_MODE_DUAL) {
    524         if (!conv1->image) {
    525             conv1->image = psImageAlloc(numCols, numRows, PS_TYPE_F32);
    526         }
    527         psImageInit(conv1->image, NAN);
    528         if (ro1->variance) {
    529             if (!conv1->variance) {
    530                 conv1->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32);
    531             }
    532             psImageInit(conv1->variance, NAN);
    533         }
    534         if (subMask) {
    535             if (!conv1->mask) {
    536                 conv1->mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK);
    537             }
    538             psImageInit(conv1->mask, maskBad);
    539         }
    540     }
    541     if (subMode == PM_SUBTRACTION_MODE_2 || subMode == PM_SUBTRACTION_MODE_UNSURE ||
    542         subMode == PM_SUBTRACTION_MODE_DUAL) {
    543         if (!conv2->image) {
    544             conv2->image = psImageAlloc(numCols, numRows, PS_TYPE_F32);
    545         }
    546         psImageInit(conv2->image, NAN);
    547         if (ro2->variance) {
    548             if (!conv2->variance) {
    549                 conv2->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32);
    550             }
    551             psImageInit(conv2->variance, NAN);
    552         }
    553         if (subMask) {
    554             if (!conv2->mask) {
    555                 conv2->mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK);
    556             }
    557             psImageInit(conv2->mask, maskBad);
    558         }
    559     }
    560 
     577    subtractionMatchAlloc(conv1, conv2, ro1, ro2, subMask, maskBad, subMode, numCols, numRows);
    561578
    562579    // Iterate over iso-kernel regions
Note: See TracChangeset for help on using the changeset viewer.