10 void Fft::init(unsigned width, unsigned height, unsigned num_of_feats, unsigned num_of_scales)
14 m_num_of_feats = num_of_feats;
16 m_num_of_scales = num_of_scales;
22 void Fft::set_window(const MatDynMem &window)
24 assert(window.dims == 2);
25 assert(window.size().width == m_width);
26 assert(window.size().height == m_height);
30 void Fft::forward(const MatDynMem &real_input, ComplexMat &complex_result)
32 assert(real_input.dims == 2);
33 assert(real_input.size().width == m_width);
34 assert(real_input.size().height == m_height);
39 void Fft::forward_window(MatDynMem &patch_feats, ComplexMat &complex_result, MatDynMem &tmp)
41 assert(patch_feats.dims == 3);
43 assert(patch_feats.size[0] == m_num_of_feats);
45 assert(patch_feats.size[0] == m_num_of_feats * m_num_of_scales);
47 assert(patch_feats.size[1] == m_height);
48 assert(patch_feats.size[2] == m_width);
50 assert(tmp.dims == patch_feats.dims);
51 assert(tmp.size[0] == patch_feats.size[0]);
52 assert(tmp.size[1] == patch_feats.size[1]);
53 assert(tmp.size[2] == patch_feats.size[2]);
60 void Fft::inverse(ComplexMat &complex_input, MatDynMem &real_result)
62 assert(real_result.dims == 3);
64 assert(real_result.size[0] == m_num_of_feats);
66 assert(real_result.size[0] == m_num_of_feats * m_num_of_scales);
68 assert(real_result.size[1] == m_height);
69 assert(real_result.size[2] == m_width);