]> rtime.felk.cvut.cz Git - hercules2020/kcf.git/blobdiff - src/fft.cpp
Add more assertions about FFT arguments
[hercules2020/kcf.git] / src / fft.cpp
index 76e1fab120c7cbc10044dc5316ef8ebe4213a76e..1fe90d05c4bd0273151ebad1030237375cd1bab6 100644 (file)
@@ -1,6 +1,7 @@
 
 #include "fft.h"
 #include <cassert>
+#include "debug.h"
 
 Fft::~Fft()
 {
@@ -29,6 +30,8 @@ void Fft::set_window(const MatDynMem &window)
 
 void Fft::forward(const MatScales &real_input, ComplexMat &complex_result)
 {
+    TRACE("");
+    DEBUG_PRINT(real_input);
     assert(real_input.dims == 3);
 #ifdef BIG_BATCH
     assert(real_input.size[0] == 1 || real_input.size[0] == int(m_num_of_scales));
@@ -38,6 +41,10 @@ void Fft::forward(const MatScales &real_input, ComplexMat &complex_result)
     assert(real_input.size[1] == int(m_height));
     assert(real_input.size[2] == int(m_width));
 
+    assert(int(complex_result.cols) == freq_size(cv::Size(m_width, m_height)).width);
+    assert(int(complex_result.rows) == freq_size(cv::Size(m_width, m_height)).height);
+    assert(complex_result.channels() == uint(real_input.size[0]));
+
     (void)real_input;
     (void)complex_result;
 }
@@ -60,6 +67,10 @@ void Fft::forward_window(MatScaleFeats &patch_feats, ComplexMat &complex_result,
         assert(tmp.size[2] == patch_feats.size[2]);
         assert(tmp.size[3] == patch_feats.size[3]);
 
+        assert(int(complex_result.cols) == freq_size(cv::Size(m_width, m_height)).width);
+        assert(int(complex_result.rows) == freq_size(cv::Size(m_width, m_height)).height);
+        assert(complex_result.channels() == uint(patch_feats.size[0] * patch_feats.size[1]));
+
         (void)patch_feats;
         (void)complex_result;
         (void)tmp;
@@ -67,11 +78,21 @@ void Fft::forward_window(MatScaleFeats &patch_feats, ComplexMat &complex_result,
 
 void Fft::inverse(ComplexMat &complex_input, MatScales &real_result)
 {
+    TRACE("");
+    DEBUG_PRINT(complex_input);
     assert(real_result.dims == 3);
-    assert(real_result.size[0] == IF_BIG_BATCH(int(m_num_of_scales), 1));
+#ifdef BIG_BATCH
+        assert(real_result.size[0] == 1 || real_result.size[0] ==  int(m_num_of_scales));
+#else
+        assert(real_result.size[0] == 1);
+#endif
     assert(real_result.size[1] == int(m_height));
     assert(real_result.size[2] == int(m_width));
 
+    assert(int(complex_input.cols) == freq_size(cv::Size(m_width, m_height)).width);
+    assert(int(complex_input.rows) == freq_size(cv::Size(m_width, m_height)).height);
+    assert(complex_input.channels() == uint(real_result.size[0]));
+
     (void)complex_input;
     (void)real_result;
 }