Changeset 27402 for trunk/ppStack/src/ppStackReadout.c
- Timestamp:
- Mar 23, 2010, 9:12:53 AM (16 years ago)
- File:
-
- 1 edited
-
trunk/ppStack/src/ppStackReadout.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppStack/src/ppStackReadout.c
r27400 r27402 23 23 psVector *mask = options->inputMask; // Mask for inputs 24 24 psVector *weightings = options->weightings; // Weightings (1/noise^2) for each image 25 psVector *exposures = options->exposures; // Exposure times for each image26 25 psVector *addVariance = options->matchChi2; // Additional variance when rejecting 27 26 28 27 job->results = ppStackReadoutInitial(config, outRO, thread->readouts, mask, 29 weightings, exposures,addVariance);28 weightings, addVariance); 30 29 thread->busy = false; 31 30 … … 38 37 39 38 psArray *args = job->args; // Arguments 40 ppStackThread *thread = args->data[0]; // Thread 41 psArray *reject = args->data[1]; // Rejected pixels for each image 42 ppStackOptions *options = args->data[2]; // Options 43 pmConfig *config = args->data[3]; // Configuration 44 bool safety = PS_SCALAR_VALUE(args->data[4], U8); // Safety switch on? 45 bool normalise = PS_SCALAR_VALUE(args->data[5], U8); // Normalise images? 39 pmReadout *target = args->data[0]; // Output readout 40 ppStackThread *thread = args->data[1]; // Thread 41 psArray *reject = args->data[2]; // Rejected pixels for each image 42 ppStackOptions *options = args->data[3]; // Options 43 pmConfig *config = args->data[4]; // Configuration 44 bool safety = PS_SCALAR_VALUE(args->data[5], U8); // Safety switch on? 45 bool normalise = PS_SCALAR_VALUE(args->data[6], U8); // Normalise images? 46 46 47 47 psVector *mask = options->inputMask; // Mask for inputs 48 48 psVector *weightings = options->weightings; // Weightings (1/noise^2) for each image 49 psVector *exposures = options->exposures; // Exposure times for each image50 49 psVector *addVariance = options->matchChi2; // Additional variance when rejecting 51 50 psVector *norm = normalise ? options->norm : NULL; // Normalisations to apply to images 52 51 53 bool status = ppStackReadoutFinal(config, options->outRO, options->expRO, thread->readouts, mask, reject,54 weightings, exposures,addVariance, safety, norm); // Status of operation52 bool status = ppStackReadoutFinal(config, target, thread->readouts, mask, reject, 53 weightings, addVariance, safety, norm); // Status of operation 55 54 56 55 thread->busy = false; 57 58 psAssert(status, "Stacking failed.");59 56 60 57 return status; … … 104 101 105 102 psArray *ppStackReadoutInitial(const pmConfig *config, pmReadout *outRO, const psArray *readouts, 106 const psVector *mask, const psVector *weightings, const psVector *exposures, 107 const psVector *addVariance) 103 const psVector *mask, const psVector *weightings, const psVector *addVariance) 108 104 { 109 105 assert(config); … … 153 149 } 154 150 155 stack->data[i] = pmStackDataAlloc(ro, weightings->data.F32[i], exposures->data.F32[i], 156 addVariance->data.F32[i]); 157 } 158 159 if (!pmStackCombine(outRO, NULL, stack, maskVal | maskBad, maskSuspect, maskBad, kernelSize, iter, 151 stack->data[i] = pmStackDataAlloc(ro, weightings->data.F32[i], addVariance->data.F32[i]); 152 } 153 154 if (!pmStackCombine(outRO, stack, maskVal | maskBad, maskSuspect, maskBad, kernelSize, iter, 160 155 combineRej, combineSys, combineDiscard, useVariance, safe, false)) { 161 156 psError(PS_ERR_UNKNOWN, false, "Unable to combine input readouts with rejection."); … … 192 187 193 188 194 bool ppStackReadoutFinal(const pmConfig *config, pmReadout *outRO, pmReadout *expRO,const psArray *readouts,189 bool ppStackReadoutFinal(const pmConfig *config, pmReadout *outRO, const psArray *readouts, 195 190 const psVector *mask, const psArray *rejected, const psVector *weightings, 196 const psVector *exposures, const psVector *addVariance, bool safety, 197 const psVector *norm) 191 const psVector *addVariance, bool safety, const psVector *norm) 198 192 { 199 193 assert(config); 200 194 assert(outRO); 201 assert(expRO);202 195 assert(readouts); 203 196 assert(!rejected || readouts->n == rejected->n); … … 245 238 } 246 239 247 pmStackData *data = pmStackDataAlloc(ro, weightings->data.F32[i], exposures->data.F32[i],240 pmStackData *data = pmStackDataAlloc(ro, weightings->data.F32[i], 248 241 addVariance ? addVariance->data.F32[i] : NAN); 249 242 data->reject = rejected ? psMemIncrRefCounter(rejected->data[i]) : NULL; … … 257 250 } 258 251 259 if (!pmStackCombine(outRO, expRO,stack, maskVal | maskBad, maskSuspect, maskBad, 0, iter, combineRej,252 if (!pmStackCombine(outRO, stack, maskVal | maskBad, maskSuspect, maskBad, 0, iter, combineRej, 260 253 combineSys, combineDiscard, useVariance, safe, rejected)) { 261 254 psError(PS_ERR_UNKNOWN, false, "Unable to combine input readouts."); … … 266 259 pmCell *outCell = outRO->parent; // Output cell 267 260 pmChip *outChip = outCell->parent; // Output chip 261 268 262 outRO->data_exists = true; 269 263 outCell->data_exists = true; 270 264 outChip->data_exists = true; 271 265 272 pmCell *expCell = expRO->parent; // Exposure cell273 pmChip *expChip = expCell->parent; // Exposure chip274 expRO->data_exists = true;275 expCell->data_exists = true;276 expChip->data_exists = true;277 278 266 psFree(stack); 279 267
Note:
See TracChangeset
for help on using the changeset viewer.
