Changeset 26771
- Timestamp:
- Feb 4, 2010, 6:38:31 PM (16 years ago)
- Location:
- branches/eam_branches/psModules.stack.20100120
- Files:
-
- 7 edited
-
. (modified) (1 prop)
-
src/camera/pmFPAMaskWeight.c (modified) (1 diff)
-
src/imcombine/pmStackReject.c (modified) (3 diffs)
-
src/imcombine/pmSubtraction.c (modified) (5 diffs)
-
src/imcombine/pmSubtraction.h (modified) (1 diff)
-
src/imcombine/pmSubtractionMatch.c (modified) (7 diffs)
-
src/imcombine/pmSubtractionMatch.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/psModules.stack.20100120
- Property svn:mergeinfo changed
/branches/eam_branches/20091201/psModules merged: 26759-26761,26769
- Property svn:mergeinfo changed
-
branches/eam_branches/psModules.stack.20100120/src/camera/pmFPAMaskWeight.c
r26747 r26771 454 454 // Check valid range of correction factor 455 455 if ((isfinite(minValid) && correction < minValid) || (isfinite(maxValid) && correction > maxValid)) { 456 psWarning("Variance renormalisation is outside valid range: %f vs %f:%f --- no correction made", 457 correction, minValid, maxValid);458 return true;456 psError(PS_ERR_UNKNOWN, true, "Variance renormalisation is outside valid range: %f vs %f:%f --- no correction made", correction, minValid, maxValid); 457 psMetadataAddF32(readout->analysis, PS_LIST_TAIL, PM_READOUT_ANALYSIS_RENORM, 0, "Renormalisation of variance", PS_SQR(correction)); 458 return false; 459 459 } 460 460 -
branches/eam_branches/psModules.stack.20100120/src/imcombine/pmStackReject.c
r26747 r26771 35 35 { 36 36 int size = kernels->size; // Half-size of convolution kernel 37 psImage *polyValues = p_pmSubtractionPolynomialFromCoords(NULL, kernels, xMin + size + 1, 38 yMin + size + 1); // Polynomial 37 int x = PS_MIN(xMin + size + 1, kernels->xMax); // x coordinate of interest 38 int y = PS_MIN(yMin + size + 1, kernels->yMax); // y coordinate of interest 39 40 psImage *polyValues = p_pmSubtractionPolynomialFromCoords(NULL, kernels, x, y); // Polynomial 39 41 int box = p_pmSubtractionBadRadius(NULL, kernels, polyValues, false, poorFrac); // Radius of bad box 40 42 psTrace("psModules.imcombine", 10, "Growing by %d", box); … … 154 156 psRegion *region = subRegions->data[i]; // Region of interest 155 157 pmSubtractionKernels *kernels = subKernels->data[i]; // Kernel of interest 156 if (!pmSubtractionConvolve(NULL, convRO, NULL, inRO, NULL, stride, 0, 0, 1.0, 0.0, 158 if (!pmSubtractionConvolve(NULL, convRO, NULL, inRO, NULL, stride, 0, 0, 1.0, 0.0, 0.0, 157 159 region, kernels, false, true)) { 158 160 psError(PS_ERR_UNKNOWN, false, "Unable to convolve mask image in region %d.", i); … … 166 168 167 169 // Image of the kernel at the centre of the region 168 float xNorm, yNorm; // Normalised coordinates 169 p_pmSubtractionPolynomialNormCoords(&xNorm, &yNorm, 0.5 * (region->x1 - region->x0), 170 0.5 * (region->y1 - region->y0), 171 kernels->xMin, kernels->xMax, kernels->yMin, kernels->yMax); 172 psImage *kernel = pmSubtractionKernelImage(kernels, xNorm, yNorm, false); 170 psImage *kernel = pmSubtractionKernelImage(kernels, 0.5, 0.5, false); 173 171 if (!kernel) { 174 172 psError(PS_ERR_UNKNOWN, false, "Unable to generate kernel image."); -
branches/eam_branches/psModules.stack.20100120/src/imcombine/pmSubtraction.c
r26747 r26771 423 423 *target |= maskBad; 424 424 } else if (*source & subConvPoor) { 425 *target &= ~maskBad; 425 426 *target |= maskPoor; 426 427 } else { … … 1152 1153 bool pmSubtractionConvolve(pmReadout *out1, pmReadout *out2, const pmReadout *ro1, const pmReadout *ro2, 1153 1154 psImage *subMask, int stride, psImageMaskType maskBad, psImageMaskType maskPoor, 1154 float poorFrac, float kernelError, const psRegion *region,1155 float poorFrac, float kernelError, float covarFrac, const psRegion *region, 1155 1156 const pmSubtractionKernels *kernels, bool doBG, bool useFFT) 1156 1157 { … … 1194 1195 PS_ASSERT_FLOAT_LARGER_THAN_OR_EQUAL(kernelError, 0.0, false); 1195 1196 PS_ASSERT_FLOAT_LESS_THAN_OR_EQUAL(kernelError, 1.0, false); 1197 PS_ASSERT_FLOAT_LARGER_THAN_OR_EQUAL(covarFrac, 0.0, false); 1198 PS_ASSERT_FLOAT_LESS_THAN(covarFrac, 1.0, false); 1196 1199 if (region && psRegionIsNaN(*region)) { 1197 1200 psString string = psRegionToString(*region); … … 1326 1329 if (kernels->mode == PM_SUBTRACTION_MODE_1 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) { 1327 1330 psKernel *kernel = pmSubtractionKernel(kernels, 0.0, 0.0, false); // Convolution kernel 1331 psKernelTruncate(kernel, covarFrac); 1328 1332 out1->covariance = psImageCovarianceCalculate(kernel, ro1->covariance); 1329 1333 psFree(kernel); … … 1332 1336 psKernel *kernel = pmSubtractionKernel(kernels, 0.0, 0.0, 1333 1337 kernels->mode == PM_SUBTRACTION_MODE_DUAL); // Conv. kernel 1338 psKernelTruncate(kernel, covarFrac); 1334 1339 out2->covariance = psImageCovarianceCalculate(kernel, ro2->covariance); 1335 1340 psFree(kernel); -
branches/eam_branches/psModules.stack.20100120/src/imcombine/pmSubtraction.h
r26747 r26771 113 113 psImageMaskType maskPoor, ///< Mask value to give poor pixels 114 114 float poorFrac, ///< Fraction for "poor" 115 float sysError, ///< Relative systematic error 115 float kernelError, ///< Relative systematic error in kernel 116 float covarFrac, ///< Truncation fraction for kernel before covariance calculation 116 117 const psRegion *region, ///< Region to convolve (or NULL) 117 118 const pmSubtractionKernels *kernels, ///< Kernel parameters -
branches/eam_branches/psModules.stack.20100120/src/imcombine/pmSubtractionMatch.c
r26747 r26771 121 121 float skyError, // Systematic error in images 122 122 float kernelError, // Systematic error in kernel 123 float covarFrac, // Fraction for kernel truncation before covariance 123 124 psImageMaskType maskVal, // Value to mask for input 124 125 psImageMaskType maskBad, // Mask for output bad pixels … … 181 182 PS_ASSERT_FLOAT_LESS_THAN(kernelError, 1.0, false); 182 183 } 184 PS_ASSERT_FLOAT_LARGER_THAN_OR_EQUAL(covarFrac, 0.0, false); 185 PS_ASSERT_FLOAT_LESS_THAN(covarFrac, 1.0, false); 183 186 // Don't care about maskVal 184 187 // Don't care about maskBad … … 246 249 247 250 bool pmSubtractionMatchPrecalc(pmReadout *conv1, pmReadout *conv2, const pmReadout *ro1, const pmReadout *ro2, 248 psMetadata *analysis, int stride, float kernelError, 251 psMetadata *analysis, int stride, float kernelError, float covarFrac, 249 252 psImageMaskType maskVal, psImageMaskType maskBad, psImageMaskType maskPoor, 250 253 float poorFrac, float badFrac) … … 316 319 } 317 320 318 if (!subtractionMatchCheck(conv1, conv2, ro1, ro2, stride, NAN, NAN, NAN, kernelError, 321 if (!subtractionMatchCheck(conv1, conv2, ro1, ro2, stride, NAN, NAN, NAN, kernelError, covarFrac, 319 322 maskVal, maskBad, maskPoor, poorFrac, badFrac, mode)) { 320 323 psFree(kernels); … … 357 360 358 361 if (!pmSubtractionConvolve(conv1, conv2, ro1, ro2, subMask, stride, maskBad, maskPoor, poorFrac, 359 kernelError, region, kernel, true, useFFT)) {362 kernelError, covarFrac, region, kernel, true, useFFT)) { 360 363 psError(PS_ERR_UNKNOWN, false, "Unable to convolve image."); 361 364 psFree(outAnalysis); … … 388 391 bool optimum, const psVector *optFWHMs, int optOrder, float optThreshold, 389 392 int iter, float rej, float normFrac, float sysError, float skyError, 390 float kernelError, psImageMaskType maskVal, psImageMaskType maskBad,393 float kernelError, float covarFrac, psImageMaskType maskVal, psImageMaskType maskBad, 391 394 psImageMaskType maskPoor, float poorFrac, float badFrac, pmSubtractionMode subMode) 392 395 { 393 396 if (!subtractionMatchCheck(conv1, conv2, ro1, ro2, stride, normFrac, sysError, skyError, kernelError, 394 maskVal, maskBad, maskPoor, poorFrac, badFrac, subMode)) {397 covarFrac, maskVal, maskBad, maskPoor, poorFrac, badFrac, subMode)) { 395 398 return false; 396 399 } … … 779 782 psTrace("psModules.imcombine", 2, "Convolving...\n"); 780 783 if (!pmSubtractionConvolve(conv1, conv2, ro1, ro2, subMask, stride, maskBad, maskPoor, poorFrac, 781 kernelError, region, kernels, true, useFFT)) {784 kernelError, covarFrac, region, kernels, true, useFFT)) { 782 785 psError(PS_ERR_UNKNOWN, false, "Unable to convolve image."); 783 786 goto MATCH_ERROR; -
branches/eam_branches/psModules.stack.20100120/src/imcombine/pmSubtractionMatch.h
r26747 r26771 43 43 float skyError, ///< Relative systematic error in images 44 44 float kernelError, ///< Relative systematic error in kernel 45 float covarFrac, ///< Fraction for kernel truncation before covariance calculation 45 46 psImageMaskType maskVal, ///< Value to mask for input 46 47 psImageMaskType maskBad, ///< Mask for output bad pixels … … 59 60 int stride, ///< Size for convolution patches 60 61 float kernelError, ///< Relative systematic error in kernel 62 float covarFrac, ///< Fraction for kernel truncation before covariance calc. 61 63 psImageMaskType maskVal, ///< Value to mask for input 62 64 psImageMaskType maskBad, ///< Mask for output bad pixels
Note:
See TracChangeset
for help on using the changeset viewer.
