// // Copyright 2019 Miral Shah // // Use, modification and distribution are subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // #include #include #include #define BOOST_TEST_MODULE test_ext_convolve_2d #include "unit_test.hpp" namespace gil = boost::gil; std::uint8_t img[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 255, 0, 255, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; std::uint8_t output[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 28, 0, 28, 28, 28, 0, 0, 28, 56, 56, 56, 56, 56, 28, 0, 0, 28, 56, 85, 85, 85, 56, 28, 0, 0, 0, 56, 85, 141, 85, 56, 0, 0, 0, 28, 56, 85, 85, 85, 56, 28, 0, 0, 28, 56, 56, 56, 56, 56, 28, 0, 0, 28, 28, 28, 0, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; BOOST_AUTO_TEST_SUITE(convolve_2d) BOOST_AUTO_TEST_CASE(convolve_2d_with_normalized_mean_filter) { gil::gray8c_view_t src_view = gil::interleaved_view(9, 9, reinterpret_cast(img), 9); gil::image temp_img(src_view.width(), src_view.height()); typename gil::image::view_t temp_view = view(temp_img); gil::gray8_view_t dst_view(temp_view); std::vector v(9, 1.0f / 9.0f); gil::detail::kernel_2d kernel(v.begin(), v.size(), 1, 1); gil::detail::convolve_2d(src_view, kernel, dst_view); gil::gray8c_view_t out_view = gil::interleaved_view(9, 9, reinterpret_cast(output), 9); BOOST_TEST(gil::equal_pixels(out_view, dst_view)); } BOOST_AUTO_TEST_SUITE_END()