Извлечение наиболее часто используемых цветов изображения вместе с их процентным соотношением

Я пытаюсь создать программу для извлечения наиболее часто используемого цвета изображения в java, что-то похожее на

http://labs.tineye.com/color/e1a28ac9e847566c18b95e7c2b26dce8dabcbbd0?ignore_background=False&ignore_interior_background=False&width=166&height=250&scroll_offset=367

Я следовал простому процессу, состоящему из следующих шагов

а) Чтение всех пикселей по одному.

б) Получите от них значения RGB.

c) Сохраните их на карте, увеличив количество, если один и тот же пиксель существует.

d) Наконец, отсортируйте список на основе максимального количества.

Проблема здесь в том, что есть пиксели, которые очень мало отличаются по внешнему виду и являются оттенком какого-то цвета.

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

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


person Rajat    schedule 10.08.2015    source источник


Ответы (1)


Вам нужны цветные алгоритмы квантования

введите здесь описание изображения

person bedrin    schedule 10.08.2015
comment
Можете ли вы предоставить более подробную информацию, может быть какая-то уже существующая библиотека Java или используемый алгоритм. - person Rajat; 10.08.2015
comment
@Rajat OpenCV спешит на помощь - это очень мощная библиотека. Вот пример его использования для цветовой кластеризации: github.com/badlogic/opencv-fun/blob/master/src/pool/tests/ - person bedrin; 10.08.2015