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

Reply via email to