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 == int(m_width));
26 assert(window.size().height == int(m_height));
30 void Fft::forward(const MatScales &real_input, ComplexMat &complex_result)
32 assert(real_input.dims == 3);
33 assert(real_input.size[0] == IF_BIG_BATCH(int(m_num_of_scales), 1));
34 assert(real_input.size[1] == int(m_height));
35 assert(real_input.size[2] == int(m_width));
41 void Fft::forward_window(MatFeats &patch_feats, ComplexMat &complex_result, MatFeats &tmp)
43 assert(patch_feats.dims == 3);
44 assert(patch_feats.size[0] == int(m_num_of_feats));
45 assert(patch_feats.size[1] == int(m_height));
46 assert(patch_feats.size[2] == int(m_width));
53 void Fft::forward_window(MatScaleFeats &patch_feats, ComplexMat &complex_result, MatScaleFeats &tmp)
55 assert(patch_feats.dims == 4);
56 assert(patch_feats.size[0] == IF_BIG_BATCH(int(m_num_of_scales), 1));
57 assert(patch_feats.size[1] == int(m_num_of_feats));
58 assert(patch_feats.size[2] == int(m_height));
59 assert(patch_feats.size[3] == int(m_width));
61 assert(tmp.dims == patch_feats.dims);
62 assert(tmp.size[0] == patch_feats.size[0]);
63 assert(tmp.size[1] == patch_feats.size[1]);
64 assert(tmp.size[2] == patch_feats.size[2]);
65 assert(tmp.size[3] == patch_feats.size[3]);
72 void Fft::inverse(ComplexMat &complex_input, MatDynMem &real_result)
74 assert(real_result.dims == 4);
75 assert(real_result.size[0] == IF_BIG_BATCH(int(m_num_of_scales), 1));
76 assert(real_result.size[1] == int(m_num_of_feats));
77 assert(real_result.size[2] == int(m_height));
78 assert(real_result.size[3] == int(m_width));