Changeset 20505
- Timestamp:
- Oct 31, 2008, 5:36:01 PM (18 years ago)
- Location:
- trunk/psModules/src/imcombine
- Files:
-
- 5 edited
-
pmStackReject.c (modified) (1 diff)
-
pmSubtraction.c (modified) (5 diffs)
-
pmSubtraction.h (modified) (2 diffs)
-
pmSubtractionMatch.c (modified) (3 diffs)
-
pmSubtractionMatch.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/imcombine/pmStackReject.c
r20420 r20505 168 168 psRegion *region = subRegions->data[i]; // Region of interest 169 169 pmSubtractionKernels *kernels = subKernels->data[i]; // Kernel of interest 170 if (!pmSubtractionConvolve(convRO, NULL, inRO, NULL, NULL, 0, 0, 1.0, region, kernels, false, true)) { 170 if (!pmSubtractionConvolve(convRO, NULL, inRO, NULL, NULL, 0, 0, 1.0, NAN, 171 region, kernels, false, true)) { 171 172 psError(PS_ERR_UNKNOWN, false, "Unable to convolve mask image in region %d.", i); 172 173 psFree(convRO); -
trunk/psModules/src/imcombine/pmSubtraction.c
r20466 r20505 29 29 #define PIXEL_LIST_BUFFER 100 // Number of entries to add to pixel list at a time 30 30 #define MIN_SAMPLE_STATS 7 // Minimum number to use sample statistics; otherwise use quartiles 31 32 //#define SYS_ERROR 0.00 // Relative error in derived convolution kernel pixels33 31 34 32 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// … … 459 457 460 458 // Generate an image that can be used to track systematic errors 461 static psImage *subtractionSysErrImage(const psImage *image // Image from which to make sys err image 459 static psImage *subtractionSysErrImage(const psImage *image, // Image from which to make sys err image 460 float sysError // Relative systematic error 462 461 ) 463 462 { 464 #ifndef SYS_ERROR 465 return NULL; 466 #else 463 if (!isfinite(sysError) || sysError == 0.0) { 464 return NULL; 465 } 466 467 467 int numCols = image->numCols, numRows = image->numRows; // Size of image 468 468 psImage *sys = psImageAlloc(numCols, numRows, PS_TYPE_F32); // Systematic error image 469 469 470 float sysError2 = PS_SQR(sysError); // Square of the systematic error 470 471 for (int y = 0; y < numRows; y++) { 471 472 for (int x = 0; x < numCols; x++) { 472 sys->data.F32[y][x] = PS_SQR(image->data.F32[y][x]) * PS_SQR(SYS_ERROR);473 sys->data.F32[y][x] = PS_SQR(image->data.F32[y][x]) * sysError2; 473 474 } 474 475 } 475 476 476 477 return sys; 477 #endif478 478 } 479 479 … … 1089 1089 bool pmSubtractionConvolve(pmReadout *out1, pmReadout *out2, const pmReadout *ro1, const pmReadout *ro2, 1090 1090 psImage *subMask, psMaskType maskBad, psMaskType maskPoor, float poorFrac, 1091 const psRegion *region, const pmSubtractionKernels *kernels,1091 float sysError, const psRegion *region, const pmSubtractionKernels *kernels, 1092 1092 bool doBG, bool useFFT) 1093 1093 { … … 1197 1197 psImage *sys1 = NULL, *sys2 = NULL; // Systematic error images 1198 1198 if (kernels->mode == PM_SUBTRACTION_MODE_1 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) { 1199 sys1 = subtractionSysErrImage(ro1->image );1199 sys1 = subtractionSysErrImage(ro1->image, sysError); 1200 1200 if (threaded && sys1) { 1201 1201 psMutexInit(sys1); … … 1203 1203 } 1204 1204 if (kernels->mode == PM_SUBTRACTION_MODE_2 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) { 1205 sys2 = subtractionSysErrImage(ro2->image );1205 sys2 = subtractionSysErrImage(ro2->image, sysError); 1206 1206 if (threaded && sys2) { 1207 1207 psMutexInit(sys2); -
trunk/psModules/src/imcombine/pmSubtraction.h
r19532 r20505 6 6 * @author GLG, MHPCC 7 7 * 8 * @version $Revision: 1.3 2$ $Name: not supported by cvs2svn $9 * @date $Date: 2008- 09-12 04:12:42$8 * @version $Revision: 1.33 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2008-11-01 03:36:01 $ 10 10 * Copyright 2004-207 Institute for Astronomy, University of Hawaii 11 11 */ … … 106 106 psMaskType maskPoor, ///< Mask value to give poor pixels 107 107 float poorFrac, ///< Fraction for "poor" 108 float sysError, ///< Relative systematic error 108 109 const psRegion *region, ///< Region to convolve (or NULL) 109 110 const pmSubtractionKernels *kernels, ///< Kernel parameters -
trunk/psModules/src/imcombine/pmSubtractionMatch.c
r20465 r20505 98 98 int inner, int ringsOrder, int binning, float penalty, 99 99 bool optimum, const psVector *optFWHMs, int optOrder, float optThreshold, 100 int iter, float rej, psMaskType maskVal, psMaskType maskBad, psMaskType maskPoor,101 float poorFrac, float badFrac, pmSubtractionMode subMode)100 int iter, float rej, float sysError, psMaskType maskVal, psMaskType maskBad, 101 psMaskType maskPoor, float poorFrac, float badFrac, pmSubtractionMode subMode) 102 102 { 103 103 if (subMode != PM_SUBTRACTION_MODE_2) { … … 167 167 PS_ASSERT_INT_POSITIVE(iter, false); 168 168 PS_ASSERT_FLOAT_LARGER_THAN(rej, 0.0, false); 169 if (isfinite(sysError)) { 170 PS_ASSERT_FLOAT_LARGER_THAN_OR_EQUAL(sysError, 0.0, NULL); 171 PS_ASSERT_FLOAT_LESS_THAN(sysError, 1.0, NULL); 172 } 169 173 // Don't care about maskVal 170 174 // Don't care about maskBad … … 393 397 psTrace("psModules.imcombine", 2, "Convolving...\n"); 394 398 if (!pmSubtractionConvolve(conv1, conv2, ro1, ro2, subMask, maskBad, maskPoor, poorFrac, 395 region, kernels, true, useFFT)) {399 sysError, region, kernels, true, useFFT)) { 396 400 psError(PS_ERR_UNKNOWN, false, "Unable to convolve image."); 397 401 goto MATCH_ERROR; -
trunk/psModules/src/imcombine/pmSubtractionMatch.h
r20049 r20505 38 38 int iter, ///< Rejection iterations 39 39 float rej, ///< Rejection threshold 40 float sysError, ///< Relative systematic error 40 41 psMaskType maskVal, ///< Value to mask for input 41 42 psMaskType maskBad, ///< Mask for output bad pixels
Note:
See TracChangeset
for help on using the changeset viewer.
