@@ -121,30 +121,56 @@ struct test_image_5x5_kernel_1x9_boundary_extend_reflection
121
121
using channel_t = typename gil::channel_type<pixel_t >::type;
122
122
auto img = fixture::generate_image<image_t >(5 , 5 , fixture::random_value<channel_t >{});
123
123
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),
130
132
-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 ),
132
134
1 , 0 , 0 , img_view.height (), 2 );
133
135
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)));
148
174
}
149
175
static void run ()
150
176
{
0 commit comments