26 #ifndef MLN_WORLD_BINARY_2D_REDUCE_HH
27 # define MLN_WORLD_BINARY_2D_REDUCE_HH
46 reduce(
const image2d<bool>& input);
49 # ifndef MLN_INCLUDE_ONLY
53 reduce(
const image2d<bool>& input)
55 trace::entering(
"world::binary_2d::reduce");
57 mln_precondition(input.is_valid());
60 min_row = input.domain().pmin().row(),
61 min_col = input.domain().pmin().col(),
62 max_row = input.domain().pmax().row(),
63 max_col = input.domain().pmax().col();
65 image2d<bool> output(input.nrows() / 2,
68 for (
int row = min_row; row <=
max_row; row += 2)
69 for (
int col = min_col; col <=
max_col; col += 2)
72 if (input.at_(row, col) ==
true) ++count;
73 if (input.at_(row, col + 1) ==
true) ++count;
74 if (input.at_(row + 1, col) ==
true) ++count;
75 if (input.at_(row + 1, col + 1) ==
true) ++count;
76 output.at_((row - min_row) / 2,
77 (col - min_col) / 2) = (count >= 2);
80 trace::exiting(
"world::binary_2d::reduce");
85 # endif ! // MLN_INCLUDE_ONLY
95 # endif // ! MLN_WORLD_BINARY_2D_REDUCE_HH