ImageAnalysisCPU: Perform azim integration inside the function, without calling profile.Add

This commit is contained in:
2025-10-04 14:45:32 +02:00
parent 4daeecdd92
commit 031ed486c9

View File

@@ -34,7 +34,6 @@ ImageAnalysisCPU::ImageAnalysisCPU(const DiffractionExperiment &in_experiment,
void ImageAnalysisCPU::Analyze(DataMessage &output, std::vector<uint8_t> &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<ROIMessage> roi(roi_count);
std::vector<float> azim_sum(integration.GetBinNumber(), 0.0f);
std::vector<float> azim_sum2(integration.GetBinNumber(), 0.0f);
std::vector<uint32_t> 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;