MultiChannelImageTTest.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include "MultiChannelImageTTest.h"
  2. #include <string>
  3. #include <core/image/ippwrapper.h>
  4. #include <core/image/MultiChannelImageT.h>
  5. #include "core/basics/cppunitex.h"
  6. using namespace std;
  7. using namespace NICE;
  8. CPPUNIT_TEST_SUITE_REGISTRATION ( MultiChannelImageTTest );
  9. void MultiChannelImageTTest::setUp() {
  10. }
  11. void MultiChannelImageTTest::tearDown() {
  12. }
  13. void MultiChannelImageTTest::test() {
  14. int width = 5;
  15. int height = 10;
  16. MultiChannelImageT<double> img(width, height, 1);
  17. MultiChannelImageT<int> iImg(width, height, 2);
  18. for (int y = 0; y < height; y++)
  19. {
  20. for (int x = 0; x < width; x++)
  21. {
  22. iImg(x, y, 0) = x + y;
  23. iImg(x, y, 1) = x * y;
  24. img(x, y, 0) = (double)x / ((double)y + 1.0);
  25. }
  26. }
  27. for (int y = 0; y < height; y++)
  28. {
  29. for (int x = 0; x < width; x++)
  30. {
  31. CPPUNIT_ASSERT_EQUAL(img(x, y, 0), (double)x / ((double)y + 1.0));
  32. CPPUNIT_ASSERT_EQUAL(iImg(x, y, 0), x + y);
  33. CPPUNIT_ASSERT_EQUAL(iImg(x, y, 1), x*y);
  34. }
  35. }
  36. img.addChannel(iImg);
  37. CPPUNIT_ASSERT_EQUAL(img.channels(), 3);
  38. CPPUNIT_ASSERT_EQUAL(img.width(), width);
  39. CPPUNIT_ASSERT_EQUAL(img.height(), height);
  40. for (int y = 0; y < height; y++)
  41. {
  42. for (int x = 0; x < width; x++)
  43. {
  44. CPPUNIT_ASSERT_EQUAL(img(x, y, 0), (double)x / ((double)y + 1.0));
  45. CPPUNIT_ASSERT_EQUAL(img(x, y, 1), (double)(x + y));
  46. CPPUNIT_ASSERT_EQUAL(img(x, y, 2), (double)(x*y));
  47. }
  48. }
  49. MultiChannelImageT<double> imgCopy = img;
  50. CPPUNIT_ASSERT_EQUAL(img.channels(), imgCopy.channels());
  51. CPPUNIT_ASSERT_EQUAL(img.width(), imgCopy.width());
  52. CPPUNIT_ASSERT_EQUAL(img.height(), imgCopy.height());
  53. for (int c = 0; c < imgCopy.channels(); c++)
  54. {
  55. for (int y = 0; y < height; y++)
  56. {
  57. for (int x = 0; x < width; x++)
  58. {
  59. CPPUNIT_ASSERT_EQUAL(img(x, y, c), imgCopy(x, y, c));
  60. }
  61. }
  62. }
  63. MultiChannelImageT<double> imgInt(width,height,2);
  64. for (int y = 0; y < height; y++)
  65. {
  66. for (int x = 0; x < width; x++)
  67. {
  68. imgInt(x,y,0) = x;
  69. imgInt(x,y,1) = x;
  70. }
  71. }
  72. imgInt.calcIntegral(1);
  73. CPPUNIT_ASSERT_EQUAL(imgInt(0,0,0), imgInt.getIntegralValue(0,0,0,0,1));
  74. CPPUNIT_ASSERT_EQUAL(imgInt(2,2,0), imgInt.getIntegralValue(2,2,2,2,1));
  75. CPPUNIT_ASSERT_EQUAL(1.0, imgInt.getIntegralValue(0,0,2,2,1));
  76. }