Changeset 27412
- Timestamp:
- Mar 23, 2010, 1:54:27 PM (16 years ago)
- Location:
- branches/pap_stack
- Files:
-
- 7 edited
-
ippconfig/recipes/filerules-mef.mdc (modified) (1 diff)
-
ippconfig/recipes/filerules-simple.mdc (modified) (2 diffs)
-
ippconfig/recipes/filerules-split.mdc (modified) (1 diff)
-
ippconfig/recipes/fitstypes.mdc (modified) (1 diff)
-
ppStack/src/ppStackCamera.c (modified) (4 diffs)
-
ppStack/src/ppStackFiles.c (modified) (1 diff)
-
psModules/src/imcombine/pmStack.c (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/pap_stack/ippconfig/recipes/filerules-mef.mdc
r27400 r27412 265 265 PPSTACK.OUTPUT.MASK OUTPUT {OUTPUT}.mk.fits MASK COMP_MASK FPA TRUE NONE 266 266 PPSTACK.OUTPUT.VARIANCE OUTPUT {OUTPUT}.wt.fits VARIANCE COMP_WT FPA TRUE NONE 267 PPSTACK.OUTPUT.EXP OUTPUT {OUTPUT}.exp.fits IMAGE NONE FPA TRUE NONE 268 PPSTACK.OUTPUT.EXPNUM OUTPUT {OUTPUT}.num.fits MASK NONE FPA TRUE NONE 267 PPSTACK.OUTPUT.EXP OUTPUT {OUTPUT}.exp.fits IMAGE EXP FPA TRUE NONE 268 PPSTACK.OUTPUT.EXPNUM OUTPUT {OUTPUT}.num.fits MASK EXPNUM FPA TRUE NONE 269 PPSTACK.OUTPUT.EXPWT OUTPUT {OUTPUT}.expwt.fits VARIANCE EXP FPA TRUE NONE 269 270 PPSTACK.UNCONV OUTPUT {OUTPUT}.unconv.fits IMAGE COMP_IMG FPA TRUE NONE 270 271 PPSTACK.UNCONV.MASK OUTPUT {OUTPUT}.unconv.mask.fits MASK COMP_MASK FPA TRUE NONE 271 272 PPSTACK.UNCONV.VARIANCE OUTPUT {OUTPUT}.unconv.wt.fits VARIANCE COMP_WT FPA TRUE NONE 272 PPSTACK.UNCONV.EXP OUTPUT {OUTPUT}.unconv.exp.fits IMAGE NONE FPA TRUE NONE 273 PPSTACK.UNCONV.EXPNUM OUTPUT {OUTPUT}.unconv.num.fits MASK NONE FPA TRUE NONE 273 PPSTACK.UNCONV.EXP OUTPUT {OUTPUT}.unconv.exp.fits IMAGE EXP FPA TRUE NONE 274 PPSTACK.UNCONV.EXPNUM OUTPUT {OUTPUT}.unconv.num.fits MASK EXPNUM FPA TRUE NONE 275 PPSTACK.UNCONV.EXPWT OUTPUT {OUTPUT}.unconv.expwt.fits VARIANCE EXP FPA TRUE NONE 274 276 PPSTACK.TARGET.PSF OUTPUT {OUTPUT}.target.psf PSF NONE CHIP TRUE NONE 275 277 PPSTACK.CONV.KERNEL OUTPUT {OUTPUT}.{FILE.INDEX}.kernel SUBKERNEL NONE FPA TRUE NONE -
branches/pap_stack/ippconfig/recipes/filerules-simple.mdc
r27410 r27412 216 216 PPSTACK.OUTPUT.EXP OUTPUT {OUTPUT}.exp.fits IMAGE EXP FPA TRUE NONE 217 217 PPSTACK.OUTPUT.EXPNUM OUTPUT {OUTPUT}.num.fits MASK EXPNUM FPA TRUE NONE 218 PPSTACK.OUTPUT.EXPWT OUTPUT {OUTPUT}.expwt.fits VARIANCE EXP FPA TRUE NONE 218 219 PPSTACK.UNCONV OUTPUT {OUTPUT}.unconv.fits IMAGE COMP_IMG FPA TRUE NONE 219 220 PPSTACK.UNCONV.MASK OUTPUT {OUTPUT}.unconv.mask.fits MASK COMP_MASK FPA TRUE NONE … … 221 222 PPSTACK.UNCONV.EXP OUTPUT {OUTPUT}.unconv.exp.fits IMAGE EXP FPA TRUE NONE 222 223 PPSTACK.UNCONV.EXPNUM OUTPUT {OUTPUT}.unconv.num.fits MASK EXPNUM FPA TRUE NONE 224 PPSTACK.UNCONV.EXPWT OUTPUT {OUTPUT}.unconv.expwt.fits VARIANCE EXP FPA TRUE NONE 223 225 PPSTACK.TARGET.PSF OUTPUT {OUTPUT}.target.psf PSF NONE CHIP TRUE NONE 224 226 PPSTACK.CONV.KERNEL OUTPUT {OUTPUT}.{FILE.INDEX}.kernel SUBKERNEL NONE FPA TRUE NONE -
branches/pap_stack/ippconfig/recipes/filerules-split.mdc
r27400 r27412 233 233 PPSTACK.OUTPUT.MASK OUTPUT {OUTPUT}.mask.fits MASK COMP_MASK FPA TRUE NONE 234 234 PPSTACK.OUTPUT.VARIANCE OUTPUT {OUTPUT}.wt.fits VARIANCE COMP_WT FPA TRUE NONE 235 PPSTACK.OUTPUT.EXP OUTPUT {OUTPUT}.exp.fits IMAGE NONE FPA TRUE NONE 236 PPSTACK.OUTPUT.EXPNUM OUTPUT {OUTPUT}.num.fits MASK NONE FPA TRUE NONE 235 PPSTACK.OUTPUT.EXP OUTPUT {OUTPUT}.exp.fits IMAGE EXP FPA TRUE NONE 236 PPSTACK.OUTPUT.EXPNUM OUTPUT {OUTPUT}.num.fits MASK EXPNUM FPA TRUE NONE 237 PPSTACK.OUTPUT.EXPWT OUTPUT {OUTPUT}.expwt.fits VARIANCE EXP FPA TRUE NONE 237 238 PPSTACK.UNCONV OUTPUT {OUTPUT}.unconv.fits IMAGE COMP_IMG FPA TRUE NONE 238 239 PPSTACK.UNCONV.MASK OUTPUT {OUTPUT}.unconv.mask.fits MASK COMP_MASK FPA TRUE NONE 239 240 PPSTACK.UNCONV.VARIANCE OUTPUT {OUTPUT}.unconv.wt.fits VARIANCE COMP_WT FPA TRUE NONE 240 PPSTACK.UNCONV.EXP OUTPUT {OUTPUT}.unconv.exp.fits IMAGE NONE FPA TRUE NONE 241 PPSTACK.UNCONV.EXPNUM OUTPUT {OUTPUT}.unconv.num.fits MASK NONE FPA TRUE NONE 241 PPSTACK.UNCONV.EXP OUTPUT {OUTPUT}.unconv.exp.fits IMAGE EXP FPA TRUE NONE 242 PPSTACK.UNCONV.EXPNUM OUTPUT {OUTPUT}.unconv.num.fits MASK EXPNUM FPA TRUE NONE 243 PPSTACK.UNCONV.EXPWT OUTPUT {OUTPUT}.unconv.expwt.fits VARIANCE EXP FPA TRUE NONE 242 244 PPSTACK.TARGET.PSF OUTPUT {OUTPUT}.target.psf PSF NONE CHIP TRUE NONE 243 245 PPSTACK.CONV.KERNEL OUTPUT {OUTPUT}.{FILE.INDEX}.kernel SUBKERNEL NONE FPA TRUE NONE -
branches/pap_stack/ippconfig/recipes/fitstypes.mdc
r27410 r27412 103 103 BITPIX S32 16 104 104 SCALING STR MANUAL 105 # Note: TRUE = BZERO + BSCALE * DISK 105 106 BSCALE F32 0.1 # Disk is stored as 1/10th sec 106 BZERO F32 3276. 7# Store unsigned zero as zero107 BZERO F32 3276.8 # Store unsigned zero as zero 107 108 COMPRESSION STR GZIP 108 109 TILE.X S32 0 -
branches/pap_stack/ppStack/src/ppStackCamera.c
r27400 r27412 310 310 pmFPAfile *expNum = pmFPAfileDefineOutput(config, exp->fpa, "PPSTACK.OUTPUT.EXPNUM"); 311 311 if (!expNum) { 312 psError(psErrorCodeLast(), false, _("Unable to generate output file from PPSTACK.OUTPUT. MASK"));312 psError(psErrorCodeLast(), false, _("Unable to generate output file from PPSTACK.OUTPUT.EXPNUM")); 313 313 return false; 314 314 } … … 319 319 expNum->save = true; 320 320 321 // Weighted exposure 322 pmFPAfile *expWt = pmFPAfileDefineOutput(config, exp->fpa, "PPSTACK.OUTPUT.EXPWT"); 323 if (!expWt) { 324 psError(psErrorCodeLast(), false, _("Unable to generate output file from PPSTACK.OUTPUT.EXPWT")); 325 return false; 326 } 327 if (expWt->type != PM_FPA_FILE_VARIANCE) { 328 psError(PPSTACK_ERR_CONFIG, true, "PPSTACK.OUTPUT.EXPWT is not of type VARIANCE"); 329 return false; 330 } 331 expWt->save = true; 321 332 322 333 … … 413 424 } 414 425 415 // Output mask426 // Exposure numbers 416 427 pmFPAfile *unconvExpNum = pmFPAfileDefineOutput(config, unconvExp->fpa, "PPSTACK.UNCONV.EXPNUM"); 417 428 if (!unconvExpNum) { … … 425 436 unconvExpNum->save = true; 426 437 438 // Weighted exposure 439 pmFPAfile *unconvExpWt = pmFPAfileDefineOutput(config, unconvExp->fpa, "PPSTACK.UNCONV.EXPWT"); 440 if (!unconvExpWt) { 441 psError(psErrorCodeLast(), false, _("Unable to generate output file from PPSTACK.UNCONV.EXPWT")); 442 return false; 443 } 444 if (unconvExpWt->type != PM_FPA_FILE_VARIANCE) { 445 psError(PPSTACK_ERR_CONFIG, true, "PPSTACK.UNCONV.EXPWT is not of type VARIANCE"); 446 return false; 447 } 448 unconvExpWt->save = true; 427 449 428 450 // Output JPEGs -
branches/pap_stack/ppStack/src/ppStackFiles.c
r27400 r27412 23 23 /// Regular (convolved) stack files 24 24 static char *filesStack[] = { "PPSTACK.OUTPUT", "PPSTACK.OUTPUT.MASK", "PPSTACK.OUTPUT.VARIANCE", 25 "PPSTACK.OUTPUT.EXP", "PPSTACK.OUTPUT.EXPNUM", 25 "PPSTACK.OUTPUT.EXP", "PPSTACK.OUTPUT.EXPNUM", "PPSTACK.OUTPUT.EXPWT", 26 26 "PPSTACK.OUTPUT.JPEG1", "PPSTACK.OUTPUT.JPEG2", 27 27 NULL }; 28 28 /// Unconvolved stack files 29 29 static char *filesUnconv[] = { "PPSTACK.UNCONV", "PPSTACK.UNCONV.MASK", "PPSTACK.UNCONV.VARIANCE", 30 "PPSTACK.UNCONV.EXP", "PPSTACK.UNCONV.EXPNUM", NULL }; 30 "PPSTACK.UNCONV.EXP", "PPSTACK.UNCONV.EXPNUM", "PPSTACK.UNCONV.EXPWT", 31 NULL }; 31 32 32 33 /// Files for photometry -
branches/pap_stack/psModules/src/imcombine/pmStack.c
r27400 r27412 34 34 35 35 36 //#define TESTING // Enable test output37 //#define TEST_X 843-1 // x coordinate to examine38 //#define TEST_Y 813-1 // y coordinate to examine39 //#define TEST_RADIUS 0 // Radius to examine36 #define TESTING // Enable test output 37 #define TEST_X 843-1 // x coordinate to examine 38 #define TEST_Y 813-1 // y coordinate to examine 39 #define TEST_RADIUS 0 // Radius to examine 40 40 41 41 … … 129 129 float sumExp = 0.0; // Sum of the exposure time 130 130 float sumExpWeight = 0.0; // Sum of the exposure time multiplied by the global weights 131 int numGood = 0; // Number of good exposures 131 132 for (int i = 0; i < values->n; i++) { 132 133 sumValueWeight += values->data.F32[i] * weights->data.F32[i]; … … 138 139 sumExp += exps->data.F32[i]; 139 140 sumExpWeight += exps->data.F32[i] * weights->data.F32[i]; 141 numGood++; 140 142 } 141 143 } … … 153 155 } 154 156 if (expWeight) { 155 *expWeight = sumExpWeight / sumWeight;157 *expWeight = sumExpWeight; 156 158 } 157 159 return true; … … 391 393 int x, int y, // Coordinates of interest; frame of output image 392 394 psImageMaskType bad, // Value for bad pixels 393 bool safe // Safe combination? 395 bool safe, // Safe combination? 396 float invTotalWeight // Inverse of total weight for all inputs 394 397 ) 395 398 { … … 423 426 if (exp) { 424 427 expValue = pixelExps->data.F32[0]; 428 expWeightValue = pixelExps->data.F32[0]; 425 429 } 426 430 maskValue = 0; … … 490 494 } 491 495 if (expweight) { 492 expweight->data.F32[y][x] = expWeightValue ;496 expweight->data.F32[y][x] = expWeightValue * invTotalWeight; 493 497 } 494 498 … … 1024 1028 psVector *exps = psVectorAlloc(num, PS_TYPE_F32); // Exposure times for each image 1025 1029 psArray *stack = psArrayAlloc(num); // Stack of readouts 1030 float totalExpWeight = 0.0; // Total value of all weighted exposure times 1031 float totalExp = 0.0; // Total exposure time 1026 1032 for (int i = 0; i < num; i++) { 1027 1033 pmStackData *data = input->data[i]; // Stack data for this input … … 1033 1039 weights->data.F32[i] = data->weight; 1034 1040 exps->data.F32[i] = data->exp; 1041 totalExp += exps->data.F32[i]; 1042 totalExpWeight += exps->data.F32[i] * weights->data.F32[i]; 1035 1043 pmReadout *ro = data->readout; // Readout of interest 1036 1044 stack->data[i] = psMemIncrRefCounter(ro); … … 1051 1059 } 1052 1060 } 1061 totalExpWeight = totalExp / totalExpWeight; // Convert to inverse 1053 1062 1054 1063 int minInputCols, maxInputCols, minInputRows, maxInputRows; // Smallest and largest values to combine … … 1095 1104 } 1096 1105 1097 psImage *exp = NULL, *expnum = NULL ; // Exposure map and exposure number1106 psImage *exp = NULL, *expnum = NULL, *expweight = NULL; // Exposure map and exposure number 1098 1107 if (expmaps) { 1099 1108 if (!expmaps->image) { … … 1106 1115 } 1107 1116 expnum = expmaps->mask; 1117 1118 if (!expmaps->variance) { 1119 expmaps->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32); 1120 } 1121 expweight = expmaps->variance; 1108 1122 } 1109 1123 … … 1145 1159 combineExtract(&num, &suspect, buffer, combinedImage, combinedMask, combinedVariance, 1146 1160 input, weights, exps, addVariance, reject, x, y, maskVal, maskSuspect); 1147 combinePixels(combinedImage, combinedMask, combinedVariance, exp, expnum, NULL,1148 num, buffer, x, y, bad, safe );1161 combinePixels(combinedImage, combinedMask, combinedVariance, exp, expnum, expweight, 1162 num, buffer, x, y, bad, safe, totalExpWeight); 1149 1163 1150 1164 if (iter > 0) {
Note:
See TracChangeset
for help on using the changeset viewer.
