Changeset 21079
- Timestamp:
- Jan 1, 2009, 7:13:00 PM (18 years ago)
- Location:
- branches/eam_branch_20081230/psModules/src
- Files:
-
- 53 edited
-
astrom/pmAstrometryObjects.c (modified) (2 diffs)
-
camera/pmCellSquish.c (modified) (3 diffs)
-
camera/pmCellSquish.h (modified) (1 diff)
-
camera/pmFPABin.c (modified) (2 diffs)
-
camera/pmFPABin.h (modified) (1 diff)
-
camera/pmFPAMaskWeight.c (modified) (23 diffs)
-
camera/pmFPAMaskWeight.h (modified) (11 diffs)
-
camera/pmFPAMosaic.c (modified) (7 diffs)
-
camera/pmFPAMosaic.h (modified) (3 diffs)
-
camera/pmFPA_JPEG.c (modified) (2 diffs)
-
camera/pmHDU.c (modified) (3 diffs)
-
camera/pmReadoutStack.c (modified) (4 diffs)
-
camera/pmReadoutStack.h (modified) (2 diffs)
-
concepts/pmConceptsStandard.c (modified) (2 diffs)
-
config/pmConfigMask.c (modified) (27 diffs)
-
config/pmConfigMask.h (modified) (3 diffs)
-
detrend/pmBias.c (modified) (2 diffs)
-
detrend/pmDark.c (modified) (16 diffs)
-
detrend/pmDark.h (modified) (3 diffs)
-
detrend/pmFlatField.c (modified) (6 diffs)
-
detrend/pmFlatField.h (modified) (3 diffs)
-
detrend/pmFlatNormalize.c (modified) (12 diffs)
-
detrend/pmFringeStats.c (modified) (23 diffs)
-
detrend/pmFringeStats.h (modified) (3 diffs)
-
detrend/pmMaskBadPixels.c (modified) (8 diffs)
-
detrend/pmMaskBadPixels.h (modified) (4 diffs)
-
detrend/pmOverscan.c (modified) (2 diffs)
-
detrend/pmRemnance.c (modified) (5 diffs)
-
detrend/pmRemnance.h (modified) (1 diff)
-
detrend/pmShifts.c (modified) (1 diff)
-
detrend/pmShifts.h (modified) (1 diff)
-
detrend/pmShutterCorrection.h (modified) (7 diffs)
-
detrend/pmSkySubtract.c (modified) (9 diffs)
-
imcombine/pmImageCombine.c (modified) (15 diffs)
-
imcombine/pmStack.h (modified) (2 diffs)
-
imcombine/pmSubtraction.h (modified) (2 diffs)
-
imcombine/pmSubtractionMask.h (modified) (2 diffs)
-
imcombine/pmSubtractionMatch.h (modified) (1 diff)
-
objects/pmModel.h (modified) (5 diffs)
-
objects/pmPSF.h (modified) (2 diffs)
-
objects/pmPSFtry.c (modified) (4 diffs)
-
objects/pmPSFtry.h (modified) (3 diffs)
-
objects/pmResiduals.c (modified) (2 diffs)
-
objects/pmSource.h (modified) (3 diffs)
-
objects/pmSourceFitModel.c (modified) (2 diffs)
-
objects/pmSourceFitModel.h (modified) (3 diffs)
-
objects/pmSourceFitSet.h (modified) (2 diffs)
-
objects/pmSourceMatch.c (modified) (7 diffs)
-
objects/pmSourceMoments.c (modified) (4 diffs)
-
objects/pmSourcePhotometry.h (modified) (2 diffs)
-
objects/pmSourceSky.h (modified) (3 diffs)
-
objects/pmSourceVisual.c (modified) (1 diff)
-
objects/pmTrend2D.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branch_20081230/psModules/src/astrom/pmAstrometryObjects.c
r20801 r21079 8 8 * @author EAM, IfA 9 9 * 10 * @version $Revision: 1.42 $ $Name: not supported by cvs2svn $11 * @date $Date: 200 8-11-20 01:26:07$10 * @version $Revision: 1.42.6.1 $ $Name: not supported by cvs2svn $ 11 * @date $Date: 2009-01-02 05:13:00 $ 12 12 * 13 13 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 227 227 228 228 // constant errors 229 psVector *mask = psVectorAlloc (match->n, PS_TYPE_ U8);229 psVector *mask = psVectorAlloc (match->n, PS_TYPE_VECTOR_MASK); 230 230 psVectorInit (mask, 0); 231 231 -
branches/eam_branch_20081230/psModules/src/camera/pmCellSquish.c
r12696 r21079 12 12 13 13 14 bool pmCellSquish(pmCell *cell, ps MaskType maskVal, bool useShifts)14 bool pmCellSquish(pmCell *cell, psImageMaskType maskVal, bool useShifts) 15 15 { 16 16 PS_ASSERT_PTR_NON_NULL(cell, false); … … 116 116 psImage *squishImage = psImageAlloc(numCols, numRows, PS_TYPE_F32); // Squished image 117 117 psImageInit(squishImage, 0.0); 118 psImage *squishMask = psImageAlloc(numCols, numRows, PS_TYPE_ MASK); // Squished mask118 psImage *squishMask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK); // Squished mask 119 119 psImageInit(squishMask, 0); 120 120 … … 159 159 squishImage->data.F32[ySquish][xSquish] += image->data.F32[y][x]; 160 160 if (mask) { 161 squishMask->data.PS_TYPE_ MASK_DATA[ySquish][xSquish] |= mask->data.U8[y][x] & maskVal;161 squishMask->data.PS_TYPE_IMAGE_MASK_DATA[ySquish][xSquish] |= mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & maskVal; 162 162 } 163 163 } -
branches/eam_branch_20081230/psModules/src/camera/pmCellSquish.h
r12696 r21079 7 7 /// already have been read) and masks. 8 8 bool pmCellSquish(pmCell *cell, ///< Cell to have readouts combined 9 ps MaskType maskVal, ///< Value to be masked9 psImageMaskType maskVal, ///< Value to be masked 10 10 bool useShifts ///< Use the shifts when squishing? 11 11 ); -
branches/eam_branch_20081230/psModules/src/camera/pmFPABin.c
r20442 r21079 9 9 #include "pmFPABin.h" 10 10 11 bool pmReadoutRebin(pmReadout *out, const pmReadout *in, ps MaskType maskVal, int xBin, int yBin)11 bool pmReadoutRebin(pmReadout *out, const pmReadout *in, psImageMaskType maskVal, int xBin, int yBin) 12 12 { 13 13 PM_ASSERT_READOUT_NON_NULL(out, false); … … 50 50 for (int y = yStart; y < yStop; y++) { 51 51 for (int x = xStart; x < xStop; x++) { 52 if (inMask && (inMask->data.PS_TYPE_ MASK_DATA[y][x] & maskVal)) {52 if (inMask && (inMask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & maskVal)) { 53 53 continue; 54 54 } -
branches/eam_branch_20081230/psModules/src/camera/pmFPABin.h
r21072 r21079 9 9 bool pmReadoutRebin(pmReadout *out, ///< Output readout 10 10 const pmReadout *in,///< Input readout 11 ps MaskType maskVal, ///< Value to mask11 psImageMaskType maskVal, ///< Value to mask 12 12 int xBin, int yBin ///< Binning factors in x and y 13 13 ); -
branches/eam_branch_20081230/psModules/src/camera/pmFPAMaskWeight.c
r21072 r21079 42 42 continue; 43 43 } 44 masks->data[i] = psImageAlloc(image->numCols, image->numRows, PS_TYPE_ U8);44 masks->data[i] = psImageAlloc(image->numCols, image->numRows, PS_TYPE_IMAGE_MASK); 45 45 psImageInit(masks->data[i], 0); 46 46 } … … 98 98 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// 99 99 100 bool pmReadoutSetMask(pmReadout *readout, ps MaskType satMask, psMaskType badMask)100 bool pmReadoutSetMask(pmReadout *readout, psImageMaskType satMask, psImageMaskType badMask) 101 101 { 102 102 PS_ASSERT_PTR_NON_NULL(readout, false); … … 124 124 if (!readout->mask) { 125 125 // Generate a (throwaway) mask image, if required 126 readout->mask = psImageAlloc(image->numCols, image->numRows, PS_TYPE_ U8);126 readout->mask = psImageAlloc(image->numCols, image->numRows, PS_TYPE_IMAGE_MASK); 127 127 } 128 128 psImage *mask = readout->mask; // The mask pixels … … 131 131 // Dereference pointers for speed 132 132 psF32 **imageData = image->data.F32;// The image 133 ps U8 **maskData = mask->data.U8; // The mask133 psImageMaskType **maskData = mask->data.PS_TYPE_IMAGE_MASK_DATA; // The mask 134 134 135 135 for (int i = 0; i < image->numRows; i++) { … … 153 153 // pixels. currently, it will set mask bits if (value <= BAD) or (value >= SATURATION) 154 154 // should we optionally ignore these tests? 155 bool pmReadoutGenerateMask(pmReadout *readout, ps MaskType satMask, psMaskType badMask)155 bool pmReadoutGenerateMask(pmReadout *readout, psImageMaskType satMask, psImageMaskType badMask) 156 156 { 157 157 PS_ASSERT_PTR_NON_NULL(readout, false); … … 294 294 } 295 295 296 bool pmReadoutGenerateMaskWeight(pmReadout *readout, ps MaskType satMask, psMaskType badMask, bool poisson)296 bool pmReadoutGenerateMaskWeight(pmReadout *readout, psImageMaskType satMask, psImageMaskType badMask, bool poisson) 297 297 { 298 298 PS_ASSERT_PTR_NON_NULL(readout, false); … … 306 306 } 307 307 308 bool pmCellGenerateMaskWeight(pmCell *cell, ps MaskType satMask, psMaskType badMask, bool poisson)308 bool pmCellGenerateMaskWeight(pmCell *cell, psImageMaskType satMask, psImageMaskType badMask, bool poisson) 309 309 { 310 310 PS_ASSERT_PTR_NON_NULL(cell, false); … … 321 321 322 322 323 bool pmReadoutWeightRenormPixels(const pmReadout *readout, ps MaskType maskVal,323 bool pmReadoutWeightRenormPixels(const pmReadout *readout, psImageMaskType maskVal, 324 324 psStatsOptions meanStat, psStatsOptions stdevStat, psRandom *rng) 325 325 { … … 363 363 364 364 365 bool pmReadoutWeightRenormPhot(const pmReadout *readout, ps MaskType maskVal, int num, float width,365 bool pmReadoutWeightRenormPhot(const pmReadout *readout, psImageMaskType maskVal, int num, float width, 366 366 psStatsOptions meanStat, psStatsOptions stdevStat, psRandom *rng) 367 367 { … … 411 411 psVector *source = psVectorAlloc(num, PS_TYPE_F32); // Measurements of fake sources 412 412 psVector *guess = psVectorAlloc(num, PS_TYPE_F32); // Guess at significance 413 psVector *photMask = psVectorAlloc(num, PS_TYPE_ MASK); // Mask for fluxes413 psVector *photMask = psVectorAlloc(num, PS_TYPE_VECTOR_MASK); // Mask for fluxes 414 414 for (int i = 0; i < num; i++) { 415 415 // Coordinates of interest … … 433 433 float yGauss = gauss->data.F32[v]; // Value of Gaussian in y 434 434 for (int u = 0, x = xPix - size; u < fullSize; u++, x++) { 435 if (mask && mask->data.PS_TYPE_ MASK_DATA[y][x] & maskVal) {435 if (mask && mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & maskVal) { 436 436 continue; 437 437 } … … 453 453 } 454 454 455 photMask->data.PS_TYPE_ MASK_DATA[i] = ((isfinite(sumNoise) && isfinite(sumSource) &&455 photMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = ((isfinite(sumNoise) && isfinite(sumSource) && 456 456 isfinite(sumWeight) && sumGauss > 0 && sumGauss2 > 0) ? 457 457 0 : 0xFF); … … 493 493 ratio->data.F32[i] = measuredSig / guess->data.F32[i]; 494 494 if (guess->data.F32[i] <= 0.0 || source->data.F32[i] <= 0.0 || !isfinite(ratio->data.F32[i])) { 495 photMask->data.PS_TYPE_ MASK_DATA[i] = 0xFF;495 photMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 0xFF; 496 496 } 497 497 psTrace("psModules.camera", 9, "Ratio %d: %f, %f, %f\n", … … 523 523 524 524 525 bool pmReadoutWeightRenorm(const pmReadout *readout, ps MaskType maskVal, psStatsOptions meanStat,525 bool pmReadoutWeightRenorm(const pmReadout *readout, psImageMaskType maskVal, psStatsOptions meanStat, 526 526 psStatsOptions stdevStat, int width, psRandom *rng) 527 527 { … … 591 591 592 592 593 bool pmReadoutMaskNonfinite(pmReadout *readout, ps MaskType maskVal)593 bool pmReadoutMaskNonfinite(pmReadout *readout, psImageMaskType maskVal) 594 594 { 595 595 PM_ASSERT_READOUT_NON_NULL(readout, false); … … 601 601 602 602 if (!readout->mask) { 603 readout->mask = psImageAlloc(numCols, numRows, PS_TYPE_ MASK);603 readout->mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK); 604 604 } 605 605 psImage *mask = readout->mask; // Readout's mask … … 608 608 for (int x = 0; x < numCols; x++) { 609 609 if (!isfinite(image->data.F32[y][x]) || (weight && !isfinite(weight->data.F32[y][x]))) { 610 mask->data.PS_TYPE_ MASK_DATA[y][x] |= maskVal;610 mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= maskVal; 611 611 } 612 612 } … … 618 618 619 619 620 bool pmReadoutMaskApply(pmReadout *readout, ps MaskType maskVal)620 bool pmReadoutMaskApply(pmReadout *readout, psImageMaskType maskVal) 621 621 { 622 622 PM_ASSERT_READOUT_NON_NULL(readout, false); … … 625 625 626 626 int numCols = readout->image->numCols, numRows = readout->image->numRows; // Size of image 627 ps MaskType **maskData = readout->mask->data.PS_TYPE_MASK_DATA; // Dereference mask627 psImageMaskType **maskData = readout->mask->data.PS_TYPE_IMAGE_MASK_DATA; // Dereference mask 628 628 psF32 **imageData = readout->image->data.F32;// Dereference image 629 629 psF32 **weightData = readout->weight ? readout->weight->data.F32 : NULL; // Dereference weight map … … 644 644 645 645 646 bool pmReadoutInterpolateBadPixels(pmReadout *readout, ps MaskType maskVal, psImageInterpolateMode mode,647 float poorFrac, ps MaskType maskPoor, psMaskType maskBad)646 bool pmReadoutInterpolateBadPixels(pmReadout *readout, psImageMaskType maskVal, psImageInterpolateMode mode, 647 float poorFrac, psImageMaskType maskPoor, psImageMaskType maskBad) 648 648 { 649 649 PM_ASSERT_READOUT_NON_NULL(readout, false); … … 667 667 psVector *imagePix = psVectorAllocEmpty(PIXELS_BUFFER, PS_TYPE_F32); // Corresponding values for image 668 668 psVector *weightPix = psVectorAllocEmpty(PIXELS_BUFFER, PS_TYPE_F32); // Corresponding values for weight 669 psVector *maskPix = psVectorAllocEmpty(PIXELS_BUFFER, PS_TYPE_MASK); // Corresponding values for mask 669 psVector *maskPix = psVectorAllocEmpty(PIXELS_BUFFER, PS_TYPE_IMAGE_MASK); // Corresponding values for mask 670 // NOTE: maskPix carries the actual image mask values -- do NOT use 671 // PS_TYPE_VECTOR_MASK here; it is storage, and is not treated as a vector mask 670 672 671 673 long numBad = 0; // Number of bad pixels interpolated 672 674 for (int y = 0; y < numRows; y++) { 673 675 for (int x = 0; x < numCols; x++) { 674 if (mask->data.PS_TYPE_ MASK_DATA[y][x] & maskVal) {676 if (mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & maskVal) { 675 677 double imageValue, weightValue; // Image and weight value from interpolation 676 psMaskType maskValue = 0; // Mask value from interpolation 677 psImageInterpolateStatus status = psImageInterpolate(&imageValue, &weightValue, &maskValue, 678 x, y, interp); 678 psImageMaskType maskValue = 0; // Mask value from interpolation 679 psImageInterpolateStatus status = psImageInterpolate(&imageValue, &weightValue, &maskValue, x, y, interp); 679 680 if (status == PS_INTERPOLATE_STATUS_ERROR || status == PS_INTERPOLATE_STATUS_OFF) { 680 681 psError(PS_ERR_UNKNOWN, false, "Unable to interpolate readout at %d,%d", x, y); … … 697 698 imagePix->data.F32[numBad] = imageValue; 698 699 weightPix->data.F32[numBad] = weightValue; 699 maskPix->data.PS_TYPE_ MASK_DATA[numBad] = maskValue;700 maskPix->data.PS_TYPE_IMAGE_MASK_DATA[numBad] = maskValue; 700 701 numBad++; 701 702 } … … 709 710 image->data.F32[y][x] = imagePix->data.F32[i]; 710 711 weight->data.F32[y][x] = weightPix->data.F32[i]; 711 mask->data.PS_TYPE_ MASK_DATA[y][x] = maskPix->data.PS_TYPE_MASK_DATA[i];712 mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] = maskPix->data.PS_TYPE_IMAGE_MASK_DATA[i]; 712 713 } 713 714 -
branches/eam_branch_20081230/psModules/src/camera/pmFPAMaskWeight.h
r20486 r21079 5 5 * @author Eugene Magnier, IfA 6 6 * 7 * @version $Revision: 1.16 $ $Name: not supported by cvs2svn $8 * @date $Date: 200 8-10-31 21:50:16$7 * @version $Revision: 1.16.10.1 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2009-01-02 05:13:00 $ 9 9 * Copyright 2005-2006 Institute for Astronomy, University of Hawaii 10 10 */ … … 42 42 /// iterating using pmReadoutReadNext, in which case the HDU can't be generated. 43 43 bool pmReadoutSetMask(pmReadout *readout, ///< Readout for which to set mask 44 ps MaskType satMask, ///< Mask value to give saturated pixels45 ps MaskType badMask ///< Mask value to give bad (low) pixels44 psImageMaskType satMask, ///< Mask value to give saturated pixels 45 psImageMaskType badMask ///< Mask value to give bad (low) pixels 46 46 ); 47 47 … … 62 62 /// is suitable for output (complete with HDU entry). This is intended for most operations. 63 63 bool pmReadoutGenerateMask(pmReadout *readout, ///< Readout for which to generate mask 64 ps MaskType sat, ///< Mask value to give saturated pixels65 ps MaskType bad ///< Mask value to give bad (low) pixels64 psImageMaskType sat, ///< Mask value to give saturated pixels 65 psImageMaskType bad ///< Mask value to give bad (low) pixels 66 66 ); 67 67 … … 79 79 /// Calls pmReadoutGenerateMask and pmReadoutGenerateWeight for the readout 80 80 bool pmReadoutGenerateMaskWeight(pmReadout *readout, ///< Readout for which to generate mask and weights 81 ps MaskType sat, ///< Mask value to give saturated pixels82 ps MaskType bad, ///< Mask value to give bad (low) pixels81 psImageMaskType sat, ///< Mask value to give saturated pixels 82 psImageMaskType bad, ///< Mask value to give bad (low) pixels 83 83 bool poisson ///< Use poisson weights (in addition to read noise)? 84 84 ); … … 88 88 /// Calls pmReadoutGenerateMaskWeight for each readout within the cell. 89 89 bool pmCellGenerateMaskWeight(pmCell *cell, ///< Cell for which to generate mask and weights 90 ps MaskType sat, ///< Mask value to give saturated pixels91 ps MaskType bad, ///< Mask value to give bad (low) pixels90 psImageMaskType sat, ///< Mask value to give saturated pixels 91 psImageMaskType bad, ///< Mask value to give bad (low) pixels 92 92 bool poisson ///< Use poisson weights (in addition to read noise)? 93 93 ); … … 98 98 bool pmReadoutWeightRenormPixels( 99 99 const pmReadout *readout, ///< Readout to normalise 100 ps MaskType maskVal, ///< Value to mask100 psImageMaskType maskVal, ///< Value to mask 101 101 psStatsOptions meanStat, ///< Statistic to measure the mean (of the variance map) 102 102 psStatsOptions stdevStat, ///< Statistic to measure the stdev (of the image) … … 110 110 bool pmReadoutWeightRenormPhot( 111 111 const pmReadout *readout, ///< Readout to normalise 112 ps MaskType maskVal, ///< Value to mask112 psImageMaskType maskVal, ///< Value to mask 113 113 int num, ///< Number of instances to measure over the image 114 114 float width, ///< Photometry width … … 123 123 /// that patch corresponds. 124 124 bool pmReadoutWeightRenorm(const pmReadout *readout, // Readout to normalise 125 ps MaskType maskVal, // Value to mask125 psImageMaskType maskVal, // Value to mask 126 126 psStatsOptions meanStat, // Statistic to measure the mean (of the variance map) 127 127 psStatsOptions stdevStat, // Statistic to measure the stdev (of the image) … … 136 136 /// the provided value. 137 137 bool pmReadoutMaskNonfinite(pmReadout *readout, ///< Readout to mask 138 ps MaskType maskVal ///< Mask value to give non-finite pixels138 psImageMaskType maskVal ///< Mask value to give non-finite pixels 139 139 ); 140 140 … … 145 145 /// sets masked areas to NAN in the image and weight. 146 146 bool pmReadoutMaskApply(pmReadout *readout, ///< Readout to mask 147 ps MaskType maskVal ///< Mask value for which to apply mask147 psImageMaskType maskVal ///< Mask value for which to apply mask 148 148 ); 149 149 … … 152 152 /// Scan the mask image for bad pixels, and interpolate over them using the nominated options 153 153 bool pmReadoutInterpolateBadPixels(pmReadout *readout, ///< Readout to work on 154 ps MaskType maskVal, ///< Value to mask154 psImageMaskType maskVal, ///< Value to mask 155 155 psImageInterpolateMode mode, ///< Interpolation mode 156 156 float poorFrac, ///< Maximum bad fraction of kernel for "poor" status 157 ps MaskType maskPoor, ///< Mask value to give poor pixels158 ps MaskType maskBad ///< Mask value to give bad pixels157 psImageMaskType maskPoor, ///< Mask value to give poor pixels 158 psImageMaskType maskBad ///< Mask value to give bad pixels 159 159 ); 160 160 -
branches/eam_branch_20081230/psModules/src/camera/pmFPAMosaic.c
r21072 r21079 471 471 numImages++; 472 472 473 // Only implemented for F32 and U8 images so far.474 assert(image->type.type == PS_TYPE_F32 || image->type.type == PS_TYPE_U8);475 473 // All input types must be the same 476 474 if (type == 0) { … … 537 535 if (xBinSource->data.S32[i] == xBinTarget && yBinSource->data.S32[i] == yBinTarget) { 538 536 switch (type) { 537 COPY_WITH_PARITY_DIFFERENCE(U8); 538 COPY_WITH_PARITY_DIFFERENCE(U16); 539 COPY_WITH_PARITY_DIFFERENCE(U32); 540 COPY_WITH_PARITY_DIFFERENCE(U64); 541 COPY_WITH_PARITY_DIFFERENCE(S8); 542 COPY_WITH_PARITY_DIFFERENCE(S16); 543 COPY_WITH_PARITY_DIFFERENCE(S32); 544 COPY_WITH_PARITY_DIFFERENCE(S64); 539 545 COPY_WITH_PARITY_DIFFERENCE(F32); 540 COPY_WITH_PARITY_DIFFERENCE( U8);546 COPY_WITH_PARITY_DIFFERENCE(F64); 541 547 default: 542 548 psAbort("Should never get here.\n"); … … 548 554 // We have to do all of the hard work ourselves 549 555 switch (type) { 550 FILL_IN(F32); 551 FILL_IN(U8); 556 FILL_IN(U8); 557 FILL_IN(U16); 558 FILL_IN(U32); 559 FILL_IN(U64); 560 FILL_IN(S8); 561 FILL_IN(S16); 562 FILL_IN(S32); 563 FILL_IN(S64); 564 FILL_IN(F32); 565 FILL_IN(F64); 552 566 default: 553 567 psAbort("Should never get here.\n"); … … 730 744 const pmChip *chip, // Chip to mosaic 731 745 const pmCell *targetCell, // Cell to which to mosaic 732 ps MaskType blank // Mask value to give blank pixels746 psImageMaskType blank // Mask value to give blank pixels 733 747 ) 734 748 { … … 838 852 const pmChip *targetChip, // Chip to which to mosaic 839 853 const pmCell *targetCell, // Cell to which to mosaic 840 ps MaskType blank // Mask value to give blank pixels854 psImageMaskType blank // Mask value to give blank pixels 841 855 ) 842 856 { … … 994 1008 // the mosaic image. 995 1009 996 bool pmChipMosaic(pmChip *target, const pmChip *source, bool deepCopy, ps MaskType blank)1010 bool pmChipMosaic(pmChip *target, const pmChip *source, bool deepCopy, psImageMaskType blank) 997 1011 { 998 1012 // Target exists, and has only a single cell … … 1225 1239 1226 1240 1227 bool pmFPAMosaic(pmFPA *target, const pmFPA *source, bool deepCopy, ps MaskType blank)1241 bool pmFPAMosaic(pmFPA *target, const pmFPA *source, bool deepCopy, psImageMaskType blank) 1228 1242 { 1229 1243 // Target exists, and has only a single chip with single cell -
branches/eam_branch_20081230/psModules/src/camera/pmFPAMosaic.h
r13898 r21079 4 4 * @author Paul Price, IfA 5 5 * 6 * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $7 * @date $Date: 200 7-06-20 02:22:26$6 * @version $Revision: 1.8.74.1 $ $Name: not supported by cvs2svn $ 7 * @date $Date: 2009-01-02 05:13:00 $ 8 8 * Copyright 2005-2006 Institute for Astronomy, University of Hawaii 9 9 */ … … 24 24 const pmChip *source, ///< Source chip whose cells will be mosaicked 25 25 bool deepCopy, ///< Require a deep copy (disregard 'nice' chip) 26 ps MaskType blank ///< Mask value to give blank pixels26 psImageMaskType blank ///< Mask value to give blank pixels 27 27 ); 28 28 … … 36 36 const pmFPA *source, ///< FPA whose chips and cells will be mosaicked 37 37 bool deepCopy, ///< Require a deep copy (disregard 'nice' chip) 38 ps MaskType blank ///< Mask value to give blank pixels38 psImageMaskType blank ///< Mask value to give blank pixels 39 39 ); 40 40 /// @} -
branches/eam_branch_20081230/psModules/src/camera/pmFPA_JPEG.c
r21072 r21079 5 5 * @author EAM, IfA 6 6 * 7 * @version $Revision: 1.26 $ $Name: not supported by cvs2svn $8 * @date $Date: 200 8-09-23 02:00:36$7 * @version $Revision: 1.26.18.1 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2009-01-02 05:13:00 $ 9 9 * 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 157 157 psStats *stats = psStatsAlloc(PS_STAT_ROBUST_MEDIAN); 158 158 stats->nSubsample = 10000; 159 ps MaskType maskVal = pmConfigMaskGet("MASK.VALUE", config); // Value to mask159 psImageMaskType maskVal = pmConfigMaskGet("MASK.VALUE", config); // Value to mask 160 160 float mean = 0, delta = 0; // 161 161 if (!psImageBackground(stats, NULL, readout->image, readout->mask, maskVal, rng)) { -
branches/eam_branch_20081230/psModules/src/camera/pmHDU.c
r21072 r21079 167 167 const psArray *images, // Images to write 168 168 const psArray *masks, // Masks to use when writing 169 ps MaskType maskVal,// Value to mask169 psImageMaskType maskVal,// Value to mask 170 170 psFits *fits // FITS file to which to write 171 171 ) … … 222 222 PS_ASSERT_PTR_NON_NULL(fits, false); 223 223 224 ps MaskType maskVal = pmConfigMaskGet("MASK.VALUE", config); // Value to mask224 psImageMaskType maskVal = pmConfigMaskGet("MASK.VALUE", config); // Value to mask 225 225 return hduWrite(hdu, hdu->images, hdu->masks, maskVal, fits); 226 226 } … … 240 240 PS_ASSERT_PTR_NON_NULL(fits, false); 241 241 242 ps MaskType maskVal = pmConfigMaskGet("MASK.VALUE", config); // Value to mask242 psImageMaskType maskVal = pmConfigMaskGet("MASK.VALUE", config); // Value to mask 243 243 return hduWrite(hdu, hdu->weights, hdu->masks, maskVal, fits); 244 244 } -
branches/eam_branch_20081230/psModules/src/camera/pmReadoutStack.c
r18830 r21079 78 78 79 79 // XXX for the moment, use col0, row0, numCols, numRows supplied from the outside 80 bool pmReadoutStackDefineOutput(pmReadout *readout, int col0, int row0, int numCols, int numRows, bool mask, bool weight, ps MaskType blank)80 bool pmReadoutStackDefineOutput(pmReadout *readout, int col0, int row0, int numCols, int numRows, bool mask, bool weight, psImageMaskType blank) 81 81 { 82 82 PS_ASSERT_PTR_NON_NULL(readout, false); … … 94 94 // XXX is this an error? 95 95 if (readout->mask) return false; 96 readout->mask = psImageAlloc(numCols, numRows, PS_TYPE_ MASK);96 readout->mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK); 97 97 psImageInit(readout->mask, blank); 98 98 } … … 163 163 bool pmReadoutUpdateSize(pmReadout *readout, int minCols, int minRows, 164 164 int numCols, int numRows, bool mask, bool weight, 165 ps MaskType blank)165 psImageMaskType blank) 166 166 { 167 167 PS_ASSERT_PTR_NON_NULL(readout, false); … … 191 191 if (mask) { 192 192 if (!readout->mask) { 193 readout->mask = psImageAlloc(numCols, numRows, PS_TYPE_ MASK);193 readout->mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK); 194 194 psImageInit(readout->mask, blank); 195 195 } 196 196 if (readout->mask->numCols < numCols || readout->mask->numRows < numRows) { 197 psImage *newMask = psImageAlloc(numCols, numRows, PS_TYPE_ MASK);197 psImage *newMask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK); 198 198 psImageInit(newMask, blank); 199 199 psImageOverlaySection(newMask, readout->mask, readout->col0, readout->row0, "="); -
branches/eam_branch_20081230/psModules/src/camera/pmReadoutStack.h
r18830 r21079 14 14 bool mask, ///< Worry about the mask? 15 15 bool weight, ///< Worry about the weight? 16 ps MaskType blank ///< Mask value to give to blank pixels16 psImageMaskType blank ///< Mask value to give to blank pixels 17 17 ); 18 18 … … 47 47 48 48 // XXX for the moment, use col0, row0, numCols, numRows supplied from the outside 49 bool pmReadoutStackDefineOutput(pmReadout *readout, int col0, int row0, int numCols, int numRows, bool mask, bool weight, ps MaskType blank);49 bool pmReadoutStackDefineOutput(pmReadout *readout, int col0, int row0, int numCols, int numRows, bool mask, bool weight, psImageMaskType blank); 50 50 51 51 bool pmReadoutStackSetOutputSize(int *col0, int *row0, int *numCols, int *numRows, const psArray *inputs); -
branches/eam_branch_20081230/psModules/src/concepts/pmConceptsStandard.c
r21072 r21079 16 16 #include "pmConceptsWrite.h" 17 17 #include "pmConceptsStandard.h" 18 19 // XXX why are these functions not supporting all types (S64, U64 often missing)? 18 20 19 21 // The functions in this file are intended to be called solely within the psModules concepts code. For this … … 591 593 TYPE_CASE(binning, concept, U16); 592 594 TYPE_CASE(binning, concept, U32); 595 // TYPE_CASE(binning, concept, U64); 593 596 TYPE_CASE(binning, concept, S8); 594 597 TYPE_CASE(binning, concept, S16); 595 598 TYPE_CASE(binning, concept, S32); 599 // TYPE_CASE(binning, concept, S64); 596 600 default: 597 601 psError(PS_ERR_UNKNOWN, true, "Note sure how to parse %s of type %x --- assuming 1.\n", pattern->name, -
branches/eam_branch_20081230/psModules/src/config/pmConfigMask.c
r19870 r21079 45 45 }; 46 46 // Default values in case a bad mask name and its fallback is not defined 47 static const ps MaskType defaultMask[] = { 0x00, // DETECTOR48 0x00, // DARK49 0x01, // FLAT50 0x01, // BLANK51 0x00, // RANGE52 0x01, // SAT53 0x01, // LOW54 0x01, // CONV55 0x00, // CR56 0x00 // GHOST47 static const psImageMaskType defaultMask[] = { 0x00, // DETECTOR 48 0x00, // DARK 49 0x01, // FLAT 50 0x01, // BLANK 51 0x00, // RANGE 52 0x01, // SAT 53 0x01, // LOW 54 0x01, // CONV 55 0x00, // CR 56 0x00 // GHOST 57 57 }; 58 58 // Other mask names to ensure exist; these shouldn't be combined in the MASK.VALUE … … 62 62 }; 63 63 64 static bool maskSetValues(ps MaskType *outMaskValue, // Value of MASK.VALUE, returned65 ps MaskType *outMarkValue, // Value of MARK.VALUE, returned64 static bool maskSetValues(psImageMaskType *outMaskValue, // Value of MASK.VALUE, returned 65 psImageMaskType *outMarkValue, // Value of MARK.VALUE, returned 66 66 psMetadata *source // Source of mask bits 67 67 ) … … 70 70 71 71 // Ensure all the bad mask names exist, and set the value to catch all bad pixels 72 ps MaskType maskValue = 0; // Value to mask to catch all the bad pixels72 psImageMaskType maskValue = 0; // Value to mask to catch all the bad pixels 73 73 for (int i = 0; badMaskNames[i]; i++) { 74 74 const char *name = badMaskNames[i]; // Name for mask … … 76 76 77 77 bool mdok; // Status of MD lookup 78 ps MaskType value = psMetadataLookupU8(&mdok, source, name); // Value of mask78 psImageMaskType value = psMetadataLookupImageMask(&mdok, source, name); // Value of mask 79 79 if (!value) { 80 80 if (fallback) { 81 value = psMetadataLookup U8(&mdok, source, fallback);81 value = psMetadataLookupImageMask(&mdok, source, fallback); 82 82 } 83 83 if (!value) { 84 84 value = defaultMask[i]; 85 85 } 86 psMetadataAdd U8(source, PS_LIST_TAIL, name, PS_META_REPLACE, NULL, value);86 psMetadataAddImageMask(source, PS_LIST_TAIL, name, PS_META_REPLACE, NULL, value); 87 87 } 88 88 maskValue |= value; … … 93 93 const char *name = otherMaskNames[i]; // Name for mask 94 94 bool mdok; // Status of MD lookup 95 ps MaskType value = psMetadataLookupU8(&mdok, source, name); // Value of mask95 psImageMaskType value = psMetadataLookupImageMask(&mdok, source, name); // Value of mask 96 96 if (!value) { 97 psMetadataAdd U8(source, PS_LIST_TAIL, name, PS_META_REPLACE, NULL, 0x00);97 psMetadataAddImageMask(source, PS_LIST_TAIL, name, PS_META_REPLACE, NULL, 0x00); 98 98 } 99 99 } 100 100 101 101 // search for an unset bit to use for MARK: 102 psMaskType markValue = 0x80; 103 104 int nBits = sizeof(psMaskType) * 8; 102 psImageMaskType markValue = 0x00; 103 psImageMaskType markTrial = 0x01; 104 105 int nBits = sizeof(psImageMaskType) * 8; 105 106 for (int i = 0; !markValue && (i < nBits); i++) { 106 if (maskValue & mark Value) {107 mark Value >>= 1;107 if (maskValue & markTrial) { 108 markTrial <<= 1; 108 109 } else { 109 markValue = mark Value;110 markValue = markTrial; 110 111 } 111 112 } … … 116 117 117 118 // update the list with the results 118 psMetadataAdd U8(source, PS_LIST_TAIL, "MASK.VALUE", PS_META_REPLACE, NULL, maskValue);119 psMetadataAdd U8(source, PS_LIST_TAIL, "MARK.VALUE", PS_META_REPLACE, NULL, markValue);119 psMetadataAddImageMask(source, PS_LIST_TAIL, "MASK.VALUE", PS_META_REPLACE, NULL, maskValue); 120 psMetadataAddImageMask(source, PS_LIST_TAIL, "MARK.VALUE", PS_META_REPLACE, NULL, markValue); 120 121 121 122 if (outMaskValue) { … … 130 131 131 132 // Get a mask value by name(s) 132 static ps MaskType maskGet(psMetadata *source, // Source of masks133 const char *masks // Mask values to get134 )135 { 136 ps MaskType mask = 0; // Mask value, to return133 static psImageMaskType maskGet(psMetadata *source, // Source of masks 134 const char *masks // Mask values to get 135 ) 136 { 137 psImageMaskType mask = 0; // Mask value, to return 137 138 138 139 psArray *names = psStringSplitArray(masks, " ,;", false); // Array of symbolic names … … 140 141 const char *name = names->data[i]; // Symbolic name of interest 141 142 bool mdok; // Status of MD lookup 142 ps MaskType value = psMetadataLookupU8(&mdok, source, name);143 psImageMaskType value = psMetadataLookupImageMask(&mdok, source, name); 143 144 if (!mdok) { 144 145 // Try and generate the value if we can … … 148 149 return 0; 149 150 } 150 value = psMetadataLookup U8(&mdok, source, name);151 value = psMetadataLookupImageMask(&mdok, source, name); 151 152 psAssert(mdok, "Should have generated mask value"); 152 153 } else { … … 187 188 188 189 #if 0 189 bool pmFPAMaskSetValues(ps MaskType *outMaskValue, psMaskType *outMarkValue, pmFPA *fpa)190 bool pmFPAMaskSetValues(psImageMaskType *outMaskValue, psImageMaskType *outMarkValue, pmFPA *fpa) 190 191 { 191 192 PS_ASSERT_PTR_NON_NULL(fpa, false); … … 194 195 } 195 196 196 ps MaskType pmFPAMaskGet(const pmFPA *fpa, const char *masks, const pmConfig *config)197 psImageMaskType pmFPAMaskGet(const pmFPA *fpa, const char *masks, const pmConfig *config) 197 198 { 198 199 PS_ASSERT_PTR_NON_NULL(fpa, 0); … … 206 207 } 207 208 208 bool pmFPAMaskSet(pmFPA *fpa, const char *maskName, ps MaskType maskValue)209 bool pmFPAMaskSet(pmFPA *fpa, const char *maskName, psImageMaskType maskValue) 209 210 { 210 211 PS_ASSERT_PTR_NON_NULL(fpa, 0); … … 214 215 fpa->masks = psMetadataAlloc(); 215 216 } 216 return psMetadataAdd U8(fpa->masks, PS_LIST_TAIL, maskName, PS_META_REPLACE, NULL, maskValue);217 return psMetadataAddImageMask(fpa->masks, PS_LIST_TAIL, maskName, PS_META_REPLACE, NULL, maskValue); 217 218 } 218 219 … … 250 251 continue; 251 252 } 252 ps U8 bit = psMetadataLookupU8(&mdok, header, valuekey);253 psImageMaskType bit = psMetadataLookupImageMask(&mdok, header, valuekey); 253 254 if (!mdok) { 254 255 psWarning("Unable to find header keyword %s when parsing mask", namekey); … … 267 268 } 268 269 } else { 269 psMetadataAdd U8(fpa->masks, PS_LIST_TAIL, name, 0, NULL, bit);270 psMetadataAddImageMask(fpa->masks, PS_LIST_TAIL, name, 0, NULL, bit); 270 271 } 271 272 } … … 286 287 } 287 288 if (!psMetadataLookup(fpa->masks, item->name)) { 288 psMetadataAdd U8(fpa->masks, PS_LIST_TAIL, item->name, 0, item->comment,289 psMetadataAddImageMask(fpa->masks, PS_LIST_TAIL, item->name, 0, item->comment, 289 290 item->data.PS_TYPE_MASK_DATA); 290 291 } … … 322 323 323 324 psMetadataAddStr(header, PS_LIST_TAIL, namekey, 0, "Bitmask bit name", item->name); 324 psMetadataAdd U8(header, PS_LIST_TAIL, valuekey, 0, "Bitmask bit value", item->data.PS_TYPE_MASK_DATA);325 psMetadataAddImageMask(header, PS_LIST_TAIL, valuekey, 0, "Bitmask bit value", item->data.PS_TYPE_MASK_DATA); 325 326 numMask++; 326 327 } … … 333 334 334 335 335 ps MaskType pmConfigMaskGet(const char *masks, const pmConfig *config)336 psImageMaskType pmConfigMaskGet(const char *masks, const pmConfig *config) 336 337 { 337 338 psAssert(config, "Require configuration"); … … 348 349 349 350 350 bool pmConfigMaskSet(const pmConfig *config, const char *maskName, ps MaskType maskValue)351 bool pmConfigMaskSet(const pmConfig *config, const char *maskName, psImageMaskType maskValue) 351 352 { 352 353 psAssert(config, "Require configuration"); … … 359 360 } 360 361 361 return psMetadataAdd U8(recipe, PS_LIST_TAIL, maskName, PS_META_REPLACE, NULL, maskValue);362 return psMetadataAddImageMask(recipe, PS_LIST_TAIL, maskName, PS_META_REPLACE, NULL, maskValue); 362 363 } 363 364 … … 381 382 // versions so that it won't complain later 382 383 if (!psMetadataLookup(recipe, "MASK.VALUE")) { 383 psMetadataAdd U8(recipe, PS_LIST_TAIL, "MASK.VALUE", 0, "Bits to mask", 0);384 psMetadataAddImageMask(recipe, PS_LIST_TAIL, "MASK.VALUE", 0, "Bits to mask", 0); 384 385 } 385 386 if (!psMetadataLookup(recipe, "MARK.VALUE")) { 386 psMetadataAdd U8(recipe, PS_LIST_TAIL, "MARK.VALUE", 0, "Bits for marking", 0);387 psMetadataAddImageMask(recipe, PS_LIST_TAIL, "MARK.VALUE", 0, "Bits for marking", 0); 387 388 } 388 389 … … 408 409 continue; 409 410 } 410 ps U8 bit = psMetadataLookupU8(&status, header, valuekey);411 psImageMaskType bit = psMetadataLookupImageMask(&status, header, valuekey); 411 412 if (!status) { 412 413 psWarning("Unable to find header keyword %s when parsing mask", namekey); … … 427 428 428 429 if (already) { 429 if (item && item->data. U8!= bit) {430 if (item && item->data.PS_TYPE_IMAGE_MASK_DATA != bit) { 430 431 psWarning("New mask recipe entry doesn't match previously loaded entry: %x vs %x", 431 bit, item->data. U8);432 bit, item->data.PS_TYPE_IMAGE_MASK_DATA); 432 433 } 433 434 } else { … … 437 438 if (!item) { 438 439 psWarning("Mask recipe entry %s not in recipe\n", name); 439 psMetadataAdd U8(recipe, PS_LIST_TAIL, name, 0, "Bitmask bit value", bit);440 psMetadataAddImageMask(recipe, PS_LIST_TAIL, name, 0, "Bitmask bit value", bit); 440 441 } else { 441 item->data. U8= bit;442 item->data.PS_TYPE_IMAGE_MASK_DATA = bit; 442 443 } 443 444 … … 481 482 } 482 483 483 if (item->type != PS_ DATA_U8) {484 if (item->type != PS_TYPE_IMAGE_MASK) { 484 485 psWarning("mask recipe entry %s is not a bit value\n", item->name); 485 486 continue; … … 490 491 491 492 psMetadataAddStr(header, PS_LIST_TAIL, namekey, 0, "Bitmask bit name", item->name); 492 psMetadataAdd U8(header, PS_LIST_TAIL, valuekey, 0, "Bitmask bit value", item->data.U8);493 psMetadataAddImageMask(header, PS_LIST_TAIL, valuekey, 0, "Bitmask bit value", item->data.PS_TYPE_IMAGE_MASK_DATA); 493 494 nMask++; 494 495 } … … 500 501 501 502 502 bool pmConfigMaskSetBits(ps MaskType *outMaskValue, psMaskType *outMarkValue, const pmConfig *config)503 bool pmConfigMaskSetBits(psImageMaskType *outMaskValue, psImageMaskType *outMarkValue, const pmConfig *config) 503 504 { 504 505 PS_ASSERT_PTR_NON_NULL(config, false); -
branches/eam_branch_20081230/psModules/src/config/pmConfigMask.h
r21072 r21079 4 4 * @author Paul Price, IfA 5 5 * 6 * @version $Revision: 1.4 $ $Name: not supported by cvs2svn $7 * @date $Date: 200 8-07-17 20:37:20 $6 * @version $Revision: 1.4.30.1 $ $Name: not supported by cvs2svn $ 7 * @date $Date: 2009-01-02 05:13:00 $ 8 8 * Copyright 2007 Institute for Astronomy, University of Hawaii 9 9 */ … … 23 23 /// 24 24 /// The mask values are derived from the MASKS recipe 25 ps MaskType pmConfigMaskGet(const char *masks, ///< List of symbolic names, space/comma delimited25 psImageMaskType pmConfigMaskGet(const char *masks, ///< List of symbolic names, space/comma delimited 26 26 const pmConfig *config ///< Configuration 27 27 ); 28 28 29 bool pmConfigMaskSet(const pmConfig *config, const char *maskName, ps MaskType maskValue);29 bool pmConfigMaskSet(const pmConfig *config, const char *maskName, psImageMaskType maskValue); 30 30 31 31 // replace the named masks in the recipe with values in the header: … … 36 36 bool pmConfigMaskWriteHeader(const pmConfig *config, psMetadata *header); 37 37 38 bool pmConfigMaskSetBits(ps MaskType *outMaskValue, psMaskType *outMarkValue, const pmConfig *config);38 bool pmConfigMaskSetBits(psImageMaskType *outMaskValue, psImageMaskType *outMarkValue, const pmConfig *config); 39 39 40 40 #endif -
branches/eam_branch_20081230/psModules/src/detrend/pmBias.c
r21072 r21079 45 45 inImage->data.F32[i][j] -= subImage->data.F32[i+yOffset][j+xOffset]; 46 46 if (inMask && subMask) { 47 inMask->data. U8[i][j] |= subMask->data.U8[i+yOffset][j+xOffset];47 inMask->data.PS_TYPE_IMAGE_MASK_DATA[i][j] |= subMask->data.PS_TYPE_IMAGE_MASK_DATA[i+yOffset][j+xOffset]; 48 48 } 49 49 } … … 54 54 inImage->data.F32[i][j] -= subImage->data.F32[i+yOffset][j+xOffset] * scale; 55 55 if (inMask && subMask) { 56 inMask->data. U8[i][j] |= subMask->data.U8[i+yOffset][j+xOffset];56 inMask->data.PS_TYPE_IMAGE_MASK_DATA[i][j] |= subMask->data.PS_TYPE_IMAGE_MASK_DATA[i+yOffset][j+xOffset]; 57 57 } 58 58 } -
branches/eam_branch_20081230/psModules/src/detrend/pmDark.c
r21072 r21079 103 103 { 104 104 psArray *values = psArrayAlloc(inputs->n); 105 psVector *roMask = psVectorAlloc(inputs->n, PS_TYPE_ U8); // Mask for bad readouts105 psVector *roMask = psVectorAlloc(inputs->n, PS_TYPE_VECTOR_MASK); // Mask for bad readouts 106 106 psVector *norm = normConcept ? psVectorAlloc(inputs->n, PS_TYPE_F32) : NULL; // Normalizations for each 107 107 psVector *orders = psVectorAlloc(ordinates->n, PS_TYPE_U8); // Orders for each concept … … 121 121 if (!ordinateLookup(&normValue, &inRange, normConcept, false, NAN, NAN, readout)) { 122 122 psWarning("Unable to find value of %s for readout %d", normConcept, i); 123 roMask->data. U8[i] = 0xff;123 roMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 0xff; 124 124 norm->data.F32[i] = NAN; 125 125 numBadInputs++; … … 128 128 if (normValue == 0.0) { 129 129 psWarning("Normalisation value (%s) for readout %d is zero", normConcept, i); 130 roMask->data. U8[i] = 0xff;130 roMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 0xff; 131 131 norm->data.F32[i] = NAN; 132 132 numBadInputs++; … … 151 151 for (int j = 0; j < inputs->n; j++) { 152 152 psVector *val = values->data[j]; // Value vector for readout 153 if (roMask->data. U8[j]) {153 if (roMask->data.PS_TYPE_VECTOR_MASK_DATA[j]) { 154 154 val->data.F32[i] = NAN; 155 155 continue; … … 159 159 float value = NAN; // Value of ordinate 160 160 if (!ordinateLookup(&value, &inRange, ord->name, ord->scale, ord->min, ord->max, readout)) { 161 roMask->data. U8[j] = 0xff;161 roMask->data.PS_TYPE_VECTOR_MASK_DATA[j] = 0xff; 162 162 val->data.F32[i] = NAN; 163 163 numBadInputs++; … … 165 165 } 166 166 if (!inRange) { 167 roMask->data. U8[j] = 0xff;167 roMask->data.PS_TYPE_VECTOR_MASK_DATA[j] = 0xff; 168 168 val->data.F32[i] = NAN; 169 169 numBadInputs++; … … 263 263 264 264 // do the combine work for this portion of the output (range is set by input data) 265 bool pmDarkCombine(pmCell *output, const psArray *inputs, int iter, float rej, ps MaskType maskVal)265 bool pmDarkCombine(pmCell *output, const psArray *inputs, int iter, float rej, psImageMaskType maskVal) 266 266 { 267 267 PS_ASSERT_PTR_NON_NULL(output, false); … … 314 314 // Iterate over pixels, fitting polynomial 315 315 psVector *pixels = psVectorAlloc(inputs->n, PS_TYPE_F32); // Stack of pixels 316 psVector *mask = psVectorAlloc(inputs->n, PS_TYPE_ MASK); // Mask for stack316 psVector *mask = psVectorAlloc(inputs->n, PS_TYPE_VECTOR_MASK); // Mask for stack 317 317 for (int i = minInputRows; i < maxInputRows; i++) { 318 318 int yOut = i - outReadout->row0; // y position on output readout … … 330 330 psVectorInit(mask, 0); 331 331 for (int r = 0; r < inputs->n; r++) { 332 if (roMask->data. U8[r]) {333 mask->data.PS_TYPE_ MASK_DATA[r] = 0xff;332 if (roMask->data.PS_TYPE_VECTOR_MASK_DATA[r]) { 333 mask->data.PS_TYPE_VECTOR_MASK_DATA[r] = 0xff; 334 334 continue; 335 335 } … … 343 343 } 344 344 if (readout->mask) { 345 mask->data.PS_TYPE_ MASK_DATA[r] = readout->mask->data.PS_TYPE_MASK_DATA[yIn][xIn];345 mask->data.PS_TYPE_VECTOR_MASK_DATA[r] = (readout->mask->data.PS_TYPE_IMAGE_MASK_DATA[yIn][xIn] & maskVal); 346 346 } 347 347 348 348 } 349 349 350 if (!psPolynomialMDClipFit(poly, pixels, NULL, mask, maskVal, values, iter, rej)) {350 if (!psPolynomialMDClipFit(poly, pixels, NULL, mask, 0xff, values, iter, rej)) { 351 351 psErrorClear(); // Nothing we can do about it 352 352 psVectorInit(poly->coeff, NAN); … … 376 376 const psVector *values = job->args->data[3]; // Values for each ordinate 377 377 378 ps MaskType bad = PS_SCALAR_VALUE(job->args->data[4], U8); // Mask value to give bad pixels378 psImageMaskType bad = PS_SCALAR_VALUE(job->args->data[4], PS_TYPE_IMAGE_MASK_DATA); // Mask value to give bad pixels 379 379 bool doNorm = PS_SCALAR_VALUE(job->args->data[5], U8); // Normalise values? 380 380 float norm = PS_SCALAR_VALUE(job->args->data[6], F32); // Value by which to normalise … … 386 386 387 387 bool pmDarkApplyScan(pmReadout *readout, const pmCell *dark, const psVector *orders, const psVector *values, 388 ps MaskType bad, bool doNorm, float norm, int rowStart, int rowStop)388 psImageMaskType bad, bool doNorm, float norm, int rowStart, int rowStop) 389 389 { 390 390 int numCols = readout->image->numCols; … … 405 405 readout->image->data.F32[y][x] -= value; 406 406 if (readout->mask && !isfinite(value)) { 407 readout->mask->data.PS_TYPE_ MASK_DATA[y][x] = bad;407 readout->mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] = bad; 408 408 } 409 409 } … … 414 414 } 415 415 416 bool pmDarkApply(pmReadout *readout, pmCell *dark, ps MaskType bad)416 bool pmDarkApply(pmReadout *readout, pmCell *dark, psImageMaskType bad) 417 417 { 418 418 PS_ASSERT_PTR_NON_NULL(readout, false); … … 424 424 PS_ASSERT_IMAGE_NON_NULL(readout->mask, false); 425 425 PS_ASSERT_IMAGES_SIZE_EQUAL(readout->mask, readout->image, false); 426 PS_ASSERT_IMAGE_TYPE(readout->mask, PS_TYPE_ MASK, false);426 PS_ASSERT_IMAGE_TYPE(readout->mask, PS_TYPE_IMAGE_MASK, false); 427 427 } 428 428 int numTerms = dark->readouts->n; // Number of polynomial terms … … 496 496 psArrayAdd(job->args, 1, orders); 497 497 psArrayAdd(job->args, 1, values); 498 PS_ARRAY_ADD_SCALAR(job->args, bad, PS_TYPE_ MASK);498 PS_ARRAY_ADD_SCALAR(job->args, bad, PS_TYPE_IMAGE_MASK); 499 499 PS_ARRAY_ADD_SCALAR(job->args, doNorm, PS_TYPE_U8); 500 500 PS_ARRAY_ADD_SCALAR(job->args, norm, PS_TYPE_F32); -
branches/eam_branch_20081230/psModules/src/detrend/pmDark.h
r21072 r21079 37 37 int iter, // Number of rejection iterations 38 38 float rej, // Rejection threshold (standard deviations) 39 ps MaskType maskVal // Value to mask39 psImageMaskType maskVal // Value to mask 40 40 ); 41 41 … … 49 49 const psVector *orders, // Polynomial orders for each ordinate 50 50 const psVector *values, // Values for each ordinate 51 ps MaskType bad, // Value to give bad pixels51 psImageMaskType bad, // Value to give bad pixels 52 52 bool doNorm, // Normalise values? 53 53 float norm, // Value by which to normalise … … 58 58 bool pmDarkApply(pmReadout *readout, // Readout to which to apply dark 59 59 pmCell *dark, // Dark to apply 60 ps MaskType bad // Mask value to give bad pixels60 psImageMaskType bad // Mask value to give bad pixels 61 61 ); 62 62 -
branches/eam_branch_20081230/psModules/src/detrend/pmFlatField.c
r21072 r21079 22 22 const psImage *flatMask = job->args->data[3]; // Flat-field mask 23 23 24 ps MaskType badFlat = PS_SCALAR_VALUE(job->args->data[4],U8);24 psImageMaskType badFlat = PS_SCALAR_VALUE(job->args->data[4],PS_TYPE_IMAGE_MASK_DATA); 25 25 int xOffset = PS_SCALAR_VALUE(job->args->data[5],S32); 26 26 int yOffset = PS_SCALAR_VALUE(job->args->data[6],S32); … … 38 38 ps##TYPE flatValue = flatImage->data.TYPE[j + yOffset][i + xOffset]; \ 39 39 if (!isfinite(flatValue) || flatValue <= 0.0 || \ 40 (flatMask && flatMask->data. U8[j + yOffset][i + xOffset])) { \40 (flatMask && flatMask->data.PS_TYPE_IMAGE_MASK_DATA[j + yOffset][i + xOffset])) { \ 41 41 if (inMask) { \ 42 inMask->data.PS_TYPE_ MASK_DATA[j][i] |= badFlat; \42 inMask->data.PS_TYPE_IMAGE_MASK_DATA[j][i] |= badFlat; \ 43 43 } \ 44 44 inImage->data.TYPE[j][i] = SPECIAL; \ … … 51 51 52 52 bool pmFlatFieldScan(psImage *inImage, psImage *inMask, const psImage *flatImage, const psImage *flatMask, 53 ps MaskType badFlat, int xOffset, int yOffset, int rowStart, int rowStop)53 psImageMaskType badFlat, int xOffset, int yOffset, int rowStart, int rowStop) 54 54 { 55 55 switch (inImage->type.type) { … … 72 72 } 73 73 74 bool pmFlatField(pmReadout *in, const pmReadout *flat, ps MaskType badFlat)74 bool pmFlatField(pmReadout *in, const pmReadout *flat, psImageMaskType badFlat) 75 75 { 76 76 PS_ASSERT_PTR_NON_NULL(in, false); … … 81 81 PS_ASSERT_IMAGE_NON_EMPTY(flat->image, false); 82 82 if (in->mask) { 83 PS_ASSERT_IMAGE_TYPE(in->mask, PS_TYPE_ MASK, false);83 PS_ASSERT_IMAGE_TYPE(in->mask, PS_TYPE_IMAGE_MASK, false); 84 84 PS_ASSERT_IMAGES_SIZE_EQUAL(in->mask, in->image, false); 85 85 } 86 86 PS_ASSERT_IMAGE_TYPE(flat->image, in->image->type.type, false); 87 87 if (flat->mask) { 88 PS_ASSERT_IMAGE_TYPE(flat->mask, PS_TYPE_ MASK, false);88 PS_ASSERT_IMAGE_TYPE(flat->mask, PS_TYPE_IMAGE_MASK, false); 89 89 PS_ASSERT_IMAGES_SIZE_EQUAL(flat->mask, flat->image, false); 90 90 } … … 148 148 psArrayAdd(job->args, 1, flatImage); 149 149 psArrayAdd(job->args, 1, flatMask); 150 PS_ARRAY_ADD_SCALAR(job->args, badFlat, PS_TYPE_ U8);150 PS_ARRAY_ADD_SCALAR(job->args, badFlat, PS_TYPE_IMAGE_MASK); 151 151 PS_ARRAY_ADD_SCALAR(job->args, xOffset, PS_TYPE_S32); 152 152 PS_ARRAY_ADD_SCALAR(job->args, yOffset, PS_TYPE_S32); -
branches/eam_branch_20081230/psModules/src/detrend/pmFlatField.h
r21072 r21079 5 5 * @author Paul Price, IfA 6 6 * 7 * @version $Revision: 1.14 $ $Name: not supported by cvs2svn $8 * @date $Date: 200 8-09-09 04:10:14$7 * @version $Revision: 1.14.16.1 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2009-01-02 05:13:00 $ 9 9 * Copyright 2004-2006 Institute for Astronomy, University of Hawaii 10 10 */ … … 25 25 bool pmFlatField(pmReadout *in, ///< Readout with input image 26 26 const pmReadout *flat, ///< Readout with flat image 27 ps MaskType badFlat ///< Mask value to give bad flat pixels27 psImageMaskType badFlat ///< Mask value to give bad flat pixels 28 28 ); 29 29 … … 38 38 const psImage *flatImage, ///< Flat-field image 39 39 const psImage *flatMask, ///< Flat-field mask 40 ps MaskType badFlag, ///< Mask value to give bad pixels40 psImageMaskType badFlag, ///< Mask value to give bad pixels 41 41 int xOffset, int yOffset, ///< Offset between input and flat-field 42 42 int rowStart, int rowStop ///< Scan range -
branches/eam_branch_20081230/psModules/src/detrend/pmFlatNormalize.c
r9730 r21079 9 9 10 10 #include "pmFlatNormalize.h" 11 12 // XXX this function should take the abstract mask names and set bad values in a more precise way 11 13 12 14 // I'm not sure that many many iterations are required, but rather suspect that the system converges within a … … 55 57 // Take the logarithms 56 58 psImage *flux = psImageCopy(NULL, bgMatrix, PS_TYPE_F32); // Copy of the input flux levels matrix 57 psImage *fluxMask = psImageAlloc(numChips, numExps, PS_TYPE_ U8); // Mask for bad measurements59 psImage *fluxMask = psImageAlloc(numChips, numExps, PS_TYPE_IMAGE_MASK); // Mask for bad measurements 58 60 psImageInit(fluxMask, 0); 59 psVector *gainMask = psVectorAlloc(numChips, PS_TYPE_ U8); // Mask for bad gains61 psVector *gainMask = psVectorAlloc(numChips, PS_TYPE_VECTOR_MASK); // Mask for bad gains 60 62 psVectorInit(gainMask, 0); 61 psVector *expMask = psVectorAlloc(numExps, PS_TYPE_ U8); // Mask for bad exposures63 psVector *expMask = psVectorAlloc(numExps, PS_TYPE_VECTOR_MASK); // Mask for bad exposures 62 64 psVectorInit(expMask, 0); 63 65 for (int i = 0; i < numChips; i++) { … … 75 77 } else { 76 78 // Blank out this measurement 77 fluxMask->data. U8[j][i] = 1;79 fluxMask->data.PS_TYPE_IMAGE_MASK_DATA[j][i] = 1; 78 80 flux->data.F32[j][i] = NAN; 79 81 } … … 90 92 int numFluxes = 0; // Number of fluxes 91 93 for (int i = 0; i < numExps; i++) { 92 if (expMask->data. U8[i]) {94 if (expMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) { 93 95 psTrace("psModules.detrend", 7, "Flux for exposure %d is masked.\n", i); 94 96 continue; … … 98 100 int number = 0; // Number of chips contributing 99 101 for (int j = 0; j < numChips; j++) { 100 if (!gainMask->data. U8[j] && !fluxMask->data.U8[i][j]) {102 if (!gainMask->data.PS_TYPE_VECTOR_MASK_DATA[j] && !fluxMask->data.PS_TYPE_IMAGE_MASK_DATA[i][j]) { 101 103 sum += flux->data.F32[i][j] - chipGains->data.F32[j]; 102 104 number++; … … 106 108 expFluxes->data.F32[i] = sum / (float)number; 107 109 } else { 108 expMask->data. U8[i] = 1;110 expMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 1; 109 111 expFluxes->data.F32[i] = NAN; 110 112 } … … 116 118 int numGains = 0; // Number of gains 117 119 for (int i = 0; i < numChips; i++) { 118 if (gainMask->data. U8[i]) {120 if (gainMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) { 119 121 continue; 120 122 } … … 122 124 int number = 0; // Numer of sources contributing 123 125 for (int j = 0; j < numExps; j++) { 124 if (!fluxMask->data. U8[j][i]) {126 if (!fluxMask->data.PS_TYPE_IMAGE_MASK_DATA[j][i]) { 125 127 sum += flux->data.F32[j][i] - expFluxes->data.F32[j]; 126 128 number++; … … 130 132 chipGains->data.F32[i] = sum / (float)number; 131 133 } else { 132 gainMask->data. U8[i] = 1;134 gainMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 1; 133 135 chipGains->data.F32[i] = NAN; 134 136 } … … 144 146 diff = 0.0; 145 147 for (int i = 0; i < numChips; i++) { 146 if (gainMask->data. U8[i]) {148 if (gainMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) { 147 149 continue; 148 150 } … … 151 153 } 152 154 for (int i = 0; i < numExps; i++) { 153 if (expMask->data. U8[i]) {155 if (expMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) { 154 156 continue; 155 157 } … … 171 173 // Un-log the vectors 172 174 for (int i = 0; i < numChips; i++) { 173 if (!gainMask->data. U8[i]) {175 if (!gainMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) { 174 176 chipGains->data.F32[i] = expf(chipGains->data.F32[i]); 175 177 } 176 178 } 177 179 for (int i = 0; i < numExps; i++) { 178 if (!expMask->data. U8[i]) {180 if (!expMask->data.PS_TYPE_VECTOR_MASK_DATA[i]) { 179 181 expFluxes->data.F32[i] = expf(expFluxes->data.F32[i]); 180 182 } -
branches/eam_branch_20081230/psModules/src/detrend/pmFringeStats.c
r13776 r21079 70 70 fringe->x = psVectorRecycle(fringe->x, fringe->nRequested, PS_TYPE_F32); 71 71 fringe->y = psVectorRecycle(fringe->y, fringe->nRequested, PS_TYPE_F32); 72 fringe->mask = psVectorRecycle(fringe->mask, fringe->nRequested, PS_TYPE_ U8);72 fringe->mask = psVectorRecycle(fringe->mask, fringe->nRequested, PS_TYPE_VECTOR_MASK); 73 73 fringe->x->n = fringe->y->n = fringe->mask->n = fringe->nRequested; 74 74 psVectorInit(fringe->mask, 0); … … 115 115 if (mask) { 116 116 PS_ASSERT_VECTOR_NON_NULL(mask, false); 117 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);117 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 118 118 PS_ASSERT_VECTOR_SIZE(mask, (long)numRows, false); 119 119 } … … 142 142 psMetadataAddF32(row, PS_LIST_TAIL, "x", PS_META_REPLACE, "Fringe position in x", x->data.F32[i]); 143 143 psMetadataAddF32(row, PS_LIST_TAIL, "y", PS_META_REPLACE, "Fringe position in y", y->data.F32[i]); 144 ps U8maskValue = 0;145 if (mask && mask->data. U8[i]) {144 psVectorMaskType maskValue = 0; 145 if (mask && mask->data.PS_TYPE_VECTOR_MASK_DATA[i]) { 146 146 maskValue = 0xff; 147 147 } 148 psMetadataAdd U8(row, PS_LIST_TAIL, "mask", PS_META_REPLACE, "Mask", maskValue);148 psMetadataAddVectorMask(row, PS_LIST_TAIL, "mask", PS_META_REPLACE, "Mask", maskValue); 149 149 table->data[i] = row; 150 150 } … … 207 207 psVector *x = psVectorAlloc(numRows, PS_TYPE_F32); // x position 208 208 psVector *y = psVectorAlloc(numRows, PS_TYPE_F32); // y position 209 psVector *mask = psVectorAlloc(numRows, PS_TYPE_ U8); // mask209 psVector *mask = psVectorAlloc(numRows, PS_TYPE_VECTOR_MASK); // mask 210 210 regions->x = x; 211 211 regions->y = y; 212 212 regions->mask = mask; 213 213 214 #define READ_REGIONS_ROW(VECTOR, TYPE, NAME, DESCRIPTION) \215 VECTOR->data. TYPE[i] = psMetadataLookup##TYPE(&mdok, row, NAME); \214 #define READ_REGIONS_ROW(VECTOR, TYPE, DATATYPE, NAME, DESCRIPTION) \ 215 VECTOR->data.DATATYPE[i] = psMetadataLookup##TYPE(&mdok, row, NAME); \ 216 216 if (!mdok) { \ 217 217 psError(PS_ERR_IO, true, "Unable to find " #DESCRIPTION " .\n"); \ … … 224 224 for (long i = 0; i < numRows; i++) { 225 225 psMetadata *row = table->data[i]; // Table row 226 READ_REGIONS_ROW(x, F32, "x", "x position");227 READ_REGIONS_ROW(y, F32, "y", "y position");228 READ_REGIONS_ROW(mask, U8, "mask", "mask");226 READ_REGIONS_ROW(x, F32, F32, "x", "x position"); 227 READ_REGIONS_ROW(y, F32, F32, "y", "y position"); 228 READ_REGIONS_ROW(mask, VectorMask, PS_TYPE_VECTOR_MASK_DATA, "mask", "mask"); 229 229 } 230 230 psFree(table); … … 259 259 } 260 260 261 pmFringeStats *pmFringeStatsMeasure(pmFringeRegions *fringe, const pmReadout *readout, ps MaskType maskVal)261 pmFringeStats *pmFringeStatsMeasure(pmFringeRegions *fringe, const pmReadout *readout, psImageMaskType maskVal) 262 262 { 263 263 PS_ASSERT_PTR_NON_NULL(fringe, NULL); … … 490 490 newRegions->x = psVectorAlloc(numPoints, PS_TYPE_F32); 491 491 newRegions->y = psVectorAlloc(numPoints, PS_TYPE_F32); 492 newRegions->mask = psVectorAlloc(numPoints, PS_TYPE_ U8);492 newRegions->mask = psVectorAlloc(numPoints, PS_TYPE_VECTOR_MASK); 493 493 pmFringeStats *newStats = pmFringeStatsAlloc(newRegions); // The new list of statistics 494 494 … … 500 500 memcpy(&newRegions->x->data.F32[offset], regions->x->data.F32, regions->x->n * sizeof(psF32)); 501 501 memcpy(&newRegions->y->data.F32[offset], regions->y->data.F32, regions->y->n * sizeof(psF32)); 502 memcpy(&newRegions->mask->data. U8[offset], regions->mask->data.U8, regions->mask->n * sizeof(psU8));502 memcpy(&newRegions->mask->data.PS_TYPE_VECTOR_MASK_DATA[offset], regions->mask->data.PS_TYPE_VECTOR_MASK_DATA, regions->mask->n * sizeof(psVectorMaskType)); 503 503 memcpy(&newStats->f->data.F32[offset], fringe->f->data.F32, fringe->f->n * sizeof(psF32)); 504 504 memcpy(&newStats->df->data.F32[offset], fringe->df->data.F32, fringe->df->n * sizeof(psF32)); … … 549 549 if (mask) { 550 550 PS_ASSERT_VECTOR_NON_NULL(mask, false); 551 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_ U8, false);551 PS_ASSERT_VECTOR_TYPE(mask, PS_TYPE_VECTOR_MASK, false); 552 552 PS_ASSERT_VECTOR_SIZE(mask, (long)numRows, false); 553 553 } … … 580 580 psMetadataAddF32(row, PS_LIST_TAIL, "x", PS_META_REPLACE, "Fringe position in x", x->data.F32[i]); 581 581 psMetadataAddF32(row, PS_LIST_TAIL, "y", PS_META_REPLACE, "Fringe position in y", y->data.F32[i]); 582 ps U8maskValue = 0; // Mask value583 if (mask && mask->data. U8[i]) {582 psVectorMaskType maskValue = 0; // Mask value 583 if (mask && mask->data.PS_TYPE_VECTOR_MASK_DATA[i]) { 584 584 maskValue = 0xff; 585 585 } … … 601 601 psFree(df); 602 602 603 psMetadataAdd U8(row, PS_LIST_TAIL, "mask", PS_META_REPLACE, "Mask", maskValue);603 psMetadataAddVectorMask(row, PS_LIST_TAIL, "mask", PS_META_REPLACE, "Mask", maskValue); 604 604 table->data[i] = row; 605 605 } … … 648 648 psVector *x = psVectorAlloc(numRows, PS_TYPE_F32); // x position 649 649 psVector *y = psVectorAlloc(numRows, PS_TYPE_F32); // y position 650 psVector *mask = psVectorAlloc(numRows, PS_TYPE_ U8); // mask650 psVector *mask = psVectorAlloc(numRows, PS_TYPE_VECTOR_MASK); // mask 651 651 regions->x = x; 652 652 regions->y = y; … … 656 656 psArray *fringes = NULL; // Array of fringes, to return 657 657 658 #define READ_FRINGES_VECTOR_ROW(VECTOR, TYPE, NAME, DESCRIPTION) \658 #define READ_FRINGES_VECTOR_ROW(VECTOR, TYPE, DATATYPE, NAME, DESCRIPTION) \ 659 659 { \ 660 VECTOR->data. TYPE[i] = psMetadataLookup##TYPE(&mdok, row, NAME); \660 VECTOR->data.DATATYPE[i] = psMetadataLookup##TYPE(&mdok, row, NAME); \ 661 661 if (!mdok) { \ 662 662 psError(PS_ERR_IO, true, "Unable to find " #DESCRIPTION " for row %ld.\n", i); \ … … 686 686 } 687 687 688 // XXX : need to extend this to support arbitrary types for the vectors on disk 688 689 // Translate the table into vectors 689 690 for (long i = 0; i < numRows; i++) { 690 691 psMetadata *row = table->data[i]; // Table row 691 READ_FRINGES_VECTOR_ROW(x, F32, "x", "x position");692 READ_FRINGES_VECTOR_ROW(y, F32, "y", "y position");693 READ_FRINGES_VECTOR_ROW(mask, U8, "mask", "mask");692 READ_FRINGES_VECTOR_ROW(x, F32, F32, "x", "x position"); 693 READ_FRINGES_VECTOR_ROW(y, F32, F32, "y", "y position"); 694 READ_FRINGES_VECTOR_ROW(mask, VectorMask, PS_TYPE_VECTOR_MASK_DATA, "mask", "mask"); 694 695 READ_FRINGES_ARRAY_ROW(f, F32, "f", "fringe measurement"); 695 696 READ_FRINGES_ARRAY_ROW(df, F32, "df", "fringe error"); … … 782 783 double matrix = 0.0; // The matrix sum 783 784 for (int k = 0; k < numPoints; k++) { 784 if (!mask->data. U8[k]) {785 if (!mask->data.PS_TYPE_VECTOR_MASK_DATA[k]) { 785 786 psF32 f1 = (fringe1) ? fringe1->data.F32[k] : 1.0; // Contribution from i fringe 786 787 psF32 f2 = (fringe2) ? fringe2->data.F32[k] : 1.0; // Contribution from j fringe … … 799 800 double vector = 0.0; // The vector sum 800 801 for (int k = 0; k < numPoints; k++) { 801 if (!mask->data. U8[k]) {802 if (!mask->data.PS_TYPE_VECTOR_MASK_DATA[k]) { 802 803 psF32 f1 = (fringe1) ? fringe1->data.F32[k] : 1.0; // Contribution from fringe 1 803 804 psF32 s = science->f->data.F32[k]; // Contribution from science measurement … … 855 856 856 857 for (int i = 0; i < diff->n; i++) { 857 if (!mask->data. U8[i]) {858 if (!mask->data.PS_TYPE_VECTOR_MASK_DATA[i]) { 858 859 float difference = science->f->data.F32[i] - scale->coeff->data.F32[0]; 859 860 for (int j = 0; j < fringes->n; j++) { … … 877 878 assert(diffs->type.type == PS_TYPE_F32); 878 879 assert(mask); 879 assert(mask->type.type == PS_TYPE_ U8);880 assert(mask->type.type == PS_TYPE_VECTOR_MASK); 880 881 assert(diffs->n == mask->n); 881 882 … … 888 889 int numClipped = 0; // Number clipped 889 890 for (int i = 0; i < diffs->n; i++) { 890 psTrace("psModules.detrend", 10, "Region %d (%d): %f\n", i, mask->data. U8[i], diffs->data.F32[i]);891 if (!mask->data. U8[i] && fabs(diffs->data.F32[i]) > middle + thresh) {891 psTrace("psModules.detrend", 10, "Region %d (%d): %f\n", i, mask->data.PS_TYPE_VECTOR_MASK_DATA[i], diffs->data.F32[i]); 892 if (!mask->data.PS_TYPE_VECTOR_MASK_DATA[i] && fabs(diffs->data.F32[i]) > middle + thresh) { 892 893 psTrace("psModules.detrend", 5, "Masking %d: %f\n", i, diffs->data.F32[i]); 893 mask->data. U8[i] = 1;894 mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 1; 894 895 numClipped++; 895 896 } … … 931 932 // Set up the mask 932 933 if (!regions->mask) { 933 regions->mask = psVectorAlloc(numRegions, PS_TYPE_ U8);934 regions->mask = psVectorAlloc(numRegions, PS_TYPE_VECTOR_MASK); 934 935 psVectorInit(regions->mask, 0); 935 936 } … … 946 947 for (int j = 0; j < numRegions; j++) { 947 948 if (!isfinite(fringe->f->data.F32[j])) { 948 mask->data. U8[j] = 1;949 mask->data.PS_TYPE_VECTOR_MASK_DATA[j] = 1; 949 950 psTrace("psModules.detrend", 9, "Masking region %d because not finite in fringe %d.\n", j, i); 950 951 } … … 956 957 FILE *f = fopen ("fringe.dat", "w"); 957 958 for (int j = 0; j < numRegions; j++) { 958 if (mask->data. U8[j]) continue;959 if (mask->data.PS_TYPE_VECTOR_MASK_DATA[j]) continue; 959 960 fprintf (f, "%d %f %f ", j, science->f->data.F32[j], science->df->data.F32[j]); 960 961 for (int i = 0; i < fringes->n; i++) { … … 1014 1015 // XXX note that this modifies the input fringe images 1015 1016 psImage *pmFringeCorrect(pmReadout *readout, pmFringeRegions *fringes, psArray *fringeImages, 1016 psArray *fringeStats, ps MaskType maskVal, float rej,1017 psArray *fringeStats, psImageMaskType maskVal, float rej, 1017 1018 unsigned int nIter, float keepFrac) 1018 1019 { -
branches/eam_branch_20081230/psModules/src/detrend/pmFringeStats.h
r11253 r21079 5 5 * @author Paul Price, IfA 6 6 * 7 * @version $Revision: 1.12 $ $Name: not supported by cvs2svn $8 * @date $Date: 200 7-01-24 02:54:15$7 * @version $Revision: 1.12.78.1 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2009-01-02 05:13:00 $ 9 9 * Copyright 2004-2006 Institute for Astronomy, University of Hawaii 10 10 */ … … 102 102 pmFringeStats *pmFringeStatsMeasure(pmFringeRegions *fringe, ///< Fringe regions at which to measure 103 103 const pmReadout *readout, ///< Readout for which to measure 104 ps MaskType maskVal ///< Mask value for image104 psImageMaskType maskVal ///< Mask value for image 105 105 ); 106 106 … … 206 206 psArray *fringeImages, ///< Fringe template images to use in correction 207 207 psArray *fringeStats, ///< Fringe stats (for templates) to use in correction 208 ps MaskType maskVal, ///< Value to mask for science image208 psImageMaskType maskVal, ///< Value to mask for science image 209 209 float rej, ///< Rejection threshold, for pmFringeScaleMeasure 210 210 unsigned int nIter, ///< Maximum number of iterations, for pmFringeScaleMeasure -
branches/eam_branch_20081230/psModules/src/detrend/pmMaskBadPixels.c
r21072 r21079 14 14 #include "pmMaskBadPixels.h" 15 15 16 bool pmMaskBadPixels(pmReadout *input, const pmReadout *mask, ps MaskType maskVal)16 bool pmMaskBadPixels(pmReadout *input, const pmReadout *mask, psImageMaskType maskVal) 17 17 { 18 18 PS_ASSERT_PTR_NON_NULL(input, false); 19 19 PS_ASSERT_PTR_NON_NULL(input->mask, false); 20 PS_ASSERT_IMAGE_TYPE(input->mask, PS_TYPE_ MASK, false);20 PS_ASSERT_IMAGE_TYPE(input->mask, PS_TYPE_IMAGE_MASK, false); 21 21 22 22 PS_ASSERT_PTR_NON_NULL(mask, false); 23 23 PS_ASSERT_PTR_NON_NULL(mask->mask, false); 24 PS_ASSERT_IMAGE_TYPE(mask->mask, PS_TYPE_ MASK, false);24 PS_ASSERT_IMAGE_TYPE(mask->mask, PS_TYPE_IMAGE_MASK, false); 25 25 26 26 psImage *inMask = input->mask; … … 53 53 int offRow = input->row0 - mask->row0; 54 54 55 // masks are both of type PS_TYPE_ MASK56 ps MaskType **exVal = exMask->data.U8;57 ps MaskType **inVal = inMask->data.U8;55 // masks are both of type PS_TYPE_IMAGE_MASK 56 psImageMaskType **exVal = exMask->data.PS_TYPE_IMAGE_MASK_DATA; 57 psImageMaskType **inVal = inMask->data.PS_TYPE_IMAGE_MASK_DATA; 58 58 59 59 // apply exMask values … … 82 82 83 83 bool pmMaskFlagSuspectPixels(pmReadout *output, const pmReadout *readout, float median, float stdev, 84 float rej, ps MaskType maskVal)84 float rej, psImageMaskType maskVal) 85 85 { 86 86 PS_ASSERT_PTR_NON_NULL(readout, false); … … 92 92 PS_ASSERT_IMAGE_NON_EMPTY(readout->mask, false); 93 93 PS_ASSERT_IMAGES_SIZE_EQUAL(readout->image, readout->mask, false); 94 PS_ASSERT_IMAGE_TYPE(readout->mask, PS_TYPE_ MASK, false);94 PS_ASSERT_IMAGE_TYPE(readout->mask, PS_TYPE_IMAGE_MASK, false); 95 95 } 96 96 PS_ASSERT_PTR_NON_NULL(output, false); … … 128 128 for (int x = 0; x < image->numCols; x++) { 129 129 if (fabs((image->data.F32[y][x] - median) / stdev) < rej) continue; 130 if (mask && (mask->data.PS_TYPE_ MASK_DATA[y][x] & maskVal)) continue;130 if (mask && (mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & maskVal)) continue; 131 131 suspect->data.F32[y][x] += 1.0; 132 132 } … … 142 142 143 143 // the maskVal supplied here is the value SET for this mask (ie, it is not used to avoid pixels) 144 bool pmMaskIdentifyBadPixels(pmReadout *output, ps MaskType maskVal, float thresh, pmMaskIdentifyMode mode)144 bool pmMaskIdentifyBadPixels(pmReadout *output, psImageMaskType maskVal, float thresh, pmMaskIdentifyMode mode) 145 145 { 146 146 PS_ASSERT_PTR_NON_NULL(output, false); … … 155 155 PS_ASSERT_IMAGE_NON_EMPTY(output->mask, false); 156 156 PS_ASSERT_IMAGES_SIZE_EQUAL(output->mask, suspects, false); 157 PS_ASSERT_IMAGE_TYPE(output->mask, PS_TYPE_ MASK, false);157 PS_ASSERT_IMAGE_TYPE(output->mask, PS_TYPE_IMAGE_MASK, false); 158 158 } else { 159 output->mask = psImageAlloc(suspects->numCols, suspects->numRows, PS_TYPE_ MASK);159 output->mask = psImageAlloc(suspects->numCols, suspects->numRows, PS_TYPE_IMAGE_MASK); 160 160 } 161 161 int num = psMetadataLookupS32(NULL, output->analysis, PM_MASK_ANALYSIS_NUM); // Number of inputs … … 246 246 for (int x = 0; x < suspects->numCols; x++) { 247 247 if (suspects->data.F32[y][x] >= limit) { 248 badpix->data.PS_TYPE_ MASK_DATA[y][x] = maskVal;248 badpix->data.PS_TYPE_IMAGE_MASK_DATA[y][x] = maskVal; 249 249 } 250 250 } -
branches/eam_branch_20081230/psModules/src/detrend/pmMaskBadPixels.h
r17228 r21079 5 5 * @author Eugene Magnier, IfA 6 6 * 7 * @version $Revision: 1.16 $ $Name: not supported by cvs2svn $8 * @date $Date: 200 8-03-29 03:10:17$7 * @version $Revision: 1.16.44.1 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2009-01-02 05:13:00 $ 9 9 * Copyright 2004 Institute for Astronomy, University of Hawaii 10 10 */ … … 40 40 bool pmMaskBadPixels(pmReadout *input, ///< Input science image 41 41 const pmReadout *mask, ///< Mask image to apply 42 ps MaskType maskVal ///< Mask value to apply42 psImageMaskType maskVal ///< Mask value to apply 43 43 ); 44 44 … … 56 56 float stdev, ///< Image standard deviation 57 57 float rej, ///< Rejection threshold (standard deviations) 58 ps MaskType maskVal ///< Mask value for statistics58 psImageMaskType maskVal ///< Mask value for statistics 59 59 ); 60 60 … … 64 64 /// according to the chosen mode. 65 65 bool pmMaskIdentifyBadPixels(pmReadout *output, ///< Output readout, with suspect pixels imageOut 66 ps MaskType maskVal, ///< Value to set for bad pixels66 psImageMaskType maskVal, ///< Value to set for bad pixels 67 67 float thresh, ///< Threshold for bad pixel 68 68 pmMaskIdentifyMode mode ///< Mode for identifying bad pixels -
branches/eam_branch_20081230/psModules/src/detrend/pmOverscan.c
r19846 r21079 67 67 psVector *reduced = psVectorAlloc(pixels->n, PS_TYPE_F32); // Overscan for each row 68 68 psVector *ordinate = psVectorAlloc(pixels->n, PS_TYPE_F32); // Ordinate 69 psVector *mask = psVectorAlloc(pixels->n, PS_TYPE_ U8); // Mask for fitting69 psVector *mask = psVectorAlloc(pixels->n, PS_TYPE_VECTOR_MASK); // Mask for fitting 70 70 71 71 for (int i = 0; i < pixels->n; i++) { 72 72 psVector *values = pixels->data[i]; // Vector with overscan values 73 73 if (values->n > 0) { 74 mask->data. U8[i] = 0;74 mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 0; 75 75 ordinate->data.F32[i] = 2.0*(float)i/(float)pixels->n - 1.0; // Scale to [-1,1] 76 76 psVectorStats(myStats, values, NULL, NULL, 0); … … 82 82 } else { 83 83 // We'll fit this one out 84 mask->data. U8[i] = 1;84 mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 1; 85 85 } 86 86 } -
branches/eam_branch_20081230/psModules/src/detrend/pmRemnance.c
r21072 r21079 13 13 14 14 bool pmRemnance(pmReadout *ro, ///< Readout with input image 15 ps MaskType maskVal, ///< Value of mask16 ps MaskType maskRem, ///< Value to give remance15 psImageMaskType maskVal, ///< Value of mask 16 psImageMaskType maskRem, ///< Value to give remance 17 17 int size, ///< Size of accumulation patches 18 18 float threshold ///< Threshold for masking … … 23 23 PM_ASSERT_READOUT_MASK(ro, false); 24 24 25 psImage *image = ro->image, *mask = ro->mask; // Mask and image from readout 25 psImage *image = ro->image; 26 psImage *mask = ro->mask; // Mask and image from readout 27 26 28 int numCols = image->numCols, numRows = image->numRows; // Size of image 27 29 … … 33 35 psErrorClear(); 34 36 psWarning("Unable to calculate image statistics: masking entire readout."); 35 psBinaryOp(mask, mask, "|", psScalarAlloc(maskRem, PS_TYPE_ MASK));37 psBinaryOp(mask, mask, "|", psScalarAlloc(maskRem, PS_TYPE_IMAGE_MASK)); 36 38 psFree(stats); 37 39 psFree(rng); … … 57 59 } 58 60 for (int y = min; y < max; y++) { 59 if (mask->data.PS_TYPE_ MASK_DATA[y][x] & maskVal) {61 if (mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & maskVal) { 60 62 continue; 61 63 } … … 84 86 } 85 87 for (int y = 0; y < maxMask; y++) { 86 mask->data.PS_TYPE_ MASK_DATA[y][x] |= maskRem;88 mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= maskRem; 87 89 } 88 90 numMasked += maxMask; -
branches/eam_branch_20081230/psModules/src/detrend/pmRemnance.h
r21072 r21079 13 13 // GPC1 leaves remnance that flows down from where the annoyed pixels are. 14 14 bool pmRemnance(pmReadout *ro, ///< Readout with input image 15 ps MaskType maskVal, ///< Value of mask16 ps MaskType maskRem, ///< Value to give remance15 psImageMaskType maskVal, ///< Value of mask 16 psImageMaskType maskRem, ///< Value to give remance 17 17 int size, ///< Size of accumulation patches 18 18 float threshold ///< Threshold for masking -
branches/eam_branch_20081230/psModules/src/detrend/pmShifts.c
r15322 r21079 412 412 } 413 413 414 bool pmShiftsConvolve(pmReadout *detrend, const pmCell *source, ps MaskType maskVal)414 bool pmShiftsConvolve(pmReadout *detrend, const pmCell *source, psImageMaskType maskVal) 415 415 { 416 416 PS_ASSERT_PTR(detrend, false); -
branches/eam_branch_20081230/psModules/src/detrend/pmShifts.h
r12696 r21079 46 46 bool pmShiftsConvolve(pmReadout *detrend, ///< Detrend readout to convolve 47 47 const pmCell *source, ///< Science exposure, containing a shifts kernel 48 ps MaskType maskVal ///< Mask value to smear48 psImageMaskType maskVal ///< Mask value to smear 49 49 ); 50 50 -
branches/eam_branch_20081230/psModules/src/detrend/pmShutterCorrection.h
r21072 r21079 5 5 * @author Paul Price, IfA 6 6 * 7 * @version $Revision: 1.21 $ $Name: not supported by cvs2svn $8 * @date $Date: 200 8-09-09 04:10:14$7 * @version $Revision: 1.21.16.1 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2009-01-02 05:13:00 $ 9 9 * Copyright 2006 Institute for Astronomy, University of Hawaii 10 10 */ … … 91 91 float offref, ///< Reference time offset 92 92 int nIter, ///< Number of iterations 93 float rej, ///< Rejection threshold (sigma) 94 psMaskType maskVal ///< Mask value 93 float rej ///< Rejection threshold (sigma) 95 94 ); 96 95 … … 121 120 int nIter, ///< Number of iterations 122 121 float rej, ///< Rejection threshold (sigma) 123 ps MaskType maskVal ///< Mask value122 psImageMaskType maskVal ///< Mask value 124 123 ); 125 124 … … 135 134 psImage *mask, ///< Input mask image 136 135 float exptime, ///< Exposure time to which to correct 137 ps MaskType blank, ///< Mask value to give blank pixels136 psImageMaskType blank, ///< Mask value to give blank pixels 138 137 int rowStart, int rowStop ///< Range of scan 139 138 ); … … 145 144 pmReadout *readout, ///< Readout to which to apply shutter correction 146 145 const pmReadout *shutter, ///< Shutter correction readout, with dT for each pixel 147 ps MaskType blank ///< Value to give blank pixels146 psImageMaskType blank ///< Value to give blank pixels 148 147 ); 149 148 … … 181 180 psStatsOptions meanStat, ///< Statistic to use for mean 182 181 psStatsOptions stdevStat, ///< Statistic to use for stdev 183 ps MaskType maskVal, ///< Mask value182 psImageMaskType maskVal, ///< Mask value 184 183 psRandom *rng ///< Random number generator 185 184 ); … … 201 200 int nIter, ///< Number of iterations 202 201 float rej, ///< Rejection threshold (sigma) 203 ps MaskType maskVal ///< Mask value202 psImageMaskType maskVal ///< Mask value 204 203 ); 205 204 206 205 // prepare outputs for shutter correction 207 206 bool pmShutterCorrectionGeneratePrepare(pmReadout *shutter, pmReadout *pattern, const psArray *inputs, 208 ps MaskType maskVal);207 psImageMaskType maskVal); 209 208 210 209 /// @} -
branches/eam_branch_20081230/psModules/src/detrend/pmSkySubtract.c
r12742 r21079 6 6 * @author GLG, MHPCC 7 7 * 8 * @version $Revision: 1.3 $ $Name: not supported by cvs2svn $9 * @date $Date: 200 7-04-04 22:42:48$8 * @version $Revision: 1.3.74.1 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2009-01-02 05:13:00 $ 10 10 * 11 11 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 114 114 115 115 psVector *binVector = psVectorAlloc(binFactor * binFactor, PS_TYPE_F32); 116 psVector *binMask = psVectorAlloc(binFactor * binFactor, PS_TYPE_ U8);116 psVector *binMask = psVectorAlloc(binFactor * binFactor, PS_TYPE_VECTOR_MASK); 117 117 psStats *myStats = psStatsAlloc(statOptions); 118 118 … … 126 126 binVector->data.F32[count] = 127 127 origImage->data.F32[row + binRow][col + binCol]; 128 binMask->data. U8[count] = 0;128 binMask->data.PS_TYPE_VECTOR_MASK_DATA[count] = 0; 129 129 } else { 130 130 binVector->data.F32[count] = 0.0; 131 binMask->data. U8[count] = 1;131 binMask->data.PS_TYPE_VECTOR_MASK_DATA[count] = 1; 132 132 } 133 133 count++; … … 313 313 PS_ASSERT_IMAGE_NON_NULL(maskImage, NULL); 314 314 PS_ASSERT_IMAGE_NON_EMPTY(maskImage, NULL); 315 PS_ASSERT_IMAGE_TYPE(maskImage, PS_TYPE_ U8, NULL);315 PS_ASSERT_IMAGE_TYPE(maskImage, PS_TYPE_IMAGE_MASK, NULL); 316 316 PS_ASSERT_IMAGES_SIZE_EQUAL(dataImage, maskImage, NULL); 317 317 psS32 oldPolyX = -1; … … 361 361 for (x=0;x<dataImage->numRows;x++) { 362 362 for (y=0;y<dataImage->numCols;y++) { 363 if (maskImage->data. U8[x][y] == 0) {363 if (maskImage->data.PS_TYPE_IMAGE_MASK_DATA[x][y] == 0) { 364 364 buildSums((psF64) x, (psF64) y, myPoly->nX, myPoly->nY); 365 365 … … 572 572 573 573 if (in->mask != NULL) { 574 binnedMaskImage = psImageCopy(binnedMaskImage, in->mask, PS_TYPE_ U8);574 binnedMaskImage = psImageCopy(binnedMaskImage, in->mask, PS_TYPE_IMAGE_MASK); 575 575 if (binnedMaskImage == NULL) { 576 576 psError(PS_ERR_UNKNOWN, false, "psImageCopy() returned NULL. Returning in image.\n"); … … 581 581 binnedMaskImage = psImageAlloc(binnedImage->numCols, 582 582 binnedImage->numRows, 583 PS_TYPE_ U8);583 PS_TYPE_IMAGE_MASK); 584 584 psImageInit(binnedMaskImage, 0); 585 585 } … … 592 592 binnedMaskImage = psImageAlloc(binnedImage->numCols, 593 593 binnedImage->numRows, 594 PS_TYPE_ U8);594 PS_TYPE_IMAGE_MASK); 595 595 psImageInit(binnedMaskImage, 0); 596 596 } … … 625 625 if (fabs(binnedImage->data.F32[row][col] - binnedMean) > 626 626 (clipSD * binnedStdev)) { 627 binnedMaskImage->data. U8[row][col] = 1;627 binnedMaskImage->data.PS_TYPE_IMAGE_MASK_DATA[row][col] = 1; 628 628 } 629 629 } -
branches/eam_branch_20081230/psModules/src/imcombine/pmImageCombine.c
r21072 r21079 8 8 * @author GLG, MHPCC 9 9 * 10 * @version $Revision: 1.12 $ $Name: not supported by cvs2svn $11 * @date $Date: 200 7-04-04 22:42:48$10 * @version $Revision: 1.12.78.1 $ $Name: not supported by cvs2svn $ 11 * @date $Date: 2009-01-02 05:13:00 $ 12 12 * 13 13 * XXX: pmRejectPixels() has a known bug with the pmImageTransform() call. … … 17 17 */ 18 18 19 // XXX this is somewhat messy and unclear on the masking. 20 19 21 #ifdef HAVE_CONFIG_H 20 22 #include <config.h> … … 53 55 54 56 buffer->pixels = psVectorAlloc(numImages, PS_TYPE_F32); 55 buffer->masks = psVectorAlloc(numImages, PS_TYPE_ MASK);57 buffer->masks = psVectorAlloc(numImages, PS_TYPE_VECTOR_MASK); 56 58 buffer->errors = psVectorAlloc(numImages, PS_TYPE_F32); 57 59 buffer->stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_STDEV); … … 67 69 const psArray *errors, // Array of input error images 68 70 const psArray *masks, // Array of input masks 69 ps U32maskVal, // Mask value71 psImageMaskType maskVal, // Mask value 70 72 psS32 numIter, // Number of rejection iterations 71 73 psF32 sigmaClip, // Number of standard deviations at which to reject … … 115 117 if (masks) { 116 118 psImage *mask = masks->data[i]; // Mask of interest 117 pixelMasks->data.U8[i] = mask->data.U8[y][x]; 118 } // Set the pixel error data, if necessary 119 pixelMasks->data.PS_TYPE_VECTOR_MASK_DATA[i] = (mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & maskVal); 120 } 121 // Set the pixel error data, if necessary 119 122 if (errors) { 120 123 psImage *error = errors->data[i]; // Error image of interest … … 128 131 for (int iter = 0; iter < numIter; iter++) { 129 132 // Combine all the pixels, using the specified stat. 130 if (!psVectorStats(stats, pixelData, pixelErrors, pixelMasks, maskVal)) {133 if (!psVectorStats(stats, pixelData, pixelErrors, pixelMasks, 0xff)) { 131 134 combine->data.F32[y][x] = NAN; 132 135 psFree(buffer); … … 148 151 float stdev = stats->sampleStdev; 149 152 for (int i = 0; i < numImages; i++) { 150 if (!(pixelMasks->data. U8[i] & maskVal) &&153 if (!(pixelMasks->data.PS_TYPE_VECTOR_MASK_DATA[i] & 0xff) && 151 154 fabs(pixelData->data.F32[i] - combinedPixel) > sigmaClip * stdev) { 152 155 // Reject pixel as questionable 153 156 numRejects++; 154 pixelMasks->data. U8[i] = maskVal;157 pixelMasks->data.PS_TYPE_IMAGE_MASK_DATA[i] = 0xff; 155 158 if (questionablePixels) { 156 159 // Mark the pixel as questionable … … 191 194 const psArray *errors, ///< Array of input error images 192 195 const psArray *masks, ///< Array of input masks 193 ps U32maskVal, ///< Mask value196 psImageMaskType maskVal, ///< Mask value 194 197 const psPixels *pixels, ///< Pixels to combine 195 198 psS32 numIter, ///< Number of rejection iterations … … 231 234 psImage *mask = masks->data[i]; 232 235 PS_ASSERT_IMAGE_SIZE(mask, numCols, numRows, NULL); 233 PS_ASSERT_IMAGE_TYPE(mask, PS_TYPE_ MASK, NULL);236 PS_ASSERT_IMAGE_TYPE(mask, PS_TYPE_IMAGE_MASK, NULL); 234 237 } 235 238 } … … 319 322 int num = 0; 320 323 psVector *pixels = psVectorAlloc(8, PS_TYPE_F32); // Array of pixels 321 psVector *mask = psVectorAlloc(8, PS_TYPE_ U8); // Corresponding mask324 psVector *mask = psVectorAlloc(8, PS_TYPE_VECTOR_MASK); // Corresponding mask 322 325 323 326 // Get limits … … 329 332 for (int j = yMin; j <= yMax; j++) { 330 333 for (int i = xMin; i <= xMax; i++) { 331 if ((i != x) && (j != y) && (0 == imageMask->data. U8[j][i])) {334 if ((i != x) && (j != y) && (0 == imageMask->data.PS_TYPE_IMAGE_MASK_DATA[j][i])) { 332 335 pixels->data.F32[num] = image->data.F32[j][i]; 333 mask->data. U8[num] = 0;336 mask->data.PS_TYPE_VECTOR_MASK_DATA[num] = 0; 334 337 num++; 335 338 } else { 336 mask->data. U8[num] = 1;339 mask->data.PS_TYPE_VECTOR_MASK_DATA[num] = 1; 337 340 } 338 341 } … … 347 350 if ((i != x) && (j != y)) { 348 351 pixels->data.F32[num] = image->data.F32[j][i]; 349 mask->data. U8[num] = 0;352 mask->data.PS_TYPE_VECTOR_MASK_DATA[num] = 0; 350 353 num++; 351 354 } else { 352 mask->data. U8[num] = 1;355 mask->data.PS_TYPE_VECTOR_MASK_DATA[num] = 1; 353 356 } 354 357 } … … 473 476 for (psS32 i = 0 ; i < image->numRows ; i++) { 474 477 for (psS32 j = 0 ; j < image->numCols ; j++) { 475 imgF32->data.F32[i][j] = (psF32) image->data. U8[i][j];478 imgF32->data.F32[i][j] = (psF32) image->data.PS_TYPE_IMAGE_MASK_DATA[i][j]; 476 479 } 477 480 } … … 518 521 PS_ASSERT_IMAGE_NON_NULL(tmpMask, NULL); 519 522 PS_ASSERT_IMAGE_NON_EMPTY(tmpMask, NULL); 520 PS_ASSERT_IMAGE_TYPE(tmpMask, PS_TYPE_F32, NULL); 523 PS_ASSERT_IMAGE_TYPE(tmpMask, PS_TYPE_F32, NULL); // XXX really F32?? 521 524 PS_ASSERT_IMAGES_SIZE_EQUAL(tmpImage, tmpMask, NULL); 522 525 } … … 571 574 572 575 // 573 // Create a ps U8mask image from the list of cosmic pixels.576 // Create a psImageMaskType mask image from the list of cosmic pixels. 574 577 // 575 578 psImage *maskImage = NULL; -
branches/eam_branch_20081230/psModules/src/imcombine/pmStack.h
r21072 r21079 8 8 * @author GLG, MHPCC 9 9 * 10 * @version $Revision: 1.9 $ $Name: not supported by cvs2svn $11 * @date $Date: 200 8-11-01 02:59:33$10 * @version $Revision: 1.9.8.1 $ $Name: not supported by cvs2svn $ 11 * @date $Date: 2009-01-02 05:13:00 $ 12 12 * 13 13 * Copyright 2004-2007 Institute for Astronomy, University of Hawaii … … 43 43 bool pmStackCombine(pmReadout *combined,///< Combined readout (output) 44 44 psArray *input, ///< Input array of pmStackData 45 ps MaskType maskVal, ///< Mask value of bad pixels46 ps MaskType bad, ///< Mask value to give rejected pixels45 psImageMaskType maskVal, ///< Mask value of bad pixels 46 psImageMaskType bad, ///< Mask value to give rejected pixels 47 47 int kernelSize, ///< Half-size of the convolution kernel 48 48 int numIter, ///< Number of iterations -
branches/eam_branch_20081230/psModules/src/imcombine/pmSubtraction.h
r20568 r21079 6 6 * @author GLG, MHPCC 7 7 * 8 * @version $Revision: 1.34 $ $Name: not supported by cvs2svn $9 * @date $Date: 200 8-11-07 00:03:18$8 * @version $Revision: 1.34.6.1 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2009-01-02 05:13:00 $ 10 10 * Copyright 2004-207 Institute for Astronomy, University of Hawaii 11 11 */ … … 104 104 psImage *subMask, ///< Subtraction mask (or NULL) 105 105 int stride, ///< Size of convolution patches 106 ps MaskType maskBad, ///< Mask value to give bad pixels107 ps MaskType maskPoor, ///< Mask value to give poor pixels106 psImageMaskType maskBad, ///< Mask value to give bad pixels 107 psImageMaskType maskPoor, ///< Mask value to give poor pixels 108 108 float poorFrac, ///< Fraction for "poor" 109 109 float sysError, ///< Relative systematic error -
branches/eam_branch_20081230/psModules/src/imcombine/pmSubtractionMask.h
r21072 r21079 7 7 psImage *pmSubtractionMask(const psImage *refMask, ///< Mask for the reference image (will be convolved) 8 8 const psImage *inMask, ///< Mask for the input image, or NULL 9 ps MaskType maskVal, ///< Value to mask out9 psImageMaskType maskVal, ///< Value to mask out 10 10 int size, ///< Half-size of the kernel (pmSubtractionKernels.size) 11 11 int footprint, ///< Half-size of the kernel footprint … … 19 19 psImage *mask, ///< Mask (or NULL) 20 20 int size, ///< Kernel half-size 21 ps MaskType blank ///< Mask value for blank regions21 psImageMaskType blank ///< Mask value for blank regions 22 22 ); 23 23 -
branches/eam_branch_20081230/psModules/src/imcombine/pmSubtractionMatch.h
r20568 r21079 40 40 float rej, ///< Rejection threshold 41 41 float sysError, ///< Relative systematic error 42 ps MaskType maskVal, ///< Value to mask for input43 ps MaskType maskBad, ///< Mask for output bad pixels44 ps MaskType maskPoor, ///< Mask for output poor pixels42 psImageMaskType maskVal, ///< Value to mask for input 43 psImageMaskType maskBad, ///< Mask for output bad pixels 44 psImageMaskType maskPoor, ///< Mask for output poor pixels 45 45 float poorFrac, ///< Fraction for "poor" 46 46 float badFrac, ///< Maximum fraction of bad input pixels to accept -
branches/eam_branch_20081230/psModules/src/objects/pmModel.h
r20945 r21079 5 5 * @author EAM, IfA 6 6 * 7 * @version $Revision: 1.17 $ $Name: not supported by cvs2svn $8 * @date $Date: 200 8-12-09 21:16:09$7 * @version $Revision: 1.17.4.1 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2009-01-02 05:13:00 $ 9 9 * 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 150 150 pmModel *model, ///< The input pmModel 151 151 pmModelOpMode mode, ///< mode to control how the model is added into the image 152 ps MaskType maskVal///< Value to mask152 psImageMaskType maskVal ///< Value to mask 153 153 ); 154 154 … … 168 168 pmModel *model, ///< The input pmModel 169 169 pmModelOpMode mode, ///< mode to control how the model is added into the image 170 ps MaskType maskVal///< Value to mask170 psImageMaskType maskVal ///< Value to mask 171 171 ); 172 172 … … 175 175 pmModel *model, 176 176 pmModelOpMode mode, 177 ps MaskType maskVal,177 psImageMaskType maskVal, 178 178 int dx, 179 179 int dy); … … 183 183 pmModel *model, 184 184 pmModelOpMode mode, 185 ps MaskType maskVal,185 psImageMaskType maskVal, 186 186 int dx, 187 187 int dy); -
branches/eam_branch_20081230/psModules/src/objects/pmPSF.h
r20945 r21079 6 6 * @author EAM, IfA 7 7 * 8 * @version $Revision: 1.21 $ $Name: not supported by cvs2svn $9 * @date $Date: 200 8-12-09 21:16:09$8 * @version $Revision: 1.21.4.1 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2009-01-02 05:13:00 $ 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 11 11 */ … … 102 102 double pmPSF_SXYtoModel (psF32 *fittedPar); 103 103 104 bool pmGrowthCurveGenerate (pmReadout *readout, pmPSF *psf, bool ignore, ps MaskType maskVal, psMaskType mark);104 bool pmGrowthCurveGenerate (pmReadout *readout, pmPSF *psf, bool ignore, psImageMaskType maskVal, psImageMaskType mark); 105 105 pmPSF *pmPSFBuildSimple (char *typeName, float sxx, float syy, float sxy, ...); 106 106 -
branches/eam_branch_20081230/psModules/src/objects/pmPSFtry.c
r21075 r21079 5 5 * @author EAM, IfA 6 6 * 7 * @version $Revision: 1.67.4. 1$ $Name: not supported by cvs2svn $8 * @date $Date: 200 8-12-31 20:31:29$7 * @version $Revision: 1.67.4.2 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2009-01-02 05:13:00 $ 9 9 * 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 193 193 // exclude the poor fits 194 194 if (!status) { 195 psfTry->mask->data.PS_TYPE_ IMAGE_MASK_DATA[i] = PSFTRY_MASK_EXT_FAIL;195 psfTry->mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = PSFTRY_MASK_EXT_FAIL; 196 196 psTrace ("psModules.objects", 4, "masking %d (%d,%d) : status is poor\n", i, source->peak->x, source->peak->y); 197 197 continue; … … 283 283 psVector *flux = psVectorAlloc (psfTry->sources->n, PS_TYPE_F32); 284 284 psVector *chisq = psVectorAlloc (psfTry->sources->n, PS_TYPE_F32); 285 psVector *mask = psVectorAlloc (psfTry->sources->n, PS_TYPE_ MASK);285 psVector *mask = psVectorAlloc (psfTry->sources->n, PS_TYPE_VECTOR_MASK); 286 286 287 287 // generate the x and y vectors, and mask missing models … … 303 303 304 304 // linear clipped fit of chisq trend vs flux 305 bool result = psVectorClipFitPolynomial1D(psfTry->psf->ChiTrend, options->stats, mask, 306 0xff, chisq, NULL, flux); 305 bool result = psVectorClipFitPolynomial1D(psfTry->psf->ChiTrend, options->stats, mask, 0xff, chisq, NULL, flux); 307 306 psStatsOptions meanStat = psStatsMeanOption(options->stats->options); // Statistic for mean 308 307 psStatsOptions stdevStat = psStatsStdevOption(options->stats->options); // Statistic for stdev -
branches/eam_branch_20081230/psModules/src/objects/pmPSFtry.h
r20078 r21079 6 6 * @author EAM, IfA 7 7 * 8 * @version $Revision: 1.20 $ $Name: not supported by cvs2svn $9 * @date $Date: 200 8-10-13 02:00:25$8 * @version $Revision: 1.20.10.1 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2009-01-02 05:13:00 $ 10 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 11 11 */ … … 48 48 pmPSF *psf; ///< Add comment. 49 49 psArray *sources; ///< pointers to the original sources 50 psVector *mask; ///< Add comment.50 psVector *mask; ///< PS_TYPE_VECTOR_MASK to flag good and bad sources 51 51 psVector *metric; ///< Add comment. 52 52 psVector *metricErr; ///< Add comment. … … 89 89 * 90 90 */ 91 pmPSFtry *pmPSFtryModel (const psArray *sources, const char *modelName, pmPSFOptions *options, ps MaskType maskVal, psMaskType mark);91 pmPSFtry *pmPSFtryModel (const psArray *sources, const char *modelName, pmPSFOptions *options, psImageMaskType maskVal, psImageMaskType mark); 92 92 93 93 /** pmPSFtryMetric() -
branches/eam_branch_20081230/psModules/src/objects/pmResiduals.c
r15562 r21079 4 4 * 5 5 * @author EAM, IfA 6 * @version $Revision: 1.3 $ $Name: not supported by cvs2svn $7 * @date $Date: 200 7-11-10 01:09:20 $6 * @version $Revision: 1.3.52.1 $ $Name: not supported by cvs2svn $ 7 * @date $Date: 2009-01-02 05:13:00 $ 8 8 * Copyright 2004 IfA, University of Hawaii 9 9 */ … … 44 44 resid->weight = psImageAlloc (nX, nY, PS_TYPE_F32); 45 45 resid->mask = psImageAlloc (nX, nY, PS_TYPE_U8); 46 // NOTE : the residual mask is internal only : 1 byte is sufficient 47 // XXX abstract the resid->mask type?? 46 48 47 49 resid->xBin = xBin; -
branches/eam_branch_20081230/psModules/src/objects/pmSource.h
r20945 r21079 3 3 * @author EAM, IfA; GLG, MHPCC 4 4 * 5 * @version $Revision: 1.26 $ $Name: not supported by cvs2svn $6 * @date $Date: 200 8-12-09 21:16:09$5 * @version $Revision: 1.26.4.1 $ $Name: not supported by cvs2svn $ 6 * @date $Date: 2009-01-02 05:13:00 $ 7 7 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 8 8 */ … … 210 210 psMetadata *metadata, ///< Contains classification parameters 211 211 pmPSFClump clump, ///< Statistics about the PSF clump 212 ps MaskType maskSat///< Mask value for saturated pixels212 psImageMaskType maskSat ///< Mask value for saturated pixels 213 213 ); 214 214 … … 231 231 pmModel *pmSourceGetModel (bool *isPSF, const pmSource *source); 232 232 233 bool pmSourceAdd (pmSource *source, pmModelOpMode mode, ps MaskType maskVal);234 bool pmSourceSub (pmSource *source, pmModelOpMode mode, ps MaskType maskVal);235 bool pmSourceAddWithOffset (pmSource *source, pmModelOpMode mode, ps MaskType maskVal, int dx, int dy);236 bool pmSourceSubWithOffset (pmSource *source, pmModelOpMode mode, ps MaskType maskVal, int dx, int dy);237 238 bool pmSourceOp (pmSource *source, pmModelOpMode mode, bool add, ps MaskType maskVal, int dx, int dy);239 bool pmSourceCacheModel (pmSource *source, ps MaskType maskVal);240 bool pmSourceCachePSF (pmSource *source, ps MaskType maskVal);233 bool pmSourceAdd (pmSource *source, pmModelOpMode mode, psImageMaskType maskVal); 234 bool pmSourceSub (pmSource *source, pmModelOpMode mode, psImageMaskType maskVal); 235 bool pmSourceAddWithOffset (pmSource *source, pmModelOpMode mode, psImageMaskType maskVal, int dx, int dy); 236 bool pmSourceSubWithOffset (pmSource *source, pmModelOpMode mode, psImageMaskType maskVal, int dx, int dy); 237 238 bool pmSourceOp (pmSource *source, pmModelOpMode mode, bool add, psImageMaskType maskVal, int dx, int dy); 239 bool pmSourceCacheModel (pmSource *source, psImageMaskType maskVal); 240 bool pmSourceCachePSF (pmSource *source, psImageMaskType maskVal); 241 241 242 242 int pmSourceSortBySN (const void **a, const void **b); -
branches/eam_branch_20081230/psModules/src/objects/pmSourceFitModel.c
r21075 r21079 6 6 * @author GLG, MHPCC 7 7 * 8 * @version $Revision: 1.28.4. 1$ $Name: not supported by cvs2svn $9 * @date $Date: 200 8-12-31 20:31:29$8 * @version $Revision: 1.28.4.2 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2009-01-02 05:13:00 $ 10 10 * 11 11 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 121 121 // create the minimization constraints 122 122 psMinConstraint *constraint = psMinConstraintAlloc(); 123 constraint->paramMask = psVectorAlloc (params->n, PS_TYPE_VECTOR_MASK _DATA);123 constraint->paramMask = psVectorAlloc (params->n, PS_TYPE_VECTOR_MASK); 124 124 constraint->checkLimits = model->modelLimits; 125 125 -
branches/eam_branch_20081230/psModules/src/objects/pmSourceFitModel.h
r13898 r21079 3 3 * @author EAM, IfA; GLG, MHPCC 4 4 * 5 * @version $Revision: 1.6 $ $Name: not supported by cvs2svn $6 * @date $Date: 200 7-06-20 02:22:26$5 * @version $Revision: 1.6.66.1 $ $Name: not supported by cvs2svn $ 6 * @date $Date: 2009-01-02 05:13:00 $ 7 7 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 8 8 */ … … 41 41 pmModel *model, ///< model to be fitted 42 42 pmSourceFitMode mode, ///< define parameters to be fitted 43 ps MaskType maskVal///< Value to mask43 psImageMaskType maskVal ///< Value to mask 44 44 ); 45 45 … … 71 71 psArray *modelSet, ///< model to be fitted 72 72 pmSourceFitMode mode, ///< define parameters to be fitted 73 ps MaskType maskVal///< Vale to mask73 psImageMaskType maskVal ///< Vale to mask 74 74 75 75 ); -
branches/eam_branch_20081230/psModules/src/objects/pmSourceFitSet.h
r15562 r21079 3 3 * @author EAM, IfA; GLG, MHPCC 4 4 * 5 * @version $Revision: 1.6 $ $Name: not supported by cvs2svn $6 * @date $Date: 200 7-11-10 01:09:20 $5 * @version $Revision: 1.6.52.1 $ $Name: not supported by cvs2svn $ 6 * @date $Date: 2009-01-02 05:13:00 $ 7 7 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 8 8 */ … … 44 44 */ 45 45 bool pmSourceFitSet( 46 pmSource *source, ///< The input pmSource47 psArray *modelSet, ///< model to be fitted48 pmSourceFitMode mode, ///< define parameters to be fitted49 ps MaskType maskVal///< Vale to mask46 pmSource *source, ///< The input pmSource 47 psArray *modelSet, ///< model to be fitted 48 pmSourceFitMode mode, ///< define parameters to be fitted 49 psImageMaskType maskVal ///< Vale to mask 50 50 51 51 ); -
branches/eam_branch_20081230/psModules/src/objects/pmSourceMatch.c
r20963 r21079 122 122 match->image = psVectorAllocEmpty(num, PS_TYPE_U32); 123 123 match->index = psVectorAllocEmpty(num, PS_TYPE_U32); 124 match->mask = psVectorAllocEmpty(num, PS_TYPE_ MASK);124 match->mask = psVectorAllocEmpty(num, PS_TYPE_VECTOR_MASK); 125 125 126 126 return match; … … 143 143 match->image->data.S32[num] = image; 144 144 match->index->data.S32[num] = index; 145 match->index->data.PS_TYPE_ MASK_DATA[num] = 0;145 match->index->data.PS_TYPE_VECTOR_MASK_DATA[num] = 0; // XXXX EAM : I think this should be match->mask not match->index 146 146 match->num++; 147 147 … … 316 316 double star = 0.0, starErr = 0.0; // Accumulators for star 317 317 for (int j = 0; j < match->num; j++) { 318 if (match->mask->data.PS_TYPE_ MASK_DATA[j]) {318 if (match->mask->data.PS_TYPE_VECTOR_MASK_DATA[j]) { 319 319 continue; 320 320 } … … 347 347 pmSourceMatch *match = matches->data[i]; // Matched stars 348 348 for (int j = 0; j < match->num; j++) { 349 if (match->mask->data.PS_TYPE_ MASK_DATA[j]) {349 if (match->mask->data.PS_TYPE_VECTOR_MASK_DATA[j]) { 350 350 continue; 351 351 } … … 373 373 pmSourceMatch *match = matches->data[i]; // Matched stars 374 374 for (int j = 0; j < match->num; j++) { 375 if (match->mask->data.PS_TYPE_ MASK_DATA[j]) {375 if (match->mask->data.PS_TYPE_VECTOR_MASK_DATA[j]) { 376 376 continue; 377 377 } … … 474 474 pmSourceMatch *match = matches->data[i]; // Matched stars 475 475 for (int j = 0; j < match->num; j++) { 476 if (match->mask->data.PS_TYPE_ MASK_DATA[j]) {476 if (match->mask->data.PS_TYPE_VECTOR_MASK_DATA[j]) { 477 477 continue; 478 478 } … … 488 488 if (PS_SQR(dev) > starClip * (PS_SQR(magErr) + sysErr2)) { 489 489 numRejected++; 490 match->mask->data.PS_TYPE_ MASK_DATA[j] = 0xFF;490 match->mask->data.PS_TYPE_VECTOR_MASK_DATA[j] = 0xFF; 491 491 } 492 492 } -
branches/eam_branch_20081230/psModules/src/objects/pmSourceMoments.c
r20937 r21079 6 6 * @author EAM, IfA: significant modifications. 7 7 * 8 * @version $Revision: 1.6 $ $Name: not supported by cvs2svn $9 * @date $Date: 200 8-12-08 02:51:14$8 * @version $Revision: 1.6.4.1 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2009-01-02 05:13:00 $ 10 10 * 11 11 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 100 100 psF32 *vPix = source->pixels->data.F32[row]; 101 101 psF32 *vWgt = source->weight->data.F32[row]; 102 ps U8 *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.U8[row];102 psImageMaskType *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[row]; 103 103 104 104 for (psS32 col = 0; col < source->pixels->numCols ; col++, vPix++, vWgt++) { … … 190 190 psF32 *vPix = source->pixels->data.F32[row]; 191 191 psF32 *vWgt = source->weight->data.F32[row]; 192 ps U8 *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.U8[row];192 psImageMaskType *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[row]; 193 193 194 194 for (psS32 col = 0; col < source->pixels->numCols ; col++, vPix++, vWgt++) { … … 342 342 psF32 *vPix = source->pixels->data.F32[row]; 343 343 psF32 *vWgt = source->weight->data.F32[row]; 344 ps U8 *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.U8[row];344 psImageMaskType *vMsk = (source->maskObj == NULL) ? NULL : source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[row]; 345 345 346 346 for (psS32 col = 0; col < source->pixels->numCols ; col++, vPix++, vWgt++) { -
branches/eam_branch_20081230/psModules/src/objects/pmSourcePhotometry.h
r21072 r21079 4 4 * @author EAM, IfA; GLG, MHPCC 5 5 * 6 * @version $Revision: 1.11 $ $Name: not supported by cvs2svn $7 * @date $Date: 200 8-07-15 20:25:00 $6 * @version $Revision: 1.11.32.1 $ $Name: not supported by cvs2svn $ 7 * @date $Date: 2009-01-02 05:13:00 $ 8 8 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 9 9 */ … … 46 46 psImage *image, ///< image pixels to be used 47 47 psImage *mask, ///< mask of pixels to ignore 48 ps MaskType maskVal///< Value to mask48 psImageMaskType maskVal ///< Value to mask 49 49 ); 50 50 51 51 bool pmSourceMagnitudesInit (psMetadata *config); 52 bool pmSourceMagnitudes (pmSource *source, pmPSF *psf, pmSourcePhotometryMode mode, ps MaskType maskVal);53 bool pmSourcePixelWeight (float *pixWeight, pmModel *model, psImage *image, psImage *mask, ps MaskType maskVal);54 bool pmSourceChisq (pmModel *model, psImage *image, psImage *mask, psImage *weight, ps MaskType maskVal);52 bool pmSourceMagnitudes (pmSource *source, pmPSF *psf, pmSourcePhotometryMode mode, psImageMaskType maskVal); 53 bool pmSourcePixelWeight (float *pixWeight, pmModel *model, psImage *image, psImage *mask, psImageMaskType maskVal); 54 bool pmSourceChisq (pmModel *model, psImage *image, psImage *mask, psImage *weight, psImageMaskType maskVal); 55 55 56 56 -
branches/eam_branch_20081230/psModules/src/objects/pmSourceSky.h
r13898 r21079 2 2 * @author EAM, IfA; GLG, MHPCC 3 3 * 4 * @version $Revision: 1.4 $ $Name: not supported by cvs2svn $5 * @date $Date: 200 7-06-20 02:22:26$4 * @version $Revision: 1.4.66.1 $ $Name: not supported by cvs2svn $ 5 * @date $Date: 2009-01-02 05:13:00 $ 6 6 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 7 7 */ … … 30 30 psStatsOptions statsOptions, ///< The statistic used in calculating the background sky 31 31 float Radius, ///< The inner radius of the square annulus to exclude 32 ps MaskType maskVal, ///< Value to mask33 ps MaskType mark ///< Mask value for marking32 psImageMaskType maskVal, ///< Value to mask 33 psImageMaskType mark ///< Mask value for marking 34 34 ); 35 35 … … 40 40 psStatsOptions statsOptions, ///< The statistic used in calculating the background sky 41 41 float Radius, ///< The inner radius of the square annulus to exclude 42 ps MaskType maskVal, ///< Value to mask43 ps MaskType mark ///< Mask value for marking42 psImageMaskType maskVal, ///< Value to mask 43 psImageMaskType mark ///< Mask value for marking 44 44 ); 45 45 -
branches/eam_branch_20081230/psModules/src/objects/pmSourceVisual.c
r21072 r21079 57 57 model->data.F32[i] = pmTrend2DEval (trend, x->data.F32[i], y->data.F32[i]); 58 58 resid->data.F32[i] = param->data.F32[i] - model->data.F32[i]; 59 if (mask->data. U8[i]) continue;59 if (mask->data.PS_TYPE_VECTOR_MASK_DATA[i]) continue; 60 60 min = PS_MIN (min, resid->data.F32[i]); 61 61 max = PS_MAX (max, resid->data.F32[i]); -
branches/eam_branch_20081230/psModules/src/objects/pmTrend2D.h
r19961 r21079 5 5 * @author EAM, IfA 6 6 * 7 * @version $Revision: 1.7 $ $Name: not supported by cvs2svn $8 * @date $Date: 200 8-10-07 22:47:04$7 * @version $Revision: 1.7.14.1 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2009-01-02 05:13:00 $ 9 9 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 10 10 */ … … 80 80 bool pmTrend2DFit(pmTrend2D *trend, 81 81 psVector *mask, // Warning: mask is modified! 82 ps MaskType maskVal,82 psVectorMaskType maskVal, 83 83 const psVector *x, 84 84 const psVector *y,
Note:
See TracChangeset
for help on using the changeset viewer.
