IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 17783


Ignore:
Timestamp:
May 23, 2008, 2:40:16 PM (18 years ago)
Author:
Paul Price
Message:

Adding additional analysis metadata.

Location:
trunk/psModules/src/imcombine
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/imcombine/pmSubtraction.c

    r17496 r17783  
    44 *  @author GLG, MHPCC
    55 *
    6  *  @version $Revision: 1.90 $ $Name: not supported by cvs2svn $
    7  *  @date $Date: 2008-05-01 19:20:51 $
     6 *  @version $Revision: 1.91 $ $Name: not supported by cvs2svn $
     7 *  @date $Date: 2008-05-24 00:40:16 $
    88 *
    99 *  Copyright 2004-2007 Institute for Astronomy, University of Hawaii
     
    493493
    494494
    495 int pmSubtractionRejectStamps(pmSubtractionStampList *stamps, const psVector *deviations,
    496                               psImage *subMask, float sigmaRej, int footprint)
     495int pmSubtractionRejectStamps(float *rms, int *num, pmSubtractionStampList *stamps,
     496                              const psVector *deviations, psImage *subMask, float sigmaRej,
     497                              int footprint)
    497498{
    498499    PM_ASSERT_SUBTRACTION_STAMP_LIST_NON_NULL(stamps, -1);
     
    513514    }
    514515
     516    totalSquareDev = sqrt(totalSquareDev / (double)numStamps); // Convert to RMS
     517
     518    if (rms) {
     519        *rms = totalSquareDev;
     520    }
     521    if (num) {
     522        *num = numStamps;
     523    }
     524
    515525    if (numStamps == 0) {
    516526        psError(PS_ERR_UNKNOWN, true, "No good stamps found.");
     
    520530    if (!isfinite(sigmaRej) || sigmaRej <= 0.0) {
    521531        // User just wanted to calculate and record the RMS for posterity
    522         psLogMsg("psModules.imcombine", PS_LOG_INFO, "RMS deviation: %f", sqrt(totalSquareDev / numStamps));
     532        psLogMsg("psModules.imcombine", PS_LOG_INFO, "RMS deviation from %d stamps: %lf",
     533                 numStamps, totalSquareDev);
    523534        return 0;
    524535    }
    525536
    526     float limit = sigmaRej * sqrt(totalSquareDev / (double)numStamps); // Limit on maximum deviation
     537    float limit = sigmaRej * totalSquareDev; // Limit on maximum deviation
    527538    psTrace("psModules.imcombine", 1, "Deviation limit: %f\n", limit);
    528539
  • trunk/psModules/src/imcombine/pmSubtraction.h

    r16607 r17783  
    66 * @author GLG, MHPCC
    77 *
    8  * @version $Revision: 1.24 $ $Name: not supported by cvs2svn $
    9  * @date $Date: 2008-02-22 19:50:56 $
     8 * @version $Revision: 1.25 $ $Name: not supported by cvs2svn $
     9 * @date $Date: 2008-05-24 00:40:16 $
    1010 * Copyright 2004-207 Institute for Astronomy, University of Hawaii
    1111 */
     
    6464
    6565/// Reject stamps
    66 int pmSubtractionRejectStamps(pmSubtractionStampList *stamps, ///< Stamps
     66int pmSubtractionRejectStamps(float *rms, ///< RMS deviation, to return
     67                              int *num, ///< Number of good stamps, to return
     68                              pmSubtractionStampList *stamps, ///< Stamps
    6769                              const psVector *deviations, ///< Deviations for each stamp
    6870                              psImage *subMask, ///< Subtraction mask
  • trunk/psModules/src/imcombine/pmSubtractionMatch.c

    r17367 r17783  
    344344            memCheck("kernels");
    345345
    346             int numRejected = -1;               // Number of rejected stamps in each iteration
     346            float rmsStamps = NAN;      // RMS for stamps
     347            int numStamps = 0;          // Number of good stamps
     348            int numRejected = -1;       // Number of rejected stamps in each iteration
    347349            for (int k = 0; k < iter && numRejected != 0; k++) {
    348350                psLogMsg("psModules.imcombine", PS_LOG_INFO, "Iteration %d.", k);
     
    379381
    380382                psTrace("psModules.imcombine", 3, "Rejecting stamps...\n");
    381                 numRejected = pmSubtractionRejectStamps(stamps, deviations, subMask, rej, footprint);
     383                numRejected = pmSubtractionRejectStamps(&rmsStamps, &numStamps, stamps, deviations,
     384                                                        subMask, rej, footprint);
    382385                if (numRejected < 0) {
    383386                    psError(PS_ERR_UNKNOWN, false, "Unable to reject stamps.");
     
    401404                    goto MATCH_ERROR;
    402405                }
    403                 pmSubtractionRejectStamps(stamps, deviations, subMask, NAN, footprint);
     406                pmSubtractionRejectStamps(&rmsStamps, &numStamps, stamps, deviations,
     407                                          subMask, NAN, footprint);
    404408                psFree(deviations);
    405409            }
    406410            psFree(stamps);
    407411            stamps = NULL;
     412
     413            if (mode == PM_SUBTRACTION_MODE_1 || mode == PM_SUBTRACTION_MODE_DUAL) {
     414                psMetadataAddS32(conv1->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_STAMPS_NUM,
     415                                 PS_META_DUPLICATE_OK, "Number of good stamps", numStamps);
     416                psMetadataAddF32(conv1->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_STAMPS_RMS,
     417                                 PS_META_DUPLICATE_OK, "RMS deviation of stamps", rmsStamps);
     418            }
     419            if (mode == PM_SUBTRACTION_MODE_2 || mode == PM_SUBTRACTION_MODE_DUAL) {
     420                psMetadataAddS32(conv2->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_STAMPS_NUM,
     421                                 PS_META_DUPLICATE_OK, "Number of good stamps", numStamps);
     422                psMetadataAddF32(conv2->analysis, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_STAMPS_RMS,
     423                                 PS_META_DUPLICATE_OK, "RMS deviation of stamps", rmsStamps);
     424            }
    408425
    409426            memCheck("solution");
  • trunk/psModules/src/imcombine/pmSubtractionMatch.h

    r17297 r17783  
    1212#define PM_SUBTRACTION_ANALYSIS_MODE "SUBTRACTION.MODE" // Name of subtraction mode in the analysis metadata
    1313#define PM_SUBTRACTION_ANALYSIS_REGION "SUBTRACTION.REGION" // Name of subtraction region in the analysis MD
    14 
     14#define PM_SUBTRACTION_ANALYSIS_STAMPS_RMS "SUBTRACTION.RMS" // Name of stamp rms in the analysis metadata
     15#define PM_SUBTRACTION_ANALYSIS_STAMPS_NUM "SUBTRACTION.NUM"// Name of the number of stamps in the analysis MD
    1516
    1617/// Match two images
     
    4546                        psMaskType maskBlank, ///< Mask for blank region
    4647                        float badFrac,   ///< Maximum fraction of bad input pixels to accept
    47                         pmSubtractionMode mode ///< Mode of subtraction
     48                        pmSubtractionMode mode ///< Mode of subtraction; may be modified
    4849    );
    4950
Note: See TracChangeset for help on using the changeset viewer.