• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright 2019 Miral Shah <miralshah2211@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/gil.hpp>
9 #include <boost/gil/extension/numeric/convolve.hpp>
10 
11 #include <boost/core/lightweight_test.hpp>
12 
13 #include <cstddef>
14 
15 namespace gil = boost::gil;
16 
17 std::uint8_t img[] =
18 {
19     0, 0, 0, 0, 0, 0, 0, 0, 0,
20     0, 0, 0, 0, 0, 0, 0, 0, 0,
21     0, 0, 255, 0, 0, 0, 255, 0, 0,
22     0, 0, 0, 255, 0, 255, 0, 0, 0,
23     0, 0, 0, 0, 255, 0, 0, 0, 0,
24     0, 0, 0, 255, 0, 255, 0, 0, 0,
25     0, 0, 255, 0, 0, 0, 255, 0, 0,
26     0, 0, 0, 0, 0, 0, 0, 0, 0,
27     0, 0, 0, 0, 0, 0, 0, 0, 0
28 };
29 
30 std::uint8_t output[] =
31 {
32     0, 0, 0, 0, 0, 0, 0, 0, 0,
33     0, 28, 28, 28, 0, 28, 28, 28, 0,
34     0, 28, 56, 56, 56, 56, 56, 28, 0,
35     0, 28, 56, 85, 85, 85, 56, 28, 0,
36     0, 0, 56, 85, 141, 85, 56, 0, 0,
37     0, 28, 56, 85, 85, 85, 56, 28, 0,
38     0, 28, 56, 56, 56, 56, 56, 28, 0,
39     0, 28, 28, 28, 0, 28, 28, 28, 0,
40     0, 0, 0, 0, 0, 0, 0, 0, 0
41 };
42 
test_convolve_2d_with_normalized_mean_filter()43 void test_convolve_2d_with_normalized_mean_filter()
44 {
45     gil::gray8c_view_t src_view =
46         gil::interleaved_view(9, 9, reinterpret_cast<const gil::gray8_pixel_t*>(img), 9);
47 
48     gil::image<gil::gray8_pixel_t> temp_img(src_view.width(), src_view.height());
49     typename gil::image<gil::gray8_pixel_t>::view_t temp_view = view(temp_img);
50     gil::gray8_view_t dst_view(temp_view);
51 
52     std::vector<float> v(9, 1.0f / 9.0f);
53     gil::detail::kernel_2d<float> kernel(v.begin(), v.size(), 1, 1);
54 
55     gil::detail::convolve_2d(src_view, kernel, dst_view);
56 
57     gil::gray8c_view_t out_view =
58         gil::interleaved_view(9, 9, reinterpret_cast<const gil::gray8_pixel_t*>(output), 9);
59 
60     BOOST_TEST(gil::equal_pixels(out_view, dst_view));
61 }
62 
main()63 int main()
64 {
65     test_convolve_2d_with_normalized_mean_filter();
66 
67     return ::boost::report_errors();
68 }
69