]> rtime.felk.cvut.cz Git - hercules2020/kcf.git/blobdiff - src/fft.cpp
Introduce new Mat types and use them in the code
[hercules2020/kcf.git] / src / fft.cpp
index 2e305f13215ad5f63cf7330589498c34cebe3037..27998861f5c51504c6b6999fd56867f707846ec9 100644 (file)
@@ -27,30 +27,42 @@ void Fft::set_window(const MatDynMem &window)
     (void)window;
 }
 
-void Fft::forward(const MatDynMem &real_input, ComplexMat &complex_result)
+void Fft::forward(const MatScales &real_input, ComplexMat &complex_result)
 {
-    assert(real_input.dims == 2);
-    assert(real_input.size().width == int(m_width));
-    assert(real_input.size().height == int(m_height));
+    assert(real_input.dims == 3);
+    assert(real_input.size[0] == IF_BIG_BATCH(int(m_num_of_scales), 1));
+    assert(real_input.size[1] == int(m_height));
+    assert(real_input.size[2] == int(m_width));
+
     (void)real_input;
     (void)complex_result;
 }
 
-void Fft::forward_window(MatDynMem &patch_feats, ComplexMat &complex_result, MatDynMem &tmp)
+void Fft::forward_window(MatFeats &patch_feats, ComplexMat &complex_result, MatFeats &tmp)
 {
         assert(patch_feats.dims == 3);
-#ifndef BIG_BATCH
         assert(patch_feats.size[0] == int(m_num_of_feats));
-#else
-        assert(patch_feats.size[0] == int(m_num_of_feats * m_num_of_scales));
-#endif
         assert(patch_feats.size[1] == int(m_height));
         assert(patch_feats.size[2] == int(m_width));
 
+        (void)tmp;
+        (void)complex_result;
+        (void)patch_feats;
+}
+
+void Fft::forward_window(MatScaleFeats &patch_feats, ComplexMat &complex_result, MatScaleFeats &tmp)
+{
+        assert(patch_feats.dims == 4);
+        assert(patch_feats.size[0] == IF_BIG_BATCH(int(m_num_of_scales), 1));
+        assert(patch_feats.size[1] == int(m_num_of_feats));
+        assert(patch_feats.size[2] == int(m_height));
+        assert(patch_feats.size[3] == int(m_width));
+
         assert(tmp.dims == patch_feats.dims);
         assert(tmp.size[0] == patch_feats.size[0]);
         assert(tmp.size[1] == patch_feats.size[1]);
         assert(tmp.size[2] == patch_feats.size[2]);
+        assert(tmp.size[3] == patch_feats.size[3]);
 
         (void)patch_feats;
         (void)complex_result;
@@ -59,14 +71,11 @@ void Fft::forward_window(MatDynMem &patch_feats, ComplexMat &complex_result, Mat
 
 void Fft::inverse(ComplexMat &complex_input, MatDynMem &real_result)
 {
-    assert(real_result.dims == 3);
-#ifndef BIG_BATCH
-    assert(real_result.size[0] == int(m_num_of_feats));
-#else
-    assert(real_result.size[0] == int(m_num_of_feats * m_num_of_scales));
-#endif
-    assert(real_result.size[1] == int(m_height));
-    assert(real_result.size[2] == int(m_width));
+    assert(real_result.dims == 4);
+    assert(real_result.size[0] == IF_BIG_BATCH(int(m_num_of_scales), 1));
+    assert(real_result.size[1] == int(m_num_of_feats));
+    assert(real_result.size[2] == int(m_height));
+    assert(real_result.size[3] == int(m_width));
 
     (void)complex_input;
     (void)real_result;