TestFourier.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "TestFourier.h"
  2. #include <string>
  3. #include "core/basics/cppunitex.h"
  4. #include "core/image/ImageT.h"
  5. #include "core/image/ColorImageT.h"
  6. #include "core/image/Fourier.h"
  7. #include "core/image/ImageOperators.h"
  8. using namespace std;
  9. using namespace NICE;
  10. CPPUNIT_TEST_SUITE_REGISTRATION(TestFourier);
  11. void TestFourier::setUp()
  12. {
  13. }
  14. void TestFourier::tearDown()
  15. {
  16. }
  17. void TestFourier::testFourierTransform()
  18. {
  19. #ifdef NICE_USELIB_ICE
  20. const int testsizex = 99;
  21. const int testsizey = 89;
  22. const float testvalue = 100.0;
  23. FloatImage space_real(testsizex, testsizey), space_imag(testsizex, testsizey), freq_real, freq_imag, space_real_compare, space_imag_compare;
  24. space_real.set(testvalue);
  25. space_imag.set(0.0);
  26. Fourier::FourierTransform(space_real, space_imag, freq_real, freq_imag);
  27. Fourier::FourierTransformInverse(freq_real, freq_imag, space_real_compare, space_imag_compare);
  28. CPPUNIT_ASSERT_EQUAL(testsizex, space_real_compare.width());
  29. CPPUNIT_ASSERT_EQUAL(testsizey, space_real_compare.height());
  30. CPPUNIT_ASSERT_EQUAL(testsizex, space_imag_compare.width());
  31. CPPUNIT_ASSERT_EQUAL(testsizey, space_imag_compare.height());
  32. FloatImage diff;
  33. diff = space_real - space_real_compare;
  34. CPPUNIT_ASSERT_EQUAL(testsizex, diff.width());
  35. CPPUNIT_ASSERT_EQUAL(testsizey, diff.height());
  36. CPPUNIT_ASSERT_DOUBLES_EQUAL_NOT_NAN(0.0, diff.max(), 1e-10);
  37. CPPUNIT_ASSERT_DOUBLES_EQUAL_NOT_NAN(0.0, diff.min(), 1e-10);
  38. CPPUNIT_ASSERT_DOUBLES_EQUAL_NOT_NAN(0.0, freq_imag.max(), 1e-10);
  39. CPPUNIT_ASSERT_DOUBLES_EQUAL_NOT_NAN(0.0, freq_imag.min(), 1e-10);
  40. CPPUNIT_ASSERT_DOUBLES_EQUAL_NOT_NAN(sqrt(testsizex*testsizey)*testvalue, freq_real.getPixel(testsizex / 2, testsizey / 2), 1e-3);
  41. freq_real.setPixel(testsizex / 2, testsizey / 2,0);
  42. CPPUNIT_ASSERT_DOUBLES_EQUAL_NOT_NAN(0.0, freq_real.max(), 1e-10);
  43. CPPUNIT_ASSERT_DOUBLES_EQUAL_NOT_NAN(0.0, freq_real.min(), 1e-10);
  44. #endif
  45. }