// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JFJOCH_IMAGEANALYSISCPU_H #define JFJOCH_IMAGEANALYSISCPU_H #include "../common/JFJochMessages.h" #include "../common/DiffractionExperiment.h" #include "../common/AzimuthalIntegration.h" #include "../common/PixelMask.h" #include "../common/AzimuthalIntegrationProfile.h" #include "spot_finding/ImageSpotFinder.h" #include "indexing/IndexerThreadPool.h" class ImageAnalysisCPU { const DiffractionExperiment &experiment; const AzimuthalIntegration &integration; std::vector roi_map; std::map roi_names; size_t roi_count; size_t npixels; size_t xpixels; std::vector mask_1byte; ImageSpotFinder spotFinder; IndexerThreadPool *indexer; const int64_t saturation_limit; const PixelMask &mask; template void Analyze(DataMessage &output, const uint8_t *image, T err_pixel_val, T sat_pixel_val, AzimuthalIntegrationProfile &profile, const SpotFindingSettings &spot_finding_settings); public: ImageAnalysisCPU(const DiffractionExperiment& experiment, const AzimuthalIntegration& integration, const PixelMask& mask); void UpdateROI(); ImageAnalysisCPU& SetIndexer(IndexerThreadPool *input); void Analyze(DataMessage &output, std::vector &buffer, AzimuthalIntegrationProfile &profile, const SpotFindingSettings &spot_finding_settings); }; #endif //JFJOCH_IMAGEANALYSISCPU_H