harris.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. //
  2. // Copyright 2019 Olzhas Zhumabek <anonymous.from.applecity@gmail.com>
  3. //
  4. // Use, modification and distribution are subject to the Boost Software License,
  5. // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  6. // http://www.boost.org/LICENSE_1_0.txt)
  7. //
  8. #include <boost/core/lightweight_test.hpp>
  9. #include <boost/gil/image.hpp>
  10. #include <boost/gil/image_view.hpp>
  11. #include <boost/gil/image_processing/numeric.hpp>
  12. #include <boost/gil/image_processing/harris.hpp>
  13. namespace gil = boost::gil;
  14. bool are_equal(gil::gray32f_view_t expected, gil::gray32f_view_t actual) {
  15. if (expected.dimensions() != actual.dimensions())
  16. return false;
  17. for (long int y = 0; y < expected.height(); ++y)
  18. {
  19. for (long int x = 0; x < expected.width(); ++x)
  20. {
  21. if (expected(x, y) != actual(x, y))
  22. {
  23. return false;
  24. }
  25. }
  26. }
  27. return true;
  28. }
  29. void test_blank_image()
  30. {
  31. const gil::point_t dimensions(20, 20);
  32. gil::gray16s_image_t dx(dimensions, gil::gray16s_pixel_t(0), 0);
  33. gil::gray16s_image_t dy(dimensions, gil::gray16s_pixel_t(0), 0);
  34. gil::gray32f_image_t m11(dimensions);
  35. gil::gray32f_image_t m12_21(dimensions);
  36. gil::gray32f_image_t m22(dimensions);
  37. gil::gray32f_image_t expected(dimensions, gil::gray32f_pixel_t(0), 0);
  38. gil::compute_tensor_entries(
  39. gil::view(dx),
  40. gil::view(dy),
  41. gil::view(m11),
  42. gil::view(m12_21),
  43. gil::view(m22)
  44. );
  45. BOOST_TEST(are_equal(gil::view(expected), gil::view(m11)));
  46. BOOST_TEST(are_equal(gil::view(expected), gil::view(m12_21)));
  47. BOOST_TEST(are_equal(gil::view(expected), gil::view(m22)));
  48. gil::gray32f_image_t harris_response(dimensions, gil::gray32f_pixel_t(0), 0);
  49. auto unnormalized_mean = gil::generate_unnormalized_mean(5);
  50. gil::compute_harris_responses(
  51. gil::view(m11),
  52. gil::view(m12_21),
  53. gil::view(m22),
  54. unnormalized_mean,
  55. 0.04f,
  56. gil::view(harris_response)
  57. );
  58. BOOST_TEST(are_equal(gil::view(expected), gil::view(harris_response)));
  59. }
  60. int main(int argc, char* argv[])
  61. {
  62. test_blank_image();
  63. return boost::report_errors();
  64. }