Changeset 42379 for trunk/psModules/src/detrend/pmOverscan.c
- Timestamp:
- Feb 8, 2023, 11:54:08 AM (3 years ago)
- Location:
- trunk/psModules
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
src/detrend/pmOverscan.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules
- Property svn:mergeinfo changed
/branches/eam_branches/ipp-20220316/psModules (added) merged: 42145,42147,42160,42166,42168,42215,42227,42347,42352,42371,42375
- Property svn:mergeinfo changed
-
trunk/psModules/src/detrend/pmOverscan.c
r42356 r42379 38 38 opts->order = order; 39 39 opts->stat = psMemIncrRefCounter(stat); 40 41 opts->minValid = 0.0; // default value if not defined 42 opts->maxValid = (float) 0x10000; // default value if not defined 43 opts->maskVal = 0x0001; // default value if not defined 40 44 41 45 // Smoothing … … 314 318 psFree(reducedScalar); 315 319 320 // EAM 2022.03.29 : if the calculated overscan value is below the threshold, 321 // declare the readout dead and mask 322 323 if ((reduced < overscanOpts->minValid) || (reduced > overscanOpts->maxValid)) { 324 fprintf (stderr, "bad overscan (1) %f, masking readout\n", reduced); 325 psImage *mask = input->mask; 326 for (int y = 0; y < mask->numRows; y++) { 327 for (int x = 0; x < mask->numCols; x++) { 328 mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= overscanOpts->maskVal; 329 } 330 } 331 } 332 316 333 psFree(stats); 317 334 return true; … … 371 388 // generate stats of overscan vector for header 372 389 { 373 psString comment = NULL; // Comment to add 374 psStats *vectorStats = psStatsAlloc (PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_STDEV); 375 if (!psVectorStats (vectorStats, reduced, NULL, NULL, 0)) { 376 psError(PS_ERR_UNKNOWN, false, "failure to measure stats"); 377 return false; 378 } 379 psStringAppend(&comment, "Mean Overscan value: %f", vectorStats->sampleMean); 380 psMetadataAddStr(hdu->header, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, comment, ""); 381 psFree(comment); 382 383 // write metadata header value 384 psMetadataAddF32(hdu->header, PS_LIST_TAIL, "OVER_VAL", PS_META_REPLACE, "Overscan mean", vectorStats->sampleMean); 385 psMetadataAddF32(hdu->header, PS_LIST_TAIL, "OVER_SIG", PS_META_REPLACE, "Overscan stdev", vectorStats->sampleStdev); 386 psFree (vectorStats); 390 psString comment = NULL; // Comment to add 391 psStats *vectorStats = psStatsAlloc (PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_STDEV); 392 if (!psVectorStats (vectorStats, reduced, NULL, NULL, 0)) { 393 psError(PS_ERR_UNKNOWN, false, "failure to measure stats"); 394 return false; 395 } 396 psStringAppend(&comment, "Mean Overscan value: %f", vectorStats->sampleMean); 397 psMetadataAddStr(hdu->header, PS_LIST_TAIL, "HISTORY", PS_META_DUPLICATE_OK, comment, ""); 398 psFree(comment); 399 400 // write metadata header value 401 psMetadataAddF32(hdu->header, PS_LIST_TAIL, "OVER_VAL", PS_META_REPLACE, "Overscan mean", vectorStats->sampleMean); 402 psMetadataAddF32(hdu->header, PS_LIST_TAIL, "OVER_SIG", PS_META_REPLACE, "Overscan stdev", vectorStats->sampleStdev); 403 404 // EAM 2022.03.29 : if the calculated overscan value is below the threshold, 405 // declare the readout dead and mask 406 407 if ((vectorStats->sampleMean < overscanOpts->minValid) || (vectorStats->sampleMean > overscanOpts->maxValid)) { 408 fprintf (stderr, "bad overscan (2) %f, masking readout\n", vectorStats->sampleMean); 409 psImage *mask = input->mask; 410 for (int y = 0; y < mask->numRows; y++) { 411 for (int x = 0; x < mask->numCols; x++) { 412 mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= overscanOpts->maskVal; 413 } 414 } 415 } 416 417 psFree (vectorStats); 387 418 } 388 419 … … 469 500 psMetadataAddF32(hdu->header, PS_LIST_TAIL, "OVER_VAL", PS_META_REPLACE, "Overscan mean", vectorStats->sampleMean); 470 501 psMetadataAddF32(hdu->header, PS_LIST_TAIL, "OVER_SIG", PS_META_REPLACE, "Overscan stdev", vectorStats->sampleStdev); 502 503 // EAM 2022.03.29 : if the calculated overscan value is below the threshold, 504 // declare the readout dead and mask 505 506 if ((vectorStats->sampleMean < overscanOpts->minValid) || (vectorStats->sampleMean > overscanOpts->maxValid)) { 507 fprintf (stderr, "bad overscan (3) %f, masking readout\n", vectorStats->sampleMean); 508 psImage *mask = input->mask; 509 for (int y = 0; y < mask->numRows; y++) { 510 for (int x = 0; x < mask->numCols; x++) { 511 mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= overscanOpts->maskVal; 512 } 513 } 514 } 471 515 psFree (vectorStats); 472 516 }
Note:
See TracChangeset
for help on using the changeset viewer.
