IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 25911


Ignore:
Timestamp:
Oct 21, 2009, 1:03:45 PM (17 years ago)
Author:
Paul Price
Message:

Adding unconvolved mask and variance as outputs in addition to the unconvolved image.

Location:
branches/pap/ppStack/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/pap/ppStack/src/ppStackCamera.c

    r25825 r25911  
    316316        psError(PS_ERR_UNKNOWN, false, "Unable to generate output FPA.");
    317317        return false;
     318    }
     319
     320    // Unconvolved mask
     321    pmFPAfile *unconvMask = pmFPAfileDefineOutput(config, unconvFPA, "PPSTACK.UNCONV.MASK");
     322    if (!unconvMask) {
     323        psError(PS_ERR_IO, false, _("Unable to generate output file from PPSTACK.UNCONV.MASK"));
     324        return false;
     325    }
     326    if (unconvMask->type != PM_FPA_FILE_MASK) {
     327        psError(PS_ERR_IO, true, "PPSTACK.UNCONV.MASK is not of type MASK");
     328        return false;
     329    }
     330    unconvMask->save = true;
     331
     332    // Unconvolved variance
     333    if (haveVariances) {
     334        pmFPAfile *unconvVariance = pmFPAfileDefineOutput(config, unconvFPA, "PPSTACK.UNCONV.VARIANCE");
     335        if (!unconvVariance) {
     336            psError(PS_ERR_IO, false, _("Unable to generate output file from PPSTACK.UNCONV.VARIANCE"));
     337            return false;
     338        }
     339        if (unconvVariance->type != PM_FPA_FILE_VARIANCE) {
     340            psError(PS_ERR_IO, true, "PPSTACK.UNCONV.VARIANCE is not of type VARIANCE");
     341            return false;
     342        }
     343        unconvVariance->save = true;
    318344    }
    319345#endif
  • branches/pap/ppStack/src/ppStackCombineFinal.c

    r25830 r25911  
    1010#include "ppStackLoop.h"
    1111
    12 bool ppStackCombineFinal(pmReadout *target, ppStackThreadData *stack,
     12bool ppStackCombineFinal(pmReadout *target, ppStackThreadData *stack, psArray *covariances,
    1313                         ppStackOptions *options, pmConfig *config, bool full, bool normalise)
    1414{
     
    5656
    5757    // Sum covariance matrices
    58     if (options->covariances) {
     58    if (covariances) {
    5959        double sumWeights = 0.0;            // Sum of weights
    6060        for (int i = 0; i < options->num; i++) {
    6161            if (options->inputMask->data.U8[i]) {
    62                 psFree(options->covariances->data[i]);
    63                 options->covariances->data[i] = NULL;
     62                psFree(covariances->data[i]);
     63                covariances->data[i] = NULL;
    6464                continue;
    6565            }
    66             psKernel *covar = options->covariances->data[i]; // Covariance matrix
     66            psKernel *covar = covariances->data[i]; // Covariance matrix
    6767            if (!covar) {
    6868                continue;
     
    7373        }
    7474        if (sumWeights > 0.0) {
    75             target->covariance = psImageCovarianceSum(options->covariances);
     75            target->covariance = psImageCovarianceSum(covariances);
    7676            psBinaryOp(target->covariance->image, target->covariance->image, "/",
    7777                       psScalarAlloc(sumWeights, PS_TYPE_F32));
    78             psFree(options->covariances); options->covariances = NULL;
    7978            psImageCovarianceTransfer(target->variance, target->covariance);
    8079        }
  • branches/pap/ppStack/src/ppStackConvolve.c

    r25830 r25911  
    3939    options->weightings = psVectorAlloc(num, PS_TYPE_F32); // Combination weightings for images (1/noise^2)
    4040    psVectorInit(options->weightings, 0.0);
    41     options->covariances = psArrayAlloc(num); // Covariance matrices
     41    options->origCovars = psArrayAlloc(num);
     42    options->convCovars = psArrayAlloc(num); // Covariance matrices
    4243
    4344    psList *fpaList = psListAlloc(NULL); // List of input FPAs, for concept averaging
     
    7980        // Background subtraction, scaling and normalisation is performed automatically by the image matching
    8081        psTimerStart("PPSTACK_MATCH");
     82        options->origCovars->data[i] = psMemIncrRefCounter(readout->covariance);
    8183        if (!ppStackMatch(readout, options, i, config)) {
    8284            psErrorStackPrint(stderr, "Unable to match image %d --- ignoring.", i);
     
    8587            continue;
    8688        }
    87         options->covariances->data[i] = psMemIncrRefCounter(readout->covariance);
     89        options->convCovars->data[i] = psMemIncrRefCounter(readout->covariance);
    8890
    8991        if (options->stats) {
  • branches/pap/ppStack/src/ppStackLoop.c

    r25830 r25911  
    9797    // Final combination
    9898    psTrace("ppStack", 2, "Final stack of convolved images....\n");
    99     if (!ppStackCombineFinal(options->outRO, stack, options, config, false, false)) {
     99    if (!ppStackCombineFinal(options->outRO, stack, options->convCovars, options, config, false, false)) {
    100100        psError(PS_ERR_UNKNOWN, false, "Unable to perform final combination.");
    101101        psFree(stack);
     
    132132        }
    133133        psTrace("ppStack", 2, "Stack of unconvolved images....\n");
    134         if (!ppStackCombineFinal(options->unconvRO, stack, options, config, true, true)) {
     134        if (!ppStackCombineFinal(options->unconvRO, stack, options->origCovars, options, config, true, true)) {
    135135            psError(PS_ERR_UNKNOWN, false, "Unable to perform unconvolved combination.");
    136136            psFree(stack);
  • branches/pap/ppStack/src/ppStackLoop.h

    r25830 r25911  
    5858    pmReadout *target,                  // Target readout
    5959    ppStackThreadData *stack,           // Stack
     60    psArray *covariances,               // Covariances
    6061    ppStackOptions *options,            // Options
    6162    pmConfig *config,                   // Configuration
  • branches/pap/ppStack/src/ppStackOptions.c

    r25824 r25911  
    1515    psFree(options->origMasks);
    1616    psFree(options->origVariances);
     17    psFree(options->origCovars);
    1718    psFree(options->convImages);
    1819    psFree(options->convMasks);
     
    2728    psFree(options->matchChi2);
    2829    psFree(options->weightings);
    29     psFree(options->covariances);
     30    psFree(options->convCovars);
    3031    psFree(options->outRO);
    3132    psFree(options->unconvRO);
     
    4647    options->origMasks = NULL;
    4748    options->origVariances = NULL;
     49    options->origCovars = NULL;
    4850    options->convImages = NULL;
    4951    options->convMasks = NULL;
     
    6163    options->matchChi2 = NULL;
    6264    options->weightings = NULL;
    63     options->covariances = NULL;
     65    options->convCovars = NULL;
    6466    options->outRO = NULL;
    6567    options->unconvRO = NULL;
  • branches/pap/ppStack/src/ppStackOptions.h

    r25824 r25911  
    1313    psArray *origImages, *origMasks, *origVariances; // Filenames of the original images
    1414    psArray *convImages, *convMasks, *convVariances; // Filenames for the temporary convolved images
     15    psArray *origCovars;                // Original covariances matrices
    1516    int num;                            // Number of inputs
    1617    // Prepare
     
    2728    psVector *matchChi2;                // chi^2 for stamps from matching
    2829    psVector *weightings;               // Combination weightings for images (1/noise^2)
    29     psArray *covariances;                 // Convolved covariance matrices
     30    psArray *convCovars;                // Convolved covariance matrices
    3031    // Combine initial
    3132    pmReadout *outRO;                   // Output readout
  • branches/pap/ppStack/src/ppStackThread.c

    r25830 r25911  
    6464    const psArray *imageNames = conv ? options->convImages : options->origImages; // Names of images to read
    6565    const psArray *maskNames = conv ? options->convMasks : options->origMasks; // Names of masks to read
    66     const psArray *varianceNames = conv ? options->convVariances : NULL; // Variance names
    67     const psArray *covariances = conv ? options->covariances : NULL; // Covariance matrices
     66    const psArray *varianceNames = conv ? options->convVariances : options->origVariances; // Variance names
     67    const psArray *covariances = conv ? options->convCovars : options->origCovars; // Covariance matrices
    6868
    6969    PS_ASSERT_ARRAY_NON_NULL(cells, NULL);
Note: See TracChangeset for help on using the changeset viewer.