30 static void convolve_even(image<float> *src, image<float> *dst,
31 std::vector<float> &mask) {
32 int width = src->width();
33 int height = src->height();
34 int len = mask.size();
36 for (
int y = 0; y < height; y++) {
37 for (
int x = 0; x < width; x++) {
38 float sum = mask[0] * imRef(src, x, y);
39 for (
int i = 1; i < len; i++) {
41 (imRef(src, std::max(x-i,0), y) +
42 imRef(src, std::min(x+i, width-1), y));
44 imRef(dst, y, x) = sum;
50 static void convolve_odd(image<float> *src, image<float> *dst,
51 std::vector<float> &mask) {
52 int width = src->width();
53 int height = src->height();
54 int len = mask.size();
56 for (
int y = 0; y < height; y++) {
57 for (
int x = 0; x < width; x++) {
58 float sum = mask[0] * imRef(src, x, y);
59 for (
int i = 1; i < len; i++) {
61 (imRef(src, std::max(x-i,0), y) -
62 imRef(src, std::min(x+i, width-1), y));
64 imRef(dst, y, x) = sum;