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


9

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

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

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


Просто любопытно, где можно взять такую ​​таблицу цветов?
hotpaw2

@ hotpaw2 Как почти всегда, Google. Поиск по термину "it8 target"
Тэ Сон Шин

Ответы:


4

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

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

2

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

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


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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.