Как распознать цвета из таблицы цветов?

9

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

Мой вопрос: мне нужно определить область цветового пятна, распознав четыре угла диаграммы. Вы можете видеть углы, обозначенные маленькими вставленными прямоугольниками на изображении ниже. Я знаю, что один из способов сделать это - позволить пользователю выбирать эти углы, щелкая по нему. Но есть ли способ автоматически определять четыре угла изображения.

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

Тае Сунг Шин
источник
Просто любопытно, где можно взять такую ​​таблицу цветов?
hotpaw2
@ hotpaw2 Как почти всегда, Google. Поиск по термину "it8 target"
Тэ Сон Шин

Ответы:

4

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

  • Сначала определите все линии
  • Линии с самой длинной длиной будут самыми внешними
  • Выберите верхнюю горизонтальную линию и сделайте шаблонное совпадение для квадратов.
  • Как только вы найдете квадраты, пройдите вниз, чтобы добраться до другого набора квадратов.
  • Отметьте все точки, где были найдены квадраты
  • Теперь у вас есть область для цветовой диаграммы.
Wajih
источник
2

Каждый двумерный массив цветового компонента (RGB и т. Д.) Достаточно высококонтрастный и отличительный. Поэтому я мог бы попытаться использовать сложное 2D БПФ каждого цветового компонента, чтобы определить масштаб и смещение фотоизображения по сравнению с эталонным изображением. Затем используйте их, чтобы отрегулировать измеренные / известные координаты углов и / или участков на эталонном изображении, чтобы получить координаты на фотографии.

Возможно, вам придется измерить некоторые координаты на эталонном изображении, используя редактор растровых изображений.

hotpaw2
источник
1

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

Это оставит вас только с шашечной доской, состоящей из разных цветов. Вы ожидаете около 22x12 - около 264 цветов.

Самый простой способ - применить более простой алгоритм палатализации. Если вам нужно будет перевести это в GIF-изображение - оно применяет квантование цвета для каждого кластера цвета, представленного в виде цвета центроида.

Это было бы особенно легко в вашем случае, потому что источник уже является чем-то вроде вкуса, и вы можете сделать хорошее приличное предположение, чтобы начать.

Проверь это:

NeuQuant: http://members.ozemail.com.au/~dekker/NEUQUANT.HTML

Квантование цвета Octree: http://www.cubic.org/docs/octree.htm . Смотрите это также.

Это только некоторые ссылки; но вы найдете готовый код в большинстве библиотек, использующих такие форматы изображений. (BMP, PNG и GIF поддерживают такие представления). Также проверьте libpng и libjpeg для некоторых быстрых реализаций.

Дипан Мехта
источник
0

Почему бы не искать границы графика вместо углов? Вы можете попробовать использовать детектор краев, а затем найти прямые линии, используя преобразование Хафа.

Дима
источник