Я бы использовал библиотеку изображений Python. Это фрагмент кода, который вычисляет количество белых / не белых пикселей на изображении.
import sys
from PIL import Image
im = Image.open(sys.argv[1])
white = 0
black = 0
for i in im.getdata():
if i == (255,255,255):
white += 1
else:
# we assume black everything that is not white:
black += 1
print im.size[0],im.size[1],white,black
В вашем случае, я бы сделал словарь, чтобы каждая тройка rgb сравнивалась со счетчиком, поэтому я бы переделал программу следующим образом (не проверено)
import sys
from PIL import Image
im = Image.open(sys.argv[1])
count= {}
for i in im.getdata():
if not count.has_key(i):
count[i] = 0
count[i] += 1
Теперь вы можете проверить тот, у кого наибольшее количество очков, и получить наиболее часто используемую тройку RGB. Конечно, если вы хотите проверить также вицинальные цвета, вам придется преобразовать в HSV и проверить расстояния между различными точками HSV, а затем решить, какое расстояние слишком много. Точки, достаточно близко расположенные в пространстве ВПГ (и, в частности, компонент оттенка), скорее всего, одного цвета и, следовательно, могут суммироваться вместе.