]> rtime.felk.cvut.cz Git - hercules2020/kcf.git/blob - src/fft_fftw.h
75d2f28e53bc0591bfc72a52141a0cb3a366a7a2
[hercules2020/kcf.git] / src / fft_fftw.h
1
2 #ifndef FFT_FFTW_H
3 #define FFT_FFTW_H
4
5 #include "fft.h"
6
7 #if defined(ASYNC)
8 #include <mutex>
9 #endif
10
11 #ifndef CUFFTW
12   #include <fftw3.h>
13 #else
14   #include <cufftw.h>
15 #endif //CUFFTW
16
17 class Fftw : public Fft
18 {
19 public:
20     Fftw();
21     void init(unsigned width, unsigned height, unsigned num_of_feats, unsigned num_of_scales) override;
22     void set_window(const cv::Mat & window) override;
23     void forward(const cv::Mat & real_input, ComplexMat & complex_result, float *real_input_arr) override;
24     void forward_window(std::vector<cv::Mat> patch_feats, ComplexMat & complex_result, cv::Mat & fw_all, float *real_input_arr) override;
25     void inverse(ComplexMat &  complex_input, cv::Mat & real_result, float *real_result_arr) override;
26     ~Fftw() override;
27 private:
28     unsigned m_width, m_height, m_num_of_feats, m_num_of_scales;
29     cv::Mat m_window;
30     fftwf_plan plan_f, plan_f_all_scales, plan_fw, plan_fw_all_scales, plan_i_features,
31         plan_i_features_all_scales, plan_i_1ch, plan_i_1ch_all_scales;
32 };
33
34 #endif // FFT_FFTW_H