2009/4/25 Eduardo Ismael <ei...@hotmail.com>: > I scanned a color page from a book and I would like to remove specific > colors from it.
The best solution is to calculate a colour difference metric. This is rather like the 'magic wand' in most paint programs. RGB isn't the best colour space for this, but it would sort-of work. The idea is: imagine that your three colour values are coordinates in a cube. You want to find pixels whose value is close to the position of a point in the blue corner of this cube, in other words, something like: for pixel in image: if distance (image[pixel], blue) < 10: image[pixel] = white The simplest distance function is just pythagoras, ie. def distance (a, b): vector = a - b return (vector.red ** 2 + vector.green ** 2 + vector.blue ** 2) ** 0.5 You can do this efficiently by processing at the image level rather than by looping over pixels (always incredibly slow). So: calculate an image where each pixel is the distance function for that point, then threshold and use that mask to set sections of your original image to white. John _______________________________________________ Image-SIG maillist - Image-SIG@python.org http://mail.python.org/mailman/listinfo/image-sig