Changeset 35938 for trunk/psModules
- Timestamp:
- Aug 13, 2013, 2:55:04 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/imcombine/pmSubtractionSimple.c
r35867 r35938 63 63 } 64 64 65 bool simple_apply_mask(psImage *image, psImage *weight, psImage *mask, 66 psImageMaskType maskVal) { 67 for (int y = 0; y < mask->numRows; y++) { 68 for (int x = 0; x < mask->numCols; x++) { 69 if (mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] & maskVal) { 70 image->data.F32[y][x] = NAN; 71 if (weight) { 72 weight->data.F32[y][x] = NAN; 73 } 74 } 75 } 76 } 77 return(true); 78 } 79 80 65 81 // Copied from pmSubtraction 66 82 static void solvedKernelPreCalc(psKernel *kernel, // Kernel, updated … … 116 132 psImage *varC2 = NULL; 117 133 134 psImage *maskTemp = NULL; 135 118 136 // Allocate images, as this is usually done by subtractionMatchAlloc after this function is called. 119 137 int numCols = ro1->image->numCols; … … 210 228 int maskBox = (int) ceil(sigmaKern * 1.1774); // diameter is 1/2 FWHM 211 229 int maskBlank = 8; // I should be able to get this from a reference, right? 212 230 int maskPoorVal = 16384; // Another value that should be found elsewhere. 213 231 // 214 232 // Make a fake pmSubtractionKernels element so we can add it appropriately. … … 257 275 psImageSmoothMask_Threaded(imageC1,image1,mask1,maskVal,sigmaKern,6,1e-6); 258 276 psImageSmoothMask_Threaded(varC1,var1,mask1,maskVal,sigmaKern * M_SQRT1_2,6,1e-6); 259 maskC1 = psImageConvolveMask(maskC1,mask1,maskVal,maskBad, 277 278 maskTemp = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK); 279 maskTemp = psImageConvolveMask(maskTemp,mask1,maskVal,maskBad, // Mask bad values 260 280 -maskBox,maskBox,-maskBox,maskBox); 281 maskC1 = psImageConvolveMask(maskC1,maskTemp,maskPoorVal,maskPoor, // Mask poor values 282 -maskBox,maskBox,-maskBox,maskBox); 283 psFree(maskTemp); 284 261 285 conv1->covariance = psImageCovarianceCalculate(kernel,ro1->covariance); 262 286 pmSubtractionBorder(imageC1,varC1,maskC1,maskBox,maskBlank); 263 pmSubtractionMaskApply(imageC1,varC1,maskC1,PM_SUBTRACTION_MODE_1);287 simple_apply_mask(imageC1,varC1,maskC1,maskBad); 264 288 } 265 289 if (conv2) { … … 274 298 psImageSmoothMask_Threaded(imageC2,image2,mask2,maskVal,sigmaKern,6,1e-6); 275 299 psImageSmoothMask_Threaded(varC2,var2,mask2,maskVal,sigmaKern * M_SQRT1_2,6,1e-6); 276 maskC2 = psImageConvolveMask(maskC2,mask2,maskVal,maskBad, 300 301 maskTemp = psImageAlloc(numCols, numRows, PS_TYPE_IMAGE_MASK); 302 maskTemp = psImageConvolveMask(maskTemp,mask2,maskVal,maskBad, // Mask bad values 277 303 -maskBox,maskBox,-maskBox,maskBox); 304 maskC2 = psImageConvolveMask(maskC2,maskTemp,maskPoorVal,maskPoor, // Mask poor values 305 -maskBox,maskBox,-maskBox,maskBox); 306 psFree(maskTemp); 307 278 308 conv2->covariance = psImageCovarianceCalculate(kernel,ro2->covariance); 279 309 pmSubtractionBorder(imageC2,varC2,maskC2,maskBox,maskBlank); 280 pmSubtractionMaskApply(imageC2,varC2,maskC2,PM_SUBTRACTION_MODE_2);310 simple_apply_mask(imageC2,varC2,maskC2,maskBad); 281 311 } 282 312 if (conv1) {
Note:
See TracChangeset
for help on using the changeset viewer.
