Changeset 28300 for trunk/ppBackground/src/ppBackgroundRestore.c
- Timestamp:
- Jun 10, 2010, 2:45:18 PM (16 years ago)
- File:
-
- 1 edited
-
trunk/ppBackground/src/ppBackgroundRestore.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppBackground/src/ppBackgroundRestore.c
r28296 r28300 6 6 #include "ppBackground.h" 7 7 8 bool ppBackgroundRestore(pmChip * out, const pmChip *chip, const pmChip *background, const pmChip *pattern,8 bool ppBackgroundRestore(pmChip *chip, const pmChip *background, const pmChip *pattern, 9 9 const pmFPAview *oldView, pmConfig *config) 10 10 { 11 PS_ASSERT_PTR_NON_NULL(out, false);12 11 PS_ASSERT_PTR_NON_NULL(chip, false); 13 12 PS_ASSERT_PTR_NON_NULL(oldView, false); … … 18 17 view->readout = 0; 19 18 20 pmReadout * inRO= pmFPAviewThisReadout(view, chip->parent);21 if (! inRO || !inRO->data_exists) {19 pmReadout *ro = pmFPAviewThisReadout(view, chip->parent); 20 if (!ro || !ro->data_exists) { 22 21 psError(PPBACKGROUND_ERR_CONFIG, true, "Readout has no data"); 23 22 return false; 24 23 } 25 const psImage *inImage = inRO->image, *inMask = inRO->mask; // Input image 26 int numCols = inImage->numCols, numRows = inImage->numRows; // Size of image 27 28 pmReadout *outRO = pmFPAviewThisReadout(view, out->parent); 29 if (!outRO) { 30 pmCell *outCell = pmFPAviewThisCell(view, out->parent); 31 outRO = pmReadoutAlloc(outCell); 32 psFree(outRO); // Drop reference 33 } 34 outRO->image = psImageCopy(outRO->image, inImage, PS_TYPE_F32); 35 outRO->mask = psImageCopy(outRO->mask, inMask, PS_TYPE_IMAGE_MASK); 36 psImage *outImage = outRO->image, *outMask = outRO->mask; // Output image 24 const psImage *image = ro->image, *mask = ro->mask; // Input image 25 int numCols = image->numCols, numRows = image->numRows; // Size of image 37 26 38 27 if (background) { 39 28 pmReadout *bgRO = pmFPAviewThisReadout(view, background->parent); // Readout with background 40 psImageBinning *binning = psphotBackgroundBinning( outImage, config);29 psImageBinning *binning = psphotBackgroundBinning(image, config); 41 30 if (!binning) { 42 31 psError(psErrorCodeLast(), false, "Unable to find background binning"); … … 60 49 for (int y = 0; y < numRows; y++) { 61 50 for (int x = 0; x < numCols; x++) { 62 outImage->data.F32[y][x] += bgImage->data.F32[y][x];51 image->data.F32[y][x] += bgImage->data.F32[y][x]; 63 52 } 64 53 } … … 72 61 for (int y = 0; y < numRows; y++) { 73 62 for (int x = 0; x < numCols; x++) { 74 outImage->data.F32[y][x]= patternImage->data.F32[y][x];75 outMask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= patternMask->data.PS_TYPE_IMAGE_MASK_DATA[y][x];63 image->data.F32[y][x] -= patternImage->data.F32[y][x]; 64 mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= patternMask->data.PS_TYPE_IMAGE_MASK_DATA[y][x]; 76 65 } 77 66 } 78 67 } 79 68 80 outRO->data_exists = true;81 outRO->parent->data_exists = true;82 outRO->parent->parent->data_exists = true;69 ro->data_exists = true; 70 ro->parent->data_exists = true; 71 ro->parent->parent->data_exists = true; 83 72 84 73 return true;
Note:
See TracChangeset
for help on using the changeset viewer.
