float[][] kernel = { { -2,0,.5 }, { 0,0,-.2 }, {-1,0,4 }}; size(533,400); PImage landscape = loadImage("landscape.png"); landscape.loadPixels(); PImage edge = createImage(landscape.width, landscape.height, RGB); for (int x = 1; x < landscape.width-1; x++) { for (int y = 1; y < landscape.height-1; y++) { float sum = 0; for (int kx = -1; kx <= 1; kx++) { for (int ky = -1; ky <= 1; ky++) { int pos = (y + ky)*width + (x + kx); float val = red(landscape.pixels[pos]); sum += kernel[ky+1][kx+1] * val; } } edge.pixels[y*landscape.width + x] = color(sum); } } edge.updatePixels(); image(edge, 0, 0); //background(255);