#include <opencv2/opencv.hpp>
#include <vector>
-
-#ifdef CUFFT
- #include "complexmat.cuh"
-#else
- #include "complexmat.hpp"
-#endif
+#include <cassert>
+#include "complexmat.hpp"
#ifdef BIG_BATCH
#define BIG_BATCH_MODE 1
+#define IF_BIG_BATCH(true, false) true
#else
#define BIG_BATCH_MODE 0
+#define IF_BIG_BATCH(true, false) false
#endif
class Fft
{
public:
- virtual void init(unsigned width, unsigned height,unsigned num_of_feats, unsigned num_of_scales) = 0;
- virtual void set_window(const cv::Mat & window) = 0;
- virtual void forward(const cv::Mat & real_input, ComplexMat & complex_result, float *real_input_arr) = 0;
- virtual void forward_window(std::vector<cv::Mat> patch_feats, ComplexMat & complex_result, cv::Mat & fw_all, float *real_input_arr) = 0;
- virtual void inverse(ComplexMat & complex_input, cv::Mat & real_result, float *real_result_arr) = 0;
- virtual ~Fft() = 0;
+ void init(unsigned width, unsigned height, unsigned num_of_feats, unsigned num_of_scales);
+ void set_window(const MatDynMem &window);
+ void forward(const MatScales &real_input, ComplexMat &complex_result);
+ void forward_window(MatScaleFeats &patch_feats_in, ComplexMat &complex_result, MatScaleFeats &tmp);
+ void inverse(ComplexMat &complex_input, MatScales &real_result);
static cv::Size freq_size(cv::Size space_size)
{
#endif
return ret;
}
+
+protected:
+ unsigned m_width, m_height, m_num_of_feats;
+#ifdef BIG_BATCH
+ unsigned m_num_of_scales;
+#endif
};
#endif // FFT_H