PImage img; int mean = 255/2; void setup() { img = loadImage("lincoln.png"); size(300, 300); update(); } void draw() { } void keyPressed() { if (key == 'x') { mean += 5; } if (key == 'y') { mean -= 5; } if (mean > 255) { mean = 255; } if (mean < 0) { mean = 0; } update(); } void update() { background(255); image(img, 0, 0); fill(0); text("Original", img.width/2-5, img.height + 20); text("BW", img.width + img.width/2-5, img.height + 20); text("threshold: " + mean + " (press y/x to change)", 10, img.height + 40); for (int x = 0; x < img.width; x++) { for (int y = 0; y < img.height; y++) { color col = get(x, y); int grey = (int)((col >> 16 & 0xFF) * 0.212671 + (255 - col >> 8 & 0xFF) * 0.715160 + (255 - col & 0xFF) * 0.072169); //int bwCol = grey > col ? 0 : 255) set(x + img.width, y, color(grey > mean ? 0 : 255)); } } }