Changeset 21183 for trunk/psModules/src/imcombine/pmSubtraction.c
- Timestamp:
- Jan 26, 2009, 8:40:07 PM (17 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/imcombine/pmSubtraction.c (modified) (17 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/imcombine/pmSubtraction.c
r20838 r21183 246 246 psImage *image, // Image to convolve 247 247 psImage *mask, // Mask image 248 ps MaskType maskVal, // Value to mask248 psImageMaskType maskVal, // Value to mask 249 249 const psKernel *kernel, // Kernel by which to convolve 250 250 psRegion region,// Region of interest … … 291 291 psImage *sys, // Systematic error image 292 292 psImage *mask, // Mask image 293 ps MaskType maskVal, // Value to mask293 psImageMaskType maskVal, // Value to mask 294 294 const psKernel *kernel, // Kernel by which to convolve 295 295 psRegion region,// Region of interest … … 373 373 float background, // Background value to apply 374 374 psRegion region, // Region to convolve 375 ps MaskType maskBad, // Value to give bad pixels376 ps MaskType maskPoor, // Value to give poor pixels375 psImageMaskType maskBad, // Value to give bad pixels 376 psImageMaskType maskPoor, // Value to give poor pixels 377 377 float poorFrac, // Fraction for "poor" 378 378 bool useFFT, // Use FFT to convolve? … … 385 385 } 386 386 387 ps MaskType subBad; // Bad pixels in subtraction mask388 ps MaskType subConvBad; // Bad pixels in subtraction mask when convolving389 ps MaskType subConvPoor; // Poor pixels in subtraction mask when convolving387 psImageMaskType subBad; // Bad pixels in subtraction mask 388 psImageMaskType subConvBad; // Bad pixels in subtraction mask when convolving 389 psImageMaskType subConvPoor; // Poor pixels in subtraction mask when convolving 390 390 if (kernels->mode == PM_SUBTRACTION_MODE_1 || (kernels->mode == PM_SUBTRACTION_MODE_DUAL && !wantDual)) { 391 391 subBad = PM_SUBTRACTION_MASK_BAD_1; … … 437 437 for (int yTarget = rowMin, ySource = box; yTarget < rowMax; yTarget++, ySource++) { 438 438 // Dereference images 439 ps MaskType *target = &convMask->data.PS_TYPE_MASK_DATA[yTarget][colMin]; // Target values440 ps MaskType *source = &convolved->data.PS_TYPE_MASK_DATA[ySource][box]; // Source values439 psImageMaskType *target = &convMask->data.PS_TYPE_IMAGE_MASK_DATA[yTarget][colMin]; // Target values 440 psImageMaskType *source = &convolved->data.PS_TYPE_IMAGE_MASK_DATA[ySource][box]; // Source values 441 441 for (int xTarget = colMin; xTarget < colMax; xTarget++, target++, source++) { 442 442 if (*source & subConvBad) { … … 783 783 PS_ASSERT_VECTOR_TYPE(deviations, PS_TYPE_F32, -1); 784 784 PS_ASSERT_IMAGE_NON_EMPTY(subMask, -1); 785 PS_ASSERT_IMAGE_TYPE(subMask, PS_TYPE_ MASK, -1);785 PS_ASSERT_IMAGE_TYPE(subMask, PS_TYPE_IMAGE_MASK, -1); 786 786 787 787 // I used to measure the rms deviation about zero, and use that as the sigma against which to clip, but … … 794 794 795 795 int numStamps = 0; // Number of used stamps 796 psVector *mask = psVectorAlloc(stamps->num, PS_TYPE_ MASK); // Mask, for statistics796 psVector *mask = psVectorAlloc(stamps->num, PS_TYPE_VECTOR_MASK); // Mask, for statistics 797 797 psVectorInit(mask, 0); 798 798 for (int i = 0; i < stamps->num; i++) { 799 799 pmSubtractionStamp *stamp = stamps->stamps->data[i]; // Stamp of interest 800 800 if (stamp->status != PM_SUBTRACTION_STAMP_USED) { 801 mask->data.PS_TYPE_ MASK_DATA[i] = 0xff;801 mask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 0xff; 802 802 continue; 803 803 } … … 869 869 for (int y = stamp->y - footprint; y <= stamp->y + footprint; y++) { 870 870 for (int x = stamp->x - footprint; x <= stamp->x + footprint; x++) { 871 subMask->data.PS_TYPE_ MASK_DATA[y][x] |= PM_SUBTRACTION_MASK_REJ;871 subMask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= PM_SUBTRACTION_MASK_REJ; 872 872 } 873 873 } … … 997 997 psImage *sys1, psImage *sys2, // Systematic error images 998 998 psImage *subMask, // Input subtraction mask 999 ps MaskType maskBad, // Mask value to give bad pixels1000 ps MaskType maskPoor, // Mask value to give poor pixels999 psImageMaskType maskBad, // Mask value to give bad pixels 1000 psImageMaskType maskPoor, // Mask value to give poor pixels 1001 1001 float poorFrac, // Fraction for "poor" 1002 1002 const psRegion *region, // Patch to convolve … … 1035 1035 1036 1036 if ((kernels->mode == PM_SUBTRACTION_MODE_1 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) && ro1->mask) { 1037 ps MaskType **target = convMask->data.PS_TYPE_MASK_DATA; // Target mask1038 ps MaskType **source = ro1->mask->data.PS_TYPE_MASK_DATA; // Source mask1037 psImageMaskType **target = convMask->data.PS_TYPE_IMAGE_MASK_DATA; // Target mask 1038 psImageMaskType **source = ro1->mask->data.PS_TYPE_IMAGE_MASK_DATA; // Source mask 1039 1039 1040 1040 for (int y = yMin; y < yMax; y++) { … … 1045 1045 } 1046 1046 if ((kernels->mode == PM_SUBTRACTION_MODE_2 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) && ro2->mask) { 1047 ps MaskType **target = convMask->data.PS_TYPE_MASK_DATA; // Target mask1048 ps MaskType **source = ro2->mask->data.PS_TYPE_MASK_DATA; // Source mask1047 psImageMaskType **target = convMask->data.PS_TYPE_IMAGE_MASK_DATA; // Target mask 1048 psImageMaskType **source = ro2->mask->data.PS_TYPE_IMAGE_MASK_DATA; // Source mask 1049 1049 1050 1050 for (int y = yMin; y < yMax; y++) { … … 1075 1075 psImage *sys2 = args->data[10]; // Systematic error image 2 1076 1076 psImage *subMask = args->data[11]; // Subtraction mask 1077 ps MaskType maskBad = PS_SCALAR_VALUE(args->data[12], U8); // Output mask value for bad pixels1078 ps MaskType maskPoor = PS_SCALAR_VALUE(args->data[13], U8); // Output mask value for poor pixels1077 psImageMaskType maskBad = PS_SCALAR_VALUE(args->data[12], PS_TYPE_IMAGE_MASK_DATA); // Output mask value for bad pixels 1078 psImageMaskType maskPoor = PS_SCALAR_VALUE(args->data[13], PS_TYPE_IMAGE_MASK_DATA); // Output mask value for poor pixels 1079 1079 float poorFrac = PS_SCALAR_VALUE(args->data[14], F32); // Fraction for "poor" 1080 1080 const psRegion *region = args->data[15]; // Region to convolve 1081 1081 const pmSubtractionKernels *kernels = args->data[16]; // Kernels 1082 bool doBG = PS_SCALAR_VALUE(args->data[17], U8); // Do background subtraction?1083 bool useFFT = PS_SCALAR_VALUE(args->data[18], U8); // Use FFT for convolution?1082 bool doBG = PS_SCALAR_VALUE(args->data[17], PS_TYPE_IMAGE_MASK_DATA); // Do background subtraction? 1083 bool useFFT = PS_SCALAR_VALUE(args->data[18], PS_TYPE_IMAGE_MASK_DATA); // Use FFT for convolution? 1084 1084 1085 1085 return subtractionConvolvePatch(numCols, numRows, x0, y0, out1, out2, convMask, ro1, ro2, sys1, sys2, … … 1088 1088 1089 1089 bool pmSubtractionConvolve(pmReadout *out1, pmReadout *out2, const pmReadout *ro1, const pmReadout *ro2, 1090 psImage *subMask, int stride, ps MaskType maskBad, psMaskType maskPoor,1090 psImage *subMask, int stride, psImageMaskType maskBad, psImageMaskType maskPoor, 1091 1091 float poorFrac, float sysError, const psRegion *region, 1092 1092 const pmSubtractionKernels *kernels, bool doBG, bool useFFT) … … 1121 1121 if (subMask) { 1122 1122 PS_ASSERT_IMAGE_NON_NULL(subMask, false); 1123 PS_ASSERT_IMAGE_TYPE(subMask, PS_TYPE_ MASK, false);1123 PS_ASSERT_IMAGE_TYPE(subMask, PS_TYPE_IMAGE_MASK, false); 1124 1124 PS_ASSERT_IMAGE_SIZE(subMask, numCols, numRows, false); 1125 1125 } … … 1182 1182 if (kernels->mode == PM_SUBTRACTION_MODE_1 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) { 1183 1183 if (!out1->mask) { 1184 out1->mask = psImageAlloc(numCols, numRows, PS_TYPE_ MASK);1184 out1->mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK); 1185 1185 } 1186 1186 convMask = out1->mask; … … 1194 1194 } else { 1195 1195 if (!out2->mask) { 1196 out2->mask = psImageAlloc(numCols, numRows, PS_TYPE_ MASK);1196 out2->mask = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK); 1197 1197 } 1198 1198 convMask = out2->mask; … … 1285 1285 psMutexUnlock(subMask); 1286 1286 } 1287 PS_ARRAY_ADD_SCALAR(args, maskBad, PS_TYPE_ U8);1288 PS_ARRAY_ADD_SCALAR(args, maskPoor, PS_TYPE_ U8);1287 PS_ARRAY_ADD_SCALAR(args, maskBad, PS_TYPE_IMAGE_MASK); 1288 PS_ARRAY_ADD_SCALAR(args, maskPoor, PS_TYPE_IMAGE_MASK); 1289 1289 PS_ARRAY_ADD_SCALAR(args, poorFrac, PS_TYPE_F32); 1290 1290 psArrayAdd(args, 1, subRegion);
Note:
See TracChangeset
for help on using the changeset viewer.
