Changeset 27040 for trunk/psModules/src/imcombine/pmSubtractionMatch.c
- Timestamp:
- Feb 23, 2010, 1:08:20 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/imcombine/pmSubtractionMatch.c
r26980 r27040 197 197 } 198 198 199 200 /// Allocate images, as required 201 static void subtractionMatchAlloc(pmReadout *conv1, pmReadout *conv2, // Output readouts 202 const pmReadout *ro1, const pmReadout *ro2, // Input readouts 203 const psImage *subMask, // Subtraction mask 204 psImageMaskType maskBad, // Mask value for bad pixels 205 pmSubtractionMode subMode, // Subtraction mode 206 int numCols, int numRows // Size of image 207 ) 208 { 209 if (subMode == PM_SUBTRACTION_MODE_1 || subMode == PM_SUBTRACTION_MODE_UNSURE || 210 subMode == PM_SUBTRACTION_MODE_DUAL) { 211 if (!conv1->image) { 212 conv1->image = psImageAlloc(numCols, numRows, PS_TYPE_F32); 213 } 214 psImageInit(conv1->image, NAN); 215 if (ro1->variance) { 216 if (!conv1->variance) { 217 conv1->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32); 218 } 219 psImageInit(conv1->variance, NAN); 220 } 221 if (subMask) { 222 if (!conv1->mask) { 223 conv1->mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK); 224 } 225 psImageInit(conv1->mask, maskBad); 226 } 227 } 228 if (subMode == PM_SUBTRACTION_MODE_2 || subMode == PM_SUBTRACTION_MODE_UNSURE || 229 subMode == PM_SUBTRACTION_MODE_DUAL) { 230 if (!conv2->image) { 231 conv2->image = psImageAlloc(numCols, numRows, PS_TYPE_F32); 232 } 233 psImageInit(conv2->image, NAN); 234 if (ro2->variance) { 235 if (!conv2->variance) { 236 conv2->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32); 237 } 238 psImageInit(conv2->variance, NAN); 239 } 240 if (subMask) { 241 if (!conv2->mask) { 242 conv2->mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK); 243 } 244 psImageInit(conv2->mask, maskBad); 245 } 246 } 247 248 return; 249 } 250 251 199 252 static void subtractionAnalysisUpdate(pmReadout *conv1, pmReadout *conv2, // Convolved images 200 253 const psMetadata *analysis, // Analysis metadata … … 343 396 psMetadata *outHeader = psMetadataAlloc(); // Output header values 344 397 398 int numCols = ro1->image->numCols, numRows = ro1->image->numRows; // Size of image 399 subtractionMatchAlloc(conv1, conv2, ro1, ro2, subMask, maskBad, mode, numCols, numRows); 400 345 401 psTrace("psModules.imcombine", 2, "Convolving...\n"); 346 402 for (int i = 0; i < kernels->n; i++) { … … 515 571 stampThresh2 = threshold * bg->robustStdev; 516 572 psBinaryOp(ro2->image, ro2->image, "-", psScalarAlloc((float)bg->robustMedian, PS_TYPE_F32)); 517 }573 } 518 574 psFree(bg); 519 575 } 520 576 521 // Just in case the iso-kernel region doesn't cover the entire image... 522 if (subMode == PM_SUBTRACTION_MODE_1 || subMode == PM_SUBTRACTION_MODE_UNSURE || 523 subMode == PM_SUBTRACTION_MODE_DUAL) { 524 if (!conv1->image) { 525 conv1->image = psImageAlloc(numCols, numRows, PS_TYPE_F32); 526 } 527 psImageInit(conv1->image, NAN); 528 if (ro1->variance) { 529 if (!conv1->variance) { 530 conv1->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32); 531 } 532 psImageInit(conv1->variance, NAN); 533 } 534 if (subMask) { 535 if (!conv1->mask) { 536 conv1->mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK); 537 } 538 psImageInit(conv1->mask, maskBad); 539 } 540 } 541 if (subMode == PM_SUBTRACTION_MODE_2 || subMode == PM_SUBTRACTION_MODE_UNSURE || 542 subMode == PM_SUBTRACTION_MODE_DUAL) { 543 if (!conv2->image) { 544 conv2->image = psImageAlloc(numCols, numRows, PS_TYPE_F32); 545 } 546 psImageInit(conv2->image, NAN); 547 if (ro2->variance) { 548 if (!conv2->variance) { 549 conv2->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32); 550 } 551 psImageInit(conv2->variance, NAN); 552 } 553 if (subMask) { 554 if (!conv2->mask) { 555 conv2->mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK); 556 } 557 psImageInit(conv2->mask, maskBad); 558 } 559 } 560 577 subtractionMatchAlloc(conv1, conv2, ro1, ro2, subMask, maskBad, subMode, numCols, numRows); 561 578 562 579 // Iterate over iso-kernel regions
Note:
See TracChangeset
for help on using the changeset viewer.
