/* VORONOI DIAGRAM Jeff Thompson January 2012 http://en.wikipedia.org/wiki/Voronoi_cell http://www.quora.com/Google-Chrome/How-does-Chrome-pick-the-color-for-the-stripes-on-the-Most-visited-page-thumbnails www.jeffreythompson.org */ int similarity = 50; String filename = "StarryNight.jpg"; boolean saveIt = true; PImage b; void setup() { b = loadImage(filename); size(b.width, b.height); image(b, 0, 0); loadPixels(); for (int i=0; i= 0) { // no wrapping! color R = pixels[i-1]; if (testColor(R, pxColor)) { pixels[i-1] = pxColor; } } if (i-width > 0) { color U = pixels[i-width]; if (testColor(U, pxColor)) { pixels[i-width] = pxColor; } } if (i+width < pixels.length) { color D = pixels[i+width]; if (testColor(D, pxColor)) { pixels[i+width] = pxColor; } } } updatePixels(); if (saveIt) { save(similarity + "pxThres-" + filename); } } boolean testColor(color neighbor, color px) { float nR = red(neighbor); float nG = green(neighbor); float nB = blue(neighbor); float pxR = red(px); float pxG = green(px); float pxB = blue(px); if (abs(nR-pxR) <= similarity && abs(nG-pxG) <= similarity && abs(nB-pxB) <= similarity) { return true; } else { return false; } }