From 031ed486c9c9d6d06cdf7446de701c4822568820 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Sat, 4 Oct 2025 14:45:32 +0200 Subject: [PATCH] ImageAnalysisCPU: Perform azim integration inside the function, without calling profile.Add --- image_analysis/ImageAnalysisCPU.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/image_analysis/ImageAnalysisCPU.cpp b/image_analysis/ImageAnalysisCPU.cpp index c7a7b540..5021662e 100644 --- a/image_analysis/ImageAnalysisCPU.cpp +++ b/image_analysis/ImageAnalysisCPU.cpp @@ -34,7 +34,6 @@ ImageAnalysisCPU::ImageAnalysisCPU(const DiffractionExperiment &in_experiment, void ImageAnalysisCPU::Analyze(DataMessage &output, std::vector &image, AzimuthalIntegrationProfile &profile, const SpotFindingSettings &spot_finding_settings) { - std::unique_lock ul(m); if ((output.image.GetWidth() != xpixels) || (output.image.GetWidth() * output.image.GetHeight() != npixels)) @@ -78,6 +77,10 @@ void ImageAnalysisCPU::Analyze(DataMessage &output, std::vector roi(roi_count); + std::vector azim_sum(integration.GetBinNumber(), 0.0f); + std::vector azim_sum2(integration.GetBinNumber(), 0.0f); + std::vector azim_count(integration.GetBinNumber(), 0); + size_t err_pixels = 0; size_t masked_pixels = 0; size_t sat_pixels = 0; @@ -127,7 +130,13 @@ void ImageAnalysisCPU::Analyze(DataMessage &output, } } } - profile.Add(pixel_to_bin[i], image[i] * corrections[i]); + uint16_t bin = pixel_to_bin[i]; + if (bin < integration.GetBinNumber()) { + float val = image[i] * corrections[i]; + azim_sum[bin] += val; + azim_sum2[bin] += val * val; + ++azim_count[bin]; + } } } @@ -139,6 +148,8 @@ void ImageAnalysisCPU::Analyze(DataMessage &output, CompressedImage(updated_image, experiment.GetXPixelsNum(), experiment.GetYPixelsNum()), indexer, output); + profile.Add(azim_sum, azim_count); + output.max_viable_pixel_value = max_value; output.min_viable_pixel_value = min_value; output.error_pixel_count = err_pixels;