Changeset 25158 for branches/czw_branch/cleanup/psModules/src/imcombine
- Timestamp:
- Aug 20, 2009, 12:42:13 PM (17 years ago)
- Location:
- branches/czw_branch/cleanup
- Files:
-
- 4 edited
-
. (modified) (1 prop)
-
psModules/src/imcombine/pmSubtractionAnalysis.c (modified) (1 diff)
-
psModules/src/imcombine/pmSubtractionAnalysis.h (modified) (1 diff)
-
psModules/src/imcombine/pmSubtractionMatch.c (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/czw_branch/cleanup
- Property svn:mergeinfo changed
/trunk merged: 25052-25060,25063-25068,25070-25084,25087,25156
- Property svn:mergeinfo changed
-
branches/czw_branch/cleanup/psModules/src/imcombine/pmSubtractionAnalysis.c
r25148 r25158 42 42 psFree(subRegion); 43 43 44 psMetadataAddStr(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_REGION, PS_META_DUPLICATE_OK, 44 psMetadataAddPtr(header, PS_LIST_TAIL, PM_SUBTRACTION_ANALYSIS_REGION, 45 PS_DATA_REGION | PS_META_DUPLICATE_OK, 45 46 "Region over which subtraction was performed", string); 46 47 psFree(string); -
branches/czw_branch/cleanup/psModules/src/imcombine/pmSubtractionAnalysis.h
r21149 r25158 27 27 bool pmSubtractionAnalysis( 28 28 psMetadata *analysis, ///< Metadata container for QA information 29 psMetadata *header, ///< Metadata container for QA information to put in header 29 30 pmSubtractionKernels *kernels, ///< Kernels 30 31 psRegion *region, ///< Region for subtraction -
branches/czw_branch/cleanup/psModules/src/imcombine/pmSubtractionMatch.c
r25148 r25158 10 10 #include "pmHDU.h" 11 11 #include "pmFPA.h" 12 #include "pmHDUUtils.h" 12 13 #include "pmSubtractionParams.h" 13 14 #include "pmSubtractionKernels.h" … … 58 59 59 60 60 static bool getStamps(pmSubtractionStampList **stamps, // Stamps to read61 const pmReadout *ro1, // Readout 162 const pmReadout *ro2, // Readout 263 const psImage *subMask, // Mask for subtraction, or NULL64 psImage *variance, // Variance map65 const psRegion *region, // Region of interest, or NULL66 float thresh1, // Threshold for stamp finding on readout 167 float thresh2, // Threshold for stamp finding on readout 268 float stampSpacing, // Spacing between stamps69 int size, // Kernel half-size70 int footprint, // Convolution footprint for stamps71 pmSubtractionMode mode // Mode for subtraction61 static bool subtractionGetStamps(pmSubtractionStampList **stamps, // Stamps to read 62 const pmReadout *ro1, // Readout 1 63 const pmReadout *ro2, // Readout 2 64 const psImage *subMask, // Mask for subtraction, or NULL 65 psImage *variance, // Variance map 66 const psRegion *region, // Region of interest, or NULL 67 float thresh1, // Threshold for stamp finding on readout 1 68 float thresh2, // Threshold for stamp finding on readout 2 69 float stampSpacing, // Spacing between stamps 70 int size, // Kernel half-size 71 int footprint, // Convolution footprint for stamps 72 pmSubtractionMode mode // Mode for subtraction 72 73 ) 73 74 { … … 163 164 } 164 165 166 static void subtractionAnalysisUpdate(pmReadout *conv1, pmReadout *conv2, // Convolved images 167 const psMetadata *analysis, // Analysis metadata 168 const psMetadata *header // Header metadata 169 ) 170 { 171 if (conv1) { 172 conv1->analysis = psMetadataCopy(conv1->analysis, analysis); 173 } 174 if (conv2) { 175 conv2->analysis = psMetadataCopy(conv2->analysis, analysis); 176 } 177 178 if (conv1 && conv1->parent) { 179 pmHDU *hdu = pmHDUFromCell(conv1->parent); 180 if (hdu) { 181 hdu->header = psMetadataCopy(hdu->header, header); 182 } 183 } 184 if (conv2 && conv2->parent) { 185 pmHDU *hdu = pmHDUFromCell(conv2->parent); 186 if (hdu) { 187 hdu->header = psMetadataCopy(hdu->header, header); 188 } 189 } 190 191 return; 192 } 165 193 166 194 … … 253 281 254 282 psMetadata *outAnalysis = psMetadataAlloc(); // Output analysis values 283 psMetadata *outHeader = psMetadataAlloc(); // Output header values 255 284 256 285 psTrace("psModules.imcombine", 2, "Convolving...\n"); … … 259 288 psRegion *region = regions->data[i]; // Region of interest 260 289 261 if (!pmSubtractionAnalysis(outAnalysis, kernel, region, ro1->image->numCols, ro1->image->numRows)) { 290 if (!pmSubtractionAnalysis(outAnalysis, outHeader, kernel, region, 291 ro1->image->numCols, ro1->image->numRows)) { 262 292 psError(PS_ERR_UNKNOWN, false, "Unable to generate QA data"); 263 293 psFree(outAnalysis); 294 psFree(outHeader); 264 295 psFree(subMask); 265 296 psFree(kernels); … … 272 303 psError(PS_ERR_UNKNOWN, false, "Unable to convolve image."); 273 304 psFree(outAnalysis); 305 psFree(outHeader); 274 306 psFree(subMask); 275 307 psFree(kernels); … … 283 315 psFree(regions); 284 316 285 if (conv1) { 286 psMetadataCopy(conv1->analysis, outAnalysis); 287 } 288 if (conv2) { 289 psMetadataCopy(conv2->analysis, outAnalysis); 290 } 317 subtractionAnalysisUpdate(conv1, conv2, outAnalysis, outHeader); 291 318 psFree(outAnalysis); 319 psFree(outHeader); 292 320 293 321 return true; … … 369 397 pmSubtractionKernels *kernels = NULL; // Kernel basis functions 370 398 psMetadata *analysis = psMetadataAlloc(); // QA data 399 psMetadata *header = psMetadataAlloc(); // QA data for header 371 400 372 401 int numCols = ro1->image->numCols, numRows = ro1->image->numRows; // Image dimensions … … 442 471 // We get the stamps here; we will also attempt to get stamps at the first iteration, but it 443 472 // doesn't matter. 444 if (! getStamps(&stamps, ro1, ro2, subMask, variance, NULL, stampThresh1, stampThresh2,473 if (!subtractionGetStamps(&stamps, ro1, ro2, subMask, variance, NULL, stampThresh1, stampThresh2, 445 474 stampSpacing, size, footprint, subMode)) { 446 475 goto MATCH_ERROR; … … 508 537 psLogMsg("psModules.imcombine", PS_LOG_INFO, "Iteration %d.", k); 509 538 510 if (!getStamps(&stamps, ro1, ro2, subMask, variance, region, stampThresh1, stampThresh2, 511 stampSpacing, size, footprint, subMode)) { 539 if (!subtractionGetStamps(&stamps, ro1, ro2, subMask, variance, region, 540 stampThresh1, stampThresh2, stampSpacing, 541 size, footprint, subMode)) { 512 542 goto MATCH_ERROR; 513 543 } … … 569 599 memCheck("solution"); 570 600 571 if (!pmSubtractionAnalysis(analysis, kernels, region, numCols, numRows)) {601 if (!pmSubtractionAnalysis(analysis, header, kernels, region, numCols, numRows)) { 572 602 psError(PS_ERR_UNKNOWN, false, "Unable to generate QA data"); 573 603 goto MATCH_ERROR; … … 605 635 memCheck("convolution"); 606 636 607 if (conv1) { 608 psMetadataCopy(conv1->analysis, analysis); 609 } 610 if (conv2) { 611 psMetadataCopy(conv2->analysis, analysis); 612 } 637 subtractionAnalysisUpdate(conv1, conv2, analysis, header); 613 638 psFree(analysis); 639 psFree(header); 614 640 615 641 #ifdef TESTING … … 633 659 MATCH_ERROR: 634 660 psFree(analysis); 661 psFree(header); 635 662 psFree(region); 636 663 psFree(regionString);
Note:
See TracChangeset
for help on using the changeset viewer.
