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

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

Любые идеи высоко ценится!

1
dmkc 24 Июн 2010 в 06:02

2 ответа

Лучший ответ

Как насчет этого?

  1. Размытие изображения с помощью какого-нибудь быстрого алгоритма размытия. (Искать размытие стека или размытие рамки)
  2. Вычислить стандартное отклонение пикселей в области RGB один раз для каждого цвета.
  3. Откажитесь от изображения, если стандартное отклонение превышает определенный порог.
1
Abix 24 Июн 2010 в 02:26

На мой взгляд, гистограмма не будет идеальным инструментом для этой задачи, поскольку она обычно смотрит отдельно на каждый цветовой канал, и вы потеряете такую информацию. Так, например, если вы получаете пики на 255 красных, зеленых и синих, это может означать либо то, что на изображении много красного (0xFF0000), зеленого (0x00FF00) и синего (0x0000FF), либо все изображение просто полностью белое ( 0xFFFFFF).

Я рекомендую вам использовать алгоритм квантования цвета на вашем изображении: http://en.wikipedia.org/wiki / Color_quantization, и он вернет вам 16 самых доминирующих цветов. Затем можно преобразовать их в HSL и проверить значения с высокой насыщенностью.

0
Quasimondo 28 Июн 2010 в 09:27