ImageAnalysisCPU: Perform azim integration inside the function, without calling profile.Add
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user