Changeset 42147
- Timestamp:
- Mar 29, 2022, 3:03:24 PM (4 years ago)
- Location:
- branches/eam_branches/ipp-20220316/psModules/src/detrend
- Files:
-
- 2 edited
-
pmOverscan.c (modified) (4 diffs)
-
pmOverscan.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20220316/psModules/src/detrend/pmOverscan.c
r39499 r42147 38 38 opts->order = order; 39 39 opts->stat = psMemIncrRefCounter(stat); 40 41 opts->minValid = 0.0; // default value if not defined 42 opts->maskVal = 0x0001; // default value if not defined 40 43 41 44 // Smoothing … … 308 311 psFree(reducedScalar); 309 312 313 // EAM 2022.03.29 : if the calculated overscan value is below the threshold, 314 // declare the readout dead and mask 315 316 if (reduced < overscanOpts->minValid) { 317 fprintf (stderr, "bad overscan (1) %f, masking readout\n", reduced); 318 psImage *mask = input->mask; 319 for (int y = 0; y < mask->numRows; y++) { 320 for (int x = 0; x < mask->numCols; x++) { 321 mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= overscanOpts->maskVal; 322 } 323 } 324 } 325 310 326 psFree(stats); 311 327 return true; … … 365 381 // generate stats of overscan vector for header 366 382 { 367 psString comment = NULL; // Comment to add 368 psStats *vectorStats = psStatsAlloc (PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_STDEV); 369 if (!psVectorStats (vectorStats, reduced, NULL, NULL, 0)) { 370 psError(PS_ERR_UNKNOWN, false, "failure to measure stats"); 371 return false; 372 } 373 psStringAppend(&comment, "Mean Overscan value: %f", vectorStats->sampleMean); 374 psMetadataAddStr(hdu->header, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, comment, ""); 375 psFree(comment); 376 377 // write metadata header value 378 psMetadataAddF32(hdu->header, PS_LIST_TAIL, "OVER_VAL", PS_META_REPLACE, "Overscan mean", vectorStats->sampleMean); 379 psMetadataAddF32(hdu->header, PS_LIST_TAIL, "OVER_SIG", PS_META_REPLACE, "Overscan stdev", vectorStats->sampleStdev); 380 psFree (vectorStats); 383 psString comment = NULL; // Comment to add 384 psStats *vectorStats = psStatsAlloc (PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_STDEV); 385 if (!psVectorStats (vectorStats, reduced, NULL, NULL, 0)) { 386 psError(PS_ERR_UNKNOWN, false, "failure to measure stats"); 387 return false; 388 } 389 psStringAppend(&comment, "Mean Overscan value: %f", vectorStats->sampleMean); 390 psMetadataAddStr(hdu->header, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, comment, ""); 391 psFree(comment); 392 393 // write metadata header value 394 psMetadataAddF32(hdu->header, PS_LIST_TAIL, "OVER_VAL", PS_META_REPLACE, "Overscan mean", vectorStats->sampleMean); 395 psMetadataAddF32(hdu->header, PS_LIST_TAIL, "OVER_SIG", PS_META_REPLACE, "Overscan stdev", vectorStats->sampleStdev); 396 397 // EAM 2022.03.29 : if the calculated overscan value is below the threshold, 398 // declare the readout dead and mask 399 400 if (vectorStats->sampleMean < overscanOpts->minValid) { 401 fprintf (stderr, "bad overscan (2) %f, masking readout\n", vectorStats->sampleMean); 402 psImage *mask = input->mask; 403 for (int y = 0; y < mask->numRows; y++) { 404 for (int x = 0; x < mask->numCols; x++) { 405 mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= overscanOpts->maskVal; 406 } 407 } 408 } 409 410 psFree (vectorStats); 381 411 } 382 412 … … 463 493 psMetadataAddF32(hdu->header, PS_LIST_TAIL, "OVER_VAL", PS_META_REPLACE, "Overscan mean", vectorStats->sampleMean); 464 494 psMetadataAddF32(hdu->header, PS_LIST_TAIL, "OVER_SIG", PS_META_REPLACE, "Overscan stdev", vectorStats->sampleStdev); 495 496 // EAM 2022.03.29 : if the calculated overscan value is below the threshold, 497 // declare the readout dead and mask 498 499 if (vectorStats->sampleMean < overscanOpts->minValid) { 500 fprintf (stderr, "bad overscan (3) %f, masking readout\n", vectorStats->sampleMean); 501 psImage *mask = input->mask; 502 for (int y = 0; y < mask->numRows; y++) { 503 for (int x = 0; x < mask->numCols; x++) { 504 mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= overscanOpts->maskVal; 505 } 506 } 507 } 465 508 psFree (vectorStats); 466 509 } -
branches/eam_branches/ipp-20220316/psModules/src/detrend/pmOverscan.h
r14505 r42147 43 43 int boxcar; ///< Boxcar smoothing radius 44 44 float gauss; ///< Gaussian smoothing sigma 45 float minValid; ///< if overscan is too low, readout is dead : mask 46 psImageMaskType maskVal; ///< Mask value to give dead readouts 47 45 48 // Outputs 46 49 psPolynomial1D *poly; ///< Result of polynomial fit
Note:
See TracChangeset
for help on using the changeset viewer.
