Created by Max Novakovic. See blog post for more information.
		PImage five; // The five image
		/* @pjs preload="img/five.png"; */
		int circle, colour; // Size of circle and which colour
		color currentcolour; // Holds what the current colour is
		/* Colours for the inner and outer shapes, the colours are
		taken from the first plate (showing a 74) displayed on 
		http://en.wikipedia.org/wiki/Ishihara_color_test */
		color[] inner = { color(163,170,101), color(134,145,69), color(197,192,110) }; // Green
		color[] outer = { color(191,116,63), color(238,152,104), color(223,148,99) }; // Orange

		void setup() {
		  // Set up the sketch
		  size(360,360);
		  background(255,255,255);
		  smooth();      
		  noStroke();

		  five = loadImage("img/five.png"); // Load the image

		  drawCircles(); // Start drawing the circles
		}

		// Function to draw circles on black/white areas
		void drawCircles() {

		  // Loop through every pixel in 10 pixel intervals
		  for(int x=0; x<width; x+=10) {
				for(int y=0; y<height; y+=10) {

		      // Get the current color at x,y
		      currentcolour = five.get(x,y);

		      // Generate a random size and colour for the circle
		      circle = int(random(7,10));
		      colour = int(random(0,3));

		      // If the color is white
		      if(currentcolour==color(255, 255, 255)) {
		        fill(inner[colour]); // Set the fill to one of the defined inner colours
		        ellipse(x,y,circle,circle); // Draw the circle
		      // If the color is black
		      }else if(currentcolour==color(0, 0, 0)) {
		        fill(outer[colour]); // Set the fill to one of the defined outer colours
		        ellipse(x,y,circle,circle);  // Draw the circle
		      }

		  	} 
			}  

		}