Каков наилучший способ анализа цветов на изображении (Java)? - PullRequest
0 голосов
/ 13 июля 2010

У меня нет большого опыта в анализе изображений, поэтому я решил спросить у более просвещенных людей:)

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

Кто-нибудь знает эффективный способ сделать это?Если это вообще возможно, я бы хотел избежать использования каких-либо сторонних библиотек, но все будет рассмотрено, по крайней мере.

Как я уже сказал, у меня нет большого опыта анализа изображений, поэтому, пожалуйста, будьте терпеливыесли я не правильно понимаю ваши ответы!

Я пробовал Google, но, похоже, нет ничего похожего на то, что я ищу.Может быть, мой Google-Fu сегодня недостаточно хорош.

Я бы очень признателен за любые советы, которые вы, ребята, могли бы дать!

Спасибо, Том

Ответы [ 3 ]

2 голосов
/ 13 июля 2010

Примерное представление о том, как вы могли бы сделать это:
Вы можете использовать java.awt.image.PixelGrabber, чтобы получить двумерный массив RGB-целых с изображения, пиксель за пикселем.

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

Затем вы можете посмотреть на java.awt.Color и, используя конструктор Color(int, int, int), создать поля с этими цветами (в качестве визуальных заполнителей) с количеством появлений, появляющихся под ним.

Чтобы получить шестнадцатеричные значения для цвета, вы можете использовать строку типа:

    String rgb = Integer.toHexString(color.getRGB());
    rgb = rgb.substring(2, rgb.length());

(подстрока необходима, в противном случае вы получите 8 символов)

Надеюсь, это поможет вам выбрать правильный путь!

Ресурсы: Класс цвета , Класс изображения

1 голос
/ 13 июля 2010

Я знаю, что вы пытаетесь избежать сторонних библиотек, но взгляните на OpenCV.У них есть кое-что хорошее по обработке и анализу изображений.Может быть, это может работать для вас.

1 голос
/ 13 июля 2010

Рассмотрим «цветной куб» с RGB вместо XYZ.Разделите куб на подкубы, но сделайте так, чтобы они все перекрывали друг друга.Убедитесь, что они все одинакового размера.Легко запомнить / вычислить шаблон куба, который будет проходить от 0-127, 64-191, 128-255 во всех направлениях, что дает в общей сложности 27 кубов.Для каждого куба определите, какие цвета на изображении попадают в них.

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

Это примерно столько деталей, сколько я могу представить, когда мой босс парит вокруг куба: -)

...