У меня есть довольно большое количество фотографий и карты цветов RGB (скажем, приблизительно 100 цветов). Как может я группировать изображения цветом и получать что-то как следующее: http://labs.ideeinc.com/multicolr?
Моя текущая идея - это: Используя ImageMagick, сделайте это для каждой фотографии:
Вы знаете какой-либо лучше и более эффективный способ сделать это? Мой предпочтительный язык является PHP, так как вся тяжелая обработка будет сделана ImageMagick, и базой данных является PostgreSQL.Заранее спасибо!
Я заметил, что вы уже догадались, как получить наиболее подходящие цвета из изображения. Не меняйте размер изображений слишком сильно, потому что гистограмма может выглядеть иначе.
База данных может выглядеть примерно так:
таблица изображений:
image_id | image_file
таблица цветов:
color_id | color_rgb
таблица цветов_изображения:
image_id | color_id | color_percent
столбец color_percent будет использоваться для группировки / where clauses
Получение изображений:
select
image_id
sum(color_percent)/count(color_percent) as relevance
from
image_color
where
color_id IN (175, 243) # the colors you want to involve in this search
and color_percent > 10 # this will drop results with lower significance
group by
image_id
order by
relevance
Цвета по сути являются трехмерными векторами (независимо от того, представлены ли они как HSV, RGB, CMY [K]). К сожалению, реляционная база данных в основном не очень хороша для работы более чем в одном измерении.
Если вы уменьшите изображение до одного «среднего» цвета, решение станет немного проще: Тривиальный анализ подразумевает, что вам нужно будет сравнить новое изображение со всеми существующими изображениями, чтобы определить уровень сходства. Однако лучшим подходом было бы оцифровать вектор, чтобы найти аналогичные значения в базе данных.
например. для 24-битного цвета 124, 39, 201 как 1-битный цвет: 0,0,1 как 2-битный цвет: 1,0,2 ....
Если вы хотите увидеть больше цветов в изображении, я бы рекомендовал уменьшить их до ближайших значений фиксированной цветовой карты без распространения ошибок и определить верхние 'N' наиболее часто используемых цветов. . То, что вы сделаете после этого, потребует некоторых проб и усилий - может потребоваться метод, взвешенный выше по частоте на промежуточном изображении, или вы можете просто уйти, глядя на изображения, где верхние цвета NM соответствуют NX ваших вычисленных значений (с некоторыми настройка значений M и X).
С.