From 89c1ee0352e4130bb0ede6da62cc6bc430309c37 Mon Sep 17 00:00:00 2001 From: David Hammer <dhammer@mailbox.org> Date: Thu, 12 May 2022 10:47:51 +0200 Subject: [PATCH] LPD: check gain values, mask extreme / nan values --- src/calng/kernels/lpd_gpu.cu | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/calng/kernels/lpd_gpu.cu b/src/calng/kernels/lpd_gpu.cu index 38094853..bd5ae721 100644 --- a/src/calng/kernels/lpd_gpu.cu +++ b/src/calng/kernels/lpd_gpu.cu @@ -31,8 +31,8 @@ extern "C" { const size_t data_stride_cell = Y * data_stride_y; const size_t data_index = memory_cell * data_stride_cell + y * data_stride_y + x * data_stride_x; const unsigned short raw_data_value = data[data_index]; - const unsigned char gain = raw_data_value >> 12; - float corrected = (float)(raw_data_value & 0xfff); + const unsigned char gain = (raw_data_value >> 12) & 0x0003; + float corrected = (float)(raw_data_value & 0x0fff); const size_t gm_map_stride_gain = 1; const size_t gm_map_stride_x = 3 * gm_map_stride_gain; @@ -46,7 +46,8 @@ extern "C" { y * gm_map_stride_y + x * gm_map_stride_x; - if ((corr_flags & BPMASK) && bad_pixel_map[gm_map_index]) { + if (gain > 2 || ((corr_flags & BPMASK) && bad_pixel_map[gm_map_index])) { + // now also checking for illegal gain value corrected = bad_pixel_mask_value; } else { // TODO: save GPU memory by combining maps @@ -62,6 +63,9 @@ extern "C" { if (corr_flags & FF_CORR) { corrected *= flatfield_map[gm_map_index]; } + if (corrected < -1e7 || corrected > 1e7 || isnan(corrected)) { + corrected = bad_pixel_mask_value; + } } } {% if output_data_dtype == "half" %} -- GitLab