Каков наилучший способ анализа цветов на изображении (Java)?

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

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

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

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

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

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

Спасибо том

3 ответа

Примерное представление о том, как вы могли бы сделать это:
Вы могли бы использовать 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 символов)

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

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

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

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

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

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

Другие вопросы по тегам