ImageAnalysisCPU: Optimize azimuthal integration calculations to increase performance

This commit is contained in:
2025-10-04 15:10:02 +02:00
parent 031ed486c9
commit c00970db0a
4 changed files with 30 additions and 9 deletions

View File

@@ -22,7 +22,8 @@ ImageAnalysisCPU::ImageAnalysisCPU(const DiffractionExperiment &in_experiment,
spotFinder(in_integration),
indexer(in_indexer),
saturation_limit(experiment.GetSaturationLimit()),
mask(in_mask) {
mask(in_mask),
azint_bins(in_integration.GetBinNumber()) {
roi_map = experiment.ExportROIMap();
roi_count = experiment.ROI().size();
@@ -77,9 +78,9 @@ 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);
std::vector<float> azim_sum(azint_bins, 0.0f);
//std::vector<float> azim_sum2(integration.GetBinNumber(), 0.0f);
std::vector<uint32_t> azim_count(azint_bins, 0);
size_t err_pixels = 0;
size_t masked_pixels = 0;
@@ -130,11 +131,11 @@ void ImageAnalysisCPU::Analyze(DataMessage &output,
}
}
}
uint16_t bin = pixel_to_bin[i];
if (bin < integration.GetBinNumber()) {
const uint16_t bin = pixel_to_bin[i];
if (bin < azint_bins) {
float val = image[i] * corrections[i];
azim_sum[bin] += val;
azim_sum2[bin] += val * val;
//azim_sum2[bin] += val * val;
++azim_count[bin];
}
}