Высчитать доминирующий цвет на картинке

tkanoff

Новичок
Высчитать доминирующий цвет на картинке

Привет всем.
Стоит задача: при загрузке картинки на сервер определить доминирующий в ней цвет, затем категоризировать картинку - больше синего, больше красного, зеленого, ...
Гуглил, хорошо гуглил. Ничего пока. Подскажите
 

AmdY

Пью пиво
Команда форума
а я то смеялся, когда в одном резюме кандидат особо выделил функцию поиска по цвету. оказывается для кого-то это действительно ЗАДАЧА.
Проходишься по пикселям и получаешься цвет, сравниваешь его со своей таблицей цветов, на какой он больше похож
http://php.net/imagecolorat
 

Dovg

Продвинутый новичок
попиксельно можно сравнивать, например.

Либо man convert (google://imagemagick), там скорей всего что-то есть.
 

tkanoff

Новичок
Автор оригинала: AmdY
а я то смеялся, когда в одном резюме кандидат особо выделил функцию поиска по цвету. оказывается для кого-то это действительно ЗАДАЧА.
Проходишься по пикселям и получаешься цвет, сравниваешь его со своей таблицей цветов, на какой он больше похож
http://php.net/imagecolorat
Спасибо.
Это я понимаю, но оно вроде как не сильно целесообразно с т.з. быстродействия.
 

Dovg

Продвинутый новичок
самому стало интересно. Нашел очень хорошую статью http://www.imagemagick.org/Usage/compare/

цитирую:
Average Color of an image
You can use -scale to get an average color of an image, however I also suggest
you remove the outside borders of the image to reduce the effect of
any 'fluff' that may have been added around the image.

convert image.png -gravity center -crop 70x70%+0+0 \
-scale 1x1\! -depth 8 txt:-

Alternatively to get 'weighted centroid' color, based on color clustering,
rather than a average, you can use -colors

convert rose: -colors 1 -crop 1x1+0+0 -depth 8 -format '%[pixel:s]' info:-
rgb(146,89,80)
This will generally match images that have been resized, lightly cropped, rotated, or translated. But it will also match a lot of images that are not closely related.

The biggest problem is that this metric will generally disregard images that have been brightened, dimmed or changed the overall hue of the image. Also while it is a great metric for color and real-world images, it is completely useless for images that are greyscale. All such images generally get lumped together without any further clustering within the type.

This in turn shows why some initial classification of image types can be vital to good image sorting and matching.


//в очередной раз убеждаюсь, что это тот же фотошоп, только без мышки ;)
 

tkanoff

Новичок
Автор оригинала: Dovg
самому стало интересно. Нашел очень хорошую статью http://www.imagemagick.org/Usage/compare/

цитирую:
Average Color of an image
You can use -scale to get an average color of an image, however I also suggest
you remove the outside borders of the image to reduce the effect of
any 'fluff' that may have been added around the image.

...
Спасибо за вариант, это должно работать быстрее чем пиксели перебирать)))
Попробую.
 
Сверху