Получите доминирующие цвета изображения, отбрасывая фон - PullRequest
9 голосов
/ 14 сентября 2009

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

Я знаю, что могу создать массив цветов и сколько их появляется на изображении, но мне нужен способ определить, что является фоном и что является передним планом, и помнить только второе (передний план) при чтении доминирующие цвета.

Проблема очень сложная, особенно для градиентных фонов или фонов с узорами (непрозрачными)

Ответы [ 4 ]

8 голосов
/ 14 сентября 2009

Изоляция переднего плана от фона выходит за рамки этого конкретного ответа, но ...

Я обнаружил, что применение пиксельного фильтра к изображению позволит получить действительно хороший набор «средних» цветов.

До

http://img12.imageshack.us/img12/825/pixelate1a.jpg

* После 1013 *

http://img12.imageshack.us/img12/8127/pixelate2.jpg

Я иногда использую этот подход, чтобы получить палитру цветов с определенным настроением. Сначала я нахожу фотографию с общими тонами, которые мне нужны, pixelate, а затем образец из полученного изображения.

(спасибо этой странице за изображения, найденные с помощью поиска картинок Google)

6 голосов
/ 25 июля 2011

Сводка цветов - довольно приятное место для информации по этому вопросу, не говоря уже об их, казалось бы, бесплатном XML Web API, который будет генерировать описательную статистику цвета для изображения по вашему выбору, сообщая о следующем отформатированном с образцами в HTML или в формате XML ...

  • каков средний цветовой оттенок, насыщенность и значение в моем изображении?
  • Какой цвет RGB наиболее характерен для изображения?
  • как выглядят гистограммы RGB и HSV?
  • каково описание воспринимаемого человеком цвета (например, темно-синий)?

Цель этой утилиты - генерировать метаданные, которые суммируют цветовые характеристики изображения для включения в базу данных изображений, такие как Flickr. В частности, этот инструмент используется для генерации метаданные для группы цветовых полей Flickr.

enter image description here

По моему опыту ... этот инструмент по-прежнему пропускает "читаемый человеком" / очевидный "основной" цвет, МНОГО времени. Глупые машины!

5 голосов
/ 14 сентября 2009

Я бы сказал, что эта проблема ближе к «невозможной», чем «очень сложной». Единственный подход к этому, который я могу придумать, состоит в том, чтобы сделать предположение, что фон изображения, скорее всего, будет состоять из сплошных блоков одинаковых цветов, тогда как передний план, вероятно, будет состоять из более мелких блоков разнородных цветов.

Если это предположение в целом верно, то вы можете сканировать все пиксели изображения и веса в соответствии с тем, насколько они похожи или отличаются от соседних пикселей. Другими словами, если бы все соседи пикселя (возможно, в пределах некоторого произвольного радиуса) были одинаковыми цветами, вы бы не включили этот пиксель в общую оценку. Если у соседей, как правило, очень разные цвета, вы бы сильно утяжелили пиксель, возможно, пропорционально степени различия.

Это может не сработать идеально, но это определенно, по крайней мере, приведет к исключению больших полос похожих цветов.

1 голос
/ 14 сентября 2009

Поскольку мои знания об алгоритмах обработки изображений расширяются, нет определенного способа получить «передний план»; возможно получить только границы между объектами . Возможно, вам придется обойтись со средним или предложенным вами методом подсчета массива. В этом случае вы захотите дать цветам с более высокой насыщенностью более высокий «балл», поскольку они намного более заметны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...