12 const std::vector<std::complex<double>>& signal_fft,
13 const std::vector<std::complex<double>>& kernel_fft,
14 std::vector<std::complex<double>>& result_fft)>;
26 std::span<const double> src,
27 std::span<const double> kernel,
29 bool full_size =
false);
37[[nodiscard]] std::vector<double>
convolve(
38 std::span<const double> src,
39 std::span<const double> ir);
49 std::span<const double> src,
50 std::span<const double> tmpl,
60 std::span<const double> src,
61 std::span<const double> reference);
71 std::span<const double> src,
72 std::span<const double> ir,
73 double regularization = 1e-6);
82 std::span<const double> src,
std::vector< double > cross_correlate(std::span< const double > src, std::span< const double > tmpl, bool normalize)
Cross-correlation via FFT.
std::vector< double > deconvolve(std::span< const double > src, std::span< const double > ir, double regularization)
Frequency-domain deconvolution with Tikhonov regularisation.
std::vector< double > apply_convolution(std::span< const double > src, std::span< const double > kernel, const ConvolutionProcessor &processor, bool full_size)
Core FFT convolution engine.
std::function< void(const std::vector< std::complex< double > > &signal_fft, const std::vector< std::complex< double > > &kernel_fft, std::vector< std::complex< double > > &result_fft)> ConvolutionProcessor
Frequency-domain processor callback for apply_convolution.
void normalize(std::span< double > data, double target_min, double target_max) noexcept
Normalize to [target_min, target_max] in-place Single-pass min/max reduction followed by a single tra...
std::vector< double > auto_correlate(std::span< const double > src, bool normalize)
Auto-correlation via FFT.
std::vector< double > convolve(std::span< const double > src, std::span< const double > ir)
Linear FFT convolution.
std::vector< double > matched_filter(std::span< const double > src, std::span< const double > reference)
Matched filter (normalised cross-correlation)