IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 25806


Ignore:
Timestamp:
Oct 7, 2009, 5:39:41 PM (17 years ago)
Author:
Paul Price
Message:

Only combine covariances if they're there to combine.

File:
1 edited

Legend:

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

    r25096 r25806  
    4848
    4949    // Sum covariance matrices
    50     double sumWeights = 0.0;            // Sum of weights
    51     for (int i = 0; i < options->num; i++) {
    52         if (options->inputMask->data.U8[i]) {
    53             psFree(options->covariances->data[i]);
    54             options->covariances->data[i] = NULL;
    55             continue;
     50    if (options->covariances) {
     51        double sumWeights = 0.0;            // Sum of weights
     52        for (int i = 0; i < options->num; i++) {
     53            if (options->inputMask->data.U8[i]) {
     54                psFree(options->covariances->data[i]);
     55                options->covariances->data[i] = NULL;
     56                continue;
     57            }
     58            psKernel *covar = options->covariances->data[i]; // Covariance matrix
     59            if (!covar) {
     60                continue;
     61            }
     62            float weight = options->weightings->data.F32[i]; // Weight to apply
     63            psBinaryOp(covar->image, covar->image, "*", psScalarAlloc(weight, PS_TYPE_F32));
     64            sumWeights += weight;
    5665        }
    57         psKernel *covar = options->covariances->data[i]; // Covariance matrix
    58         if (!covar) {
    59             continue;
     66        if (sumWeights > 0.0) {
     67            pmReadout *outRO = options->outRO;  // Output readout
     68            outRO->covariance = psImageCovarianceSum(options->covariances);
     69            psBinaryOp(outRO->covariance->image, outRO->covariance->image, "/",
     70                       psScalarAlloc(sumWeights, PS_TYPE_F32));
     71            psFree(options->covariances); options->covariances = NULL;
     72            psImageCovarianceTransfer(outRO->variance, outRO->covariance);
    6073        }
    61         float weight = options->weightings->data.F32[i]; // Weight to apply
    62         psBinaryOp(covar->image, covar->image, "*", psScalarAlloc(weight, PS_TYPE_F32));
    63         sumWeights += weight;
    64     }
    65     if (sumWeights > 0.0) {
    66         pmReadout *outRO = options->outRO;  // Output readout
    67         outRO->covariance = psImageCovarianceSum(options->covariances);
    68         psBinaryOp(outRO->covariance->image, outRO->covariance->image, "/",
    69                    psScalarAlloc(sumWeights, PS_TYPE_F32));
    70         psFree(options->covariances); options->covariances = NULL;
    71         psImageCovarianceTransfer(outRO->variance, outRO->covariance);
    7274    }
    7375
Note: See TracChangeset for help on using the changeset viewer.