@@ -121,30 +121,56 @@ struct test_image_5x5_kernel_1x9_boundary_extend_reflection
121121 using channel_t = typename gil::channel_type<pixel_t >::type;
122122 auto img = fixture::generate_image<image_t >(5 , 5 , fixture::random_value<channel_t >{});
123123 auto img_view = gil::view (img);
124- image_t img_out (img), img_expected_row (img);
125- unsigned int kernel_shift_offset = 2 ;
126-
127- fixture::row_conv1D_offset_img_generator (img_view, gil::view (img_expected_row),
128- kernel_shift_offset);
129- fixture::row_conv1D_offset_img_generator (img_view, gil::view (img_expected_row),
124+ image_t img_out_up_left_offset (img), img_expected_row_up_offset (img);
125+ image_t img_expected_col_left_offset (img), img_out_down_right_offset (img);
126+ image_t img_expected_row_down_offset (img), img_expected_col_right_offset (img);
127+ int kernel_shift_up_left_offset = 2 , kernel_shift_down_right_offset = -2 ;
128+
129+ fixture::row_conv1D_offset_img_generator (img_view, gil::view (img_expected_row_up_offset),
130+ kernel_shift_up_left_offset);
131+ fixture::row_conv1D_offset_img_generator (img_view, gil::view (img_expected_row_up_offset),
130132 -1 , 0 , 1 , img_view.height (), 1 );
131- fixture::row_conv1D_offset_img_generator (img_view, gil::view (img_expected_row ),
133+ fixture::row_conv1D_offset_img_generator (img_view, gil::view (img_expected_row_up_offset ),
132134 1 , 0 , 0 , img_view.height (), 2 );
133135
134- image_t img_expected_col (img);
135-
136- fixture::col_conv1D_offset_img_generator (gil::view (img_expected_row),
137- gil::view (img_expected_col), kernel_shift_offset);
138- fixture::col_conv1D_offset_img_generator (gil::view (img_expected_row),
139- gil::view (img_expected_col), -1 , 1 , 0 , 1 , img_view.width ());
140- fixture::col_conv1D_offset_img_generator (gil::view (img_expected_row),
141- gil::view (img_expected_col), 1 , 0 , 0 , 2 , img_view.width ());
142-
143- auto const kernel = fixture::create_kernel<channel_t >({0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 });
144- gil::detail::convolve_1d<pixel_t >(gil::const_view (img), kernel, gil::view (img_out),
145- gil::boundary_option::extend_reflection);
146-
147- BOOST_TEST (gil::equal_pixels (gil::const_view (img_out), gil::const_view (img_expected_col)));
136+ fixture::col_conv1D_offset_img_generator (gil::view (img_expected_row_up_offset),
137+ gil::view (img_expected_col_left_offset), kernel_shift_up_left_offset);
138+ fixture::col_conv1D_offset_img_generator (gil::view (img_expected_row_up_offset),
139+ gil::view (img_expected_col_left_offset), -1 , 1 , 0 , 1 , img_view.width ());
140+ fixture::col_conv1D_offset_img_generator (gil::view (img_expected_row_up_offset),
141+ gil::view (img_expected_col_left_offset), 1 , 0 , 0 , 2 , img_view.width ());
142+
143+ fixture::row_conv1D_offset_img_generator (img_view, gil::view (img_expected_row_down_offset),
144+ kernel_shift_down_right_offset, 0 , 2 , img_view.height (), img_view.width ());
145+ fixture::row_conv1D_offset_img_generator (img_view, gil::view (img_expected_row_down_offset),
146+ -1 , 0 , img_view.width () - 1 , img_view.height (), img_view.width ());
147+ fixture::row_conv1D_offset_img_generator (img_view, gil::view (img_expected_row_down_offset),
148+ 1 , 0 , img_view.width () - 2 , img_view.height (), img_view.width ());
149+
150+ fixture::col_conv1D_offset_img_generator (gil::view (img_expected_row_down_offset),
151+ gil::view (img_expected_col_right_offset), kernel_shift_down_right_offset, 2 , 0 ,
152+ img_view.height (), img_view.width ());
153+ fixture::col_conv1D_offset_img_generator (gil::view (img_expected_row_down_offset),
154+ gil::view (img_expected_col_right_offset), -1 , img_view.height () - 1 , 0 ,
155+ img_view.height (), img_view.width ());
156+ fixture::col_conv1D_offset_img_generator (gil::view (img_expected_row_down_offset),
157+ gil::view (img_expected_col_right_offset), 1 , img_view.height () - 2 , 0 ,
158+ img_view.height (), img_view.width ());
159+
160+ auto const kernel_up_left_offset = fixture::create_kernel<channel_t >(
161+ {0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 });
162+ gil::detail::convolve_1d<pixel_t >(gil::const_view (img), kernel_up_left_offset,
163+ gil::view (img_out_up_left_offset), gil::boundary_option::extend_reflection);
164+
165+ auto const kernel_down_right_offset = fixture::create_kernel<channel_t >(
166+ {0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 });
167+ gil::detail::convolve_1d<pixel_t >(gil::const_view (img), kernel_down_right_offset,
168+ gil::view (img_out_down_right_offset), gil::boundary_option::extend_reflection);
169+
170+ BOOST_TEST (gil::equal_pixels (gil::const_view (img_out_up_left_offset),
171+ gil::const_view (img_expected_col_left_offset)));
172+ BOOST_TEST (gil::equal_pixels (gil::const_view (img_out_down_right_offset),
173+ gil::const_view (img_expected_col_right_offset)));
148174 }
149175 static void run ()
150176 {
0 commit comments