]> rtime.felk.cvut.cz Git - hercules2020/kcf.git/blob - src/fft.h
cc1393d45abcd3a96138ac90c52874e336befe5c
[hercules2020/kcf.git] / src / fft.h
1
2 #ifndef FFT_H
3 #define FFT_H
4
5 #include <opencv2/opencv.hpp>
6 #include <vector>
7
8 #ifdef CUFFT
9     #include "complexmat.cuh"
10 #else
11     #include "complexmat.hpp"
12 #endif
13
14 #ifdef BIG_BATCH
15 #define BIG_BATCH_MODE 1
16 #else
17 #define BIG_BATCH_MODE 0
18 #endif
19
20 class Fft
21 {
22 public:
23     virtual void init(unsigned width, unsigned height,unsigned num_of_feats, unsigned num_of_scales) = 0;
24     virtual void set_window(const cv::Mat & window) = 0;
25     virtual void forward(const cv::Mat & real_input, ComplexMat & complex_result, float *real_input_arr) = 0;
26     virtual void forward_window(std::vector<cv::Mat> patch_feats, ComplexMat & complex_result, cv::Mat & fw_all, float *real_input_arr) = 0;
27     virtual void inverse(ComplexMat &  complex_input, cv::Mat & real_result, float *real_result_arr) = 0;
28     virtual ~Fft() = 0;
29
30     static cv::Size freq_size(cv::Size space_size)
31     {
32         cv::Size ret(space_size);
33 #if defined(CUFFT) || defined(FFTW)
34         ret.width = space_size.width / 2 + 1;
35 #endif
36         return ret;
37     }
38 };
39
40 #endif // FFT_H