Вопрос или проблема
В моем классе мне часто нужно работать с изображениями цветовых карт. Я показываю изображение и пытаюсь делать выводы/наблюдения по разным предметам. Часто мне нужно действительно количественно оценить некоторые аспекты, но это всегда очень приблизительно и как-то расплывчато, потому что изображения предоставляются “как есть”, и я не обязательно знаю их содержание заранее.
Давайте предположим, что я работаю с двумя изображениями (*). Возможно ли указать компьютеру “выучить” шкалу цветов, чтобы я мог нажать на любую точку на карте и получить значение высоты в этой точке? Изображение 1 – это дискретная шкала цветов, а Изображение 2 имеет непрерывное цветовое отображение. Я включил оба примера, потому что, возможно, есть различия в подходе к тому, как это сделать.
Итак, есть ли какое-либо программное обеспечение или способ сделать это? Предпочтительно с открытым исходным кодом. Я пробовал ImageJ и не смог найти достойного решения.
Изображение 1:
Изображение 2:
(источник: topocreator.com)
Как вы можете видеть, цветовая шкала является частью изображения во всех случаях.
(*) Я не владею ни одним из этих изображений, это просто примеры, которые я нашел в Интернете, чтобы проиллюстрировать свою точку зрения.
Возможно, вы можете попробовать некоторые обходные пути (сначала вручную, затем программно):
- Конвертировать в оттенки серого
- Создать карту плотности (цифровую)
- Трассировать=векторизировать изображение с помощью Inkscape / Illustrator / и т.д.
- Сопоставить векторные части с значениями карты плотности.
Вы можете написать js-скрипт для Adobe Illustrator (возможно, также для Gimp), чтобы автоматизировать некоторые вещи. Я не предлагаю тратить деньги, просто поиграйте с демо-версией, пока не найдете идеальное решение.
Также, возможно, вы можете попробовать любой онлайн-API от Big4 или новых участников:
- tensorflow
- https://cloud.google.com/vision/
- https://aws.amazon.com/rekognition/
- https://www.ibm.com/watson/services/visual-recognition/
- http://opentracing.io/
Также есть некоторые коммерческие программы с бесплатными вариантами
например imagga – “Подписаться бесплатно: до 2000 изображений в месяц”
Вы можете попробовать демо-версию Vector Magic’s Desktop edition за $295.00 / лицензия, которая позволяет группировать формы по цвету (к сожалению, не предлагает специальных цен для академических учреждений или некоммерческих организаций)
Также пробовали ли вы FreeMat COLORMAP – функцию цветовой карты изображения?
Вы можете использовать что-то вроде Color Picker, чтобы вручную найти HTML, RGB или HSV значения.
В моем классе мне часто нужно работать с изображениями цветовых карт. Я показывал изображение и пытался делать выводы/наблюдения по разным предметам. Часто мне нужно действительно количественно оценить некоторые аспекты, но это всегда очень приблизительно и как-то расплывчато, потому что изображения предоставляются “как есть”, и я не обязательно знаю их содержание заранее. Это напоминает мне о проекте, где мне нужно было анализировать старые диаграммы для исследовательской презентации. Изображения предоставлялись в формате JPG, но мне нужно было привести их в более чистый формат, чтобы выделить определенные области и корректировать детали. В этом случае конвертация JPG в вектор стала спасением. Конвертация изображений в векторный формат позволила изолировать элементы, точно количественно оценить размеры и даже перекрасить участки для повышения ясности. Это полностью изменило то, как я представил свои наблюдения!
.
Ответ или решение
Конечно, получить численные данные из цветовой карты можно. В ситуации, когда вы работаете с изображениями, где цветовая шкала является частью самой карты, определить количественные значения, такие как высота, вполне реально. Рассмотрим методы, которые вы можете использовать для достижения этой цели, включая использование программного обеспечения с открытым исходным кодом.
Определение цвета и масштабирование значений
Для извлечения численных данных из цветовой карты необходимо определить зависимость между цветами и реальными значениями, такими как высота на топографической карте. Прежде всего, вы должны извлечь цветовую шкалу из изображения, чтобы узнать, как каждый цвет ассоциируется с конкретными значениями.
-
Извлечение цветовой шкалы:
- Если цветовая шкала известна и включена в изображение, вы можете использовать программное обеспечение, такое как GIMP или Inkscape, для ручного извлечения цвета и сопоставления каждого цвета с соответствующим численным значением.
- Для автоматизации извлечения цветовой шкалы можно использовать скрипты на Python с библиотеками OpenCV и NumPy.
-
Обработка изображений и определение цвета:
- Обработка изображений с использованием библиотек, таких как OpenCV, позволит вам находить цвет в любой точке изображения и сопоставлять его с известными значениями из цветовой шкалы.
- Реализуйте алгоритм, который распознаёт как дискретные, так и непрерывные цветовые шкалы. Для дискретных шкал достаточно получить соответствие цвет-значение, в то время как для непрерывных может понадобиться интерполяция.
Программные инструменты
-
Python и библиотеки для обработки изображений:
- Используйте OpenCV для считывания изображений и извлечения цветовых значений.
- Пакет Matplotlib поможет визуализировать результаты и сопоставить цвета с численными значениями.
-
TensorFlow для распознавания паттернов:
- Платформы машинного обучения, такие как TensorFlow, способны помочь в создании модели, референтной для конкретного типа цветовой карты, особенно если используется непрерывная цветовая шкала.
-
Пакеты для анализа данных:
- Используйте Pandas для организации и обработки полученных данных.
Практическая реализация
- Сначала извлеките и определите цвета на изображении с помощью цветовых пипеток для определения RGB значений.
- Напишите код, который берет RGB значения и сопоставляет их с соответствующими численными значениями.
- Создайте графический интерфейс пользователя (GUI) с использованием библиотеки Tkinter или PyQt для легкой интерактивности с изображениями, что позволит просто кликать по изображению и получать значения.
Используйте эти методы и инструменты для анализа цветовой карты, и тогда у вас появится возможность точно определять и интерпретировать численные данные, которые вы получаете из изображений. Это мощный и доступный подход, который можно адаптировать к различным типам цветовых карт и данных.