// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #pragma once #include #include #include "../../common/DiffractionSpot.h" #include "../image_preprocessing/ImagePreprocessorBuffer.h" class ImageSpotFinder { protected: const int32_t width, height; std::vector output_buffer; ImageSpotFinder(int32_t width, int32_t height); size_t OutputSize() const; size_t OutputByteSize() const; std::vector ExtractSpots(const ImagePreprocessorBuffer &image, const SpotFindingSettings &settings, const std::vector &res_mask); public: constexpr static int32_t MIN_VALID_PIXELS = 100; constexpr static int NBX = 15; virtual ~ImageSpotFinder() = default; virtual std::vector Run(const ImagePreprocessorBuffer &image, const SpotFindingSettings &settings, const std::vector &res_mask) = 0; };