Changeset 17783
- Timestamp:
- May 23, 2008, 2:40:16 PM (18 years ago)
- Location:
- trunk/psModules/src/imcombine
- Files:
-
- 4 edited
-
pmSubtraction.c (modified) (4 diffs)
-
pmSubtraction.h (modified) (2 diffs)
-
pmSubtractionMatch.c (modified) (3 diffs)
-
pmSubtractionMatch.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/imcombine/pmSubtraction.c
r17496 r17783 4 4 * @author GLG, MHPCC 5 5 * 6 * @version $Revision: 1.9 0$ $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 $ 8 8 * 9 9 * Copyright 2004-2007 Institute for Astronomy, University of Hawaii … … 493 493 494 494 495 int pmSubtractionRejectStamps(pmSubtractionStampList *stamps, const psVector *deviations, 496 psImage *subMask, float sigmaRej, int footprint) 495 int pmSubtractionRejectStamps(float *rms, int *num, pmSubtractionStampList *stamps, 496 const psVector *deviations, psImage *subMask, float sigmaRej, 497 int footprint) 497 498 { 498 499 PM_ASSERT_SUBTRACTION_STAMP_LIST_NON_NULL(stamps, -1); … … 513 514 } 514 515 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 515 525 if (numStamps == 0) { 516 526 psError(PS_ERR_UNKNOWN, true, "No good stamps found."); … … 520 530 if (!isfinite(sigmaRej) || sigmaRej <= 0.0) { 521 531 // 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); 523 534 return 0; 524 535 } 525 536 526 float limit = sigmaRej * sqrt(totalSquareDev / (double)numStamps); // Limit on maximum deviation537 float limit = sigmaRej * totalSquareDev; // Limit on maximum deviation 527 538 psTrace("psModules.imcombine", 1, "Deviation limit: %f\n", limit); 528 539 -
trunk/psModules/src/imcombine/pmSubtraction.h
r16607 r17783 6 6 * @author GLG, MHPCC 7 7 * 8 * @version $Revision: 1.2 4$ $Name: not supported by cvs2svn $9 * @date $Date: 2008-0 2-22 19:50:56 $8 * @version $Revision: 1.25 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2008-05-24 00:40:16 $ 10 10 * Copyright 2004-207 Institute for Astronomy, University of Hawaii 11 11 */ … … 64 64 65 65 /// Reject stamps 66 int pmSubtractionRejectStamps(pmSubtractionStampList *stamps, ///< Stamps 66 int pmSubtractionRejectStamps(float *rms, ///< RMS deviation, to return 67 int *num, ///< Number of good stamps, to return 68 pmSubtractionStampList *stamps, ///< Stamps 67 69 const psVector *deviations, ///< Deviations for each stamp 68 70 psImage *subMask, ///< Subtraction mask -
trunk/psModules/src/imcombine/pmSubtractionMatch.c
r17367 r17783 344 344 memCheck("kernels"); 345 345 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 347 349 for (int k = 0; k < iter && numRejected != 0; k++) { 348 350 psLogMsg("psModules.imcombine", PS_LOG_INFO, "Iteration %d.", k); … … 379 381 380 382 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); 382 385 if (numRejected < 0) { 383 386 psError(PS_ERR_UNKNOWN, false, "Unable to reject stamps."); … … 401 404 goto MATCH_ERROR; 402 405 } 403 pmSubtractionRejectStamps(stamps, deviations, subMask, NAN, footprint); 406 pmSubtractionRejectStamps(&rmsStamps, &numStamps, stamps, deviations, 407 subMask, NAN, footprint); 404 408 psFree(deviations); 405 409 } 406 410 psFree(stamps); 407 411 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 } 408 425 409 426 memCheck("solution"); -
trunk/psModules/src/imcombine/pmSubtractionMatch.h
r17297 r17783 12 12 #define PM_SUBTRACTION_ANALYSIS_MODE "SUBTRACTION.MODE" // Name of subtraction mode in the analysis metadata 13 13 #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 15 16 16 17 /// Match two images … … 45 46 psMaskType maskBlank, ///< Mask for blank region 46 47 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 48 49 ); 49 50
Note:
See TracChangeset
for help on using the changeset viewer.
