Changeset 25911
- Timestamp:
- Oct 21, 2009, 1:03:45 PM (17 years ago)
- Location:
- branches/pap/ppStack/src
- Files:
-
- 8 edited
-
ppStackCamera.c (modified) (1 diff)
-
ppStackCombineFinal.c (modified) (3 diffs)
-
ppStackConvolve.c (modified) (3 diffs)
-
ppStackLoop.c (modified) (2 diffs)
-
ppStackLoop.h (modified) (1 diff)
-
ppStackOptions.c (modified) (4 diffs)
-
ppStackOptions.h (modified) (2 diffs)
-
ppStackThread.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/pap/ppStack/src/ppStackCamera.c
r25825 r25911 316 316 psError(PS_ERR_UNKNOWN, false, "Unable to generate output FPA."); 317 317 return false; 318 } 319 320 // Unconvolved mask 321 pmFPAfile *unconvMask = pmFPAfileDefineOutput(config, unconvFPA, "PPSTACK.UNCONV.MASK"); 322 if (!unconvMask) { 323 psError(PS_ERR_IO, false, _("Unable to generate output file from PPSTACK.UNCONV.MASK")); 324 return false; 325 } 326 if (unconvMask->type != PM_FPA_FILE_MASK) { 327 psError(PS_ERR_IO, true, "PPSTACK.UNCONV.MASK is not of type MASK"); 328 return false; 329 } 330 unconvMask->save = true; 331 332 // Unconvolved variance 333 if (haveVariances) { 334 pmFPAfile *unconvVariance = pmFPAfileDefineOutput(config, unconvFPA, "PPSTACK.UNCONV.VARIANCE"); 335 if (!unconvVariance) { 336 psError(PS_ERR_IO, false, _("Unable to generate output file from PPSTACK.UNCONV.VARIANCE")); 337 return false; 338 } 339 if (unconvVariance->type != PM_FPA_FILE_VARIANCE) { 340 psError(PS_ERR_IO, true, "PPSTACK.UNCONV.VARIANCE is not of type VARIANCE"); 341 return false; 342 } 343 unconvVariance->save = true; 318 344 } 319 345 #endif -
branches/pap/ppStack/src/ppStackCombineFinal.c
r25830 r25911 10 10 #include "ppStackLoop.h" 11 11 12 bool ppStackCombineFinal(pmReadout *target, ppStackThreadData *stack, 12 bool ppStackCombineFinal(pmReadout *target, ppStackThreadData *stack, psArray *covariances, 13 13 ppStackOptions *options, pmConfig *config, bool full, bool normalise) 14 14 { … … 56 56 57 57 // Sum covariance matrices 58 if ( options->covariances) {58 if (covariances) { 59 59 double sumWeights = 0.0; // Sum of weights 60 60 for (int i = 0; i < options->num; i++) { 61 61 if (options->inputMask->data.U8[i]) { 62 psFree( options->covariances->data[i]);63 options->covariances->data[i] = NULL;62 psFree(covariances->data[i]); 63 covariances->data[i] = NULL; 64 64 continue; 65 65 } 66 psKernel *covar = options->covariances->data[i]; // Covariance matrix66 psKernel *covar = covariances->data[i]; // Covariance matrix 67 67 if (!covar) { 68 68 continue; … … 73 73 } 74 74 if (sumWeights > 0.0) { 75 target->covariance = psImageCovarianceSum( options->covariances);75 target->covariance = psImageCovarianceSum(covariances); 76 76 psBinaryOp(target->covariance->image, target->covariance->image, "/", 77 77 psScalarAlloc(sumWeights, PS_TYPE_F32)); 78 psFree(options->covariances); options->covariances = NULL;79 78 psImageCovarianceTransfer(target->variance, target->covariance); 80 79 } -
branches/pap/ppStack/src/ppStackConvolve.c
r25830 r25911 39 39 options->weightings = psVectorAlloc(num, PS_TYPE_F32); // Combination weightings for images (1/noise^2) 40 40 psVectorInit(options->weightings, 0.0); 41 options->covariances = psArrayAlloc(num); // Covariance matrices 41 options->origCovars = psArrayAlloc(num); 42 options->convCovars = psArrayAlloc(num); // Covariance matrices 42 43 43 44 psList *fpaList = psListAlloc(NULL); // List of input FPAs, for concept averaging … … 79 80 // Background subtraction, scaling and normalisation is performed automatically by the image matching 80 81 psTimerStart("PPSTACK_MATCH"); 82 options->origCovars->data[i] = psMemIncrRefCounter(readout->covariance); 81 83 if (!ppStackMatch(readout, options, i, config)) { 82 84 psErrorStackPrint(stderr, "Unable to match image %d --- ignoring.", i); … … 85 87 continue; 86 88 } 87 options->co variances->data[i] = psMemIncrRefCounter(readout->covariance);89 options->convCovars->data[i] = psMemIncrRefCounter(readout->covariance); 88 90 89 91 if (options->stats) { -
branches/pap/ppStack/src/ppStackLoop.c
r25830 r25911 97 97 // Final combination 98 98 psTrace("ppStack", 2, "Final stack of convolved images....\n"); 99 if (!ppStackCombineFinal(options->outRO, stack, options , config, false, false)) {99 if (!ppStackCombineFinal(options->outRO, stack, options->convCovars, options, config, false, false)) { 100 100 psError(PS_ERR_UNKNOWN, false, "Unable to perform final combination."); 101 101 psFree(stack); … … 132 132 } 133 133 psTrace("ppStack", 2, "Stack of unconvolved images....\n"); 134 if (!ppStackCombineFinal(options->unconvRO, stack, options , config, true, true)) {134 if (!ppStackCombineFinal(options->unconvRO, stack, options->origCovars, options, config, true, true)) { 135 135 psError(PS_ERR_UNKNOWN, false, "Unable to perform unconvolved combination."); 136 136 psFree(stack); -
branches/pap/ppStack/src/ppStackLoop.h
r25830 r25911 58 58 pmReadout *target, // Target readout 59 59 ppStackThreadData *stack, // Stack 60 psArray *covariances, // Covariances 60 61 ppStackOptions *options, // Options 61 62 pmConfig *config, // Configuration -
branches/pap/ppStack/src/ppStackOptions.c
r25824 r25911 15 15 psFree(options->origMasks); 16 16 psFree(options->origVariances); 17 psFree(options->origCovars); 17 18 psFree(options->convImages); 18 19 psFree(options->convMasks); … … 27 28 psFree(options->matchChi2); 28 29 psFree(options->weightings); 29 psFree(options->co variances);30 psFree(options->convCovars); 30 31 psFree(options->outRO); 31 32 psFree(options->unconvRO); … … 46 47 options->origMasks = NULL; 47 48 options->origVariances = NULL; 49 options->origCovars = NULL; 48 50 options->convImages = NULL; 49 51 options->convMasks = NULL; … … 61 63 options->matchChi2 = NULL; 62 64 options->weightings = NULL; 63 options->co variances = NULL;65 options->convCovars = NULL; 64 66 options->outRO = NULL; 65 67 options->unconvRO = NULL; -
branches/pap/ppStack/src/ppStackOptions.h
r25824 r25911 13 13 psArray *origImages, *origMasks, *origVariances; // Filenames of the original images 14 14 psArray *convImages, *convMasks, *convVariances; // Filenames for the temporary convolved images 15 psArray *origCovars; // Original covariances matrices 15 16 int num; // Number of inputs 16 17 // Prepare … … 27 28 psVector *matchChi2; // chi^2 for stamps from matching 28 29 psVector *weightings; // Combination weightings for images (1/noise^2) 29 psArray *co variances;// Convolved covariance matrices30 psArray *convCovars; // Convolved covariance matrices 30 31 // Combine initial 31 32 pmReadout *outRO; // Output readout -
branches/pap/ppStack/src/ppStackThread.c
r25830 r25911 64 64 const psArray *imageNames = conv ? options->convImages : options->origImages; // Names of images to read 65 65 const psArray *maskNames = conv ? options->convMasks : options->origMasks; // Names of masks to read 66 const psArray *varianceNames = conv ? options->convVariances : NULL; // Variance names67 const psArray *covariances = conv ? options->co variances : NULL; // Covariance matrices66 const psArray *varianceNames = conv ? options->convVariances : options->origVariances; // Variance names 67 const psArray *covariances = conv ? options->convCovars : options->origCovars; // Covariance matrices 68 68 69 69 PS_ASSERT_ARRAY_NON_NULL(cells, NULL);
Note:
See TracChangeset
for help on using the changeset viewer.
