| 68 | |
| 69 | template <typename F> |
| 70 | void SumFilter(const BitMatrix& in, BitMatrix& out, F func) |
| 71 | { |
| 72 | const auto* in0 = in.row(0).begin(); |
| 73 | const auto* in1 = in.row(1).begin(); |
| 74 | const auto* in2 = in.row(2).begin(); |
| 75 | |
| 76 | for (auto *out1 = out.row(1).begin() + 1, *end = out.row(out.height() - 1).begin() - 1; out1 != end; ++in0, ++in1, ++in2, ++out1) { |
| 77 | int sum = 0; |
| 78 | for (int j = 0; j < 3; ++j) |
| 79 | sum += in0[j] + in1[j] + in2[j]; |
| 80 | |
| 81 | *out1 = func(sum); |
| 82 | } |
| 83 | } |
| 84 | |
| 85 | void BinaryBitmap::close() |
| 86 | { |