2012-03-13 3 views
7

У меня много изображений (десятки тысяч) довольно больших изображений в формате JPG. Каждый из них представляет собой изображение индексной карты. Большинство из них белые, но некоторые имеют стандартные цвета индексной карты (these colors).Как автоматически классифицировать изображения по доминирующему цвету?

Цвета соответствуют атрибутам данных, поэтому я хотел бы программно классифицировать эти карты по цвету. Я знаю, что можно извлечь доминирующий цвет из изображений в веб-браузере, используя элемент canvas и такой алгоритм, как color thief, и он работает - он дает мне значение rgb, которого достаточно, чтобы выложить карты.

Но я не вижу, как я мог бы запускать такое через веб-браузер на большом количестве изображений.

Мне интересно, может ли кто-нибудь порекомендовать инструмент командной строки, возможно, модуль Python или Ruby, который мог бы сделать что-то подобное.

ответ

3

Это, похоже, сильно перекрывается с this question.

Если бы я был в вашей ситуации, я бы попробовал пару вещей. Во-первых, вы можете получить любую из нескольких библиотек Python, которые могут работать: OpenCV, Mahotas, PIL, или scikits.image, возможно, все это возможно, так как вам просто нужно вычеркнуть средние значения RGB.

Напишите сценарий для загрузки каждого изображения и добавления его среднего значения RGB в список. Затем вы можете использовать встроенные методы от scikits.learn для выполнения кластеризации с помощью средств или с помощью k-средних в этом большом списке цветов. Поскольку вы, вероятно, знаете, сколько разных цветов есть, k-mean - хороший выбор. В качестве альтернативы, если вы уже знаете значения RGB стандартных цветов, то для каждого загружаемого изображения просто вычислите среднее значение RGB, а затем «классифицируйте» это изображение в соответствии с тем, какой вектор цветного RGB-изображения наиболее близок.

Смежные вопросы