Можно ли сделать динамическое сопоставление шаблонов с помощью cv2.templateMatch()

У меня есть документ (графический план здания), в котором есть некоторые объекты, которые мне нужно обнаружить с текстом в нем. По сути, это просто сплюснутый шестиугольник с текстом внутри. Моя задача найти все такие шестиугольники на заданном плане. Я решил вырезать один шестиугольник и установить его в качестве шаблона и использовать cv2.templateMatch. Он смог правильно обнаружить некоторые шестиугольники, но не все. Я полагаю, проблема в тексте внутри, так как он разный для каждого шестиугольника, я не могу обнаружить все присутствующие шестиугольники.

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

UPD: Объекты, которые мне нужно найти, выглядят примерно так:

  __________
 <|ABC12345|>
  ----------

person wasd    schedule 29.07.2018    source источник
comment
Можете ли вы предоставить образец входного изображения, пожалуйста?   -  person Dan Mašek    schedule 29.07.2018
comment
@DanMašek извините, но это под соглашением о неразглашении. Можете ли вы представить себе план этажа здания (например, план действий при пожаре) и на нем у меня есть объекты, похожие на: ‹см. обновление вопроса› Этот квадрат я называю шестиугольником, я думаю, вы поняли идею   -  person wasd    schedule 29.07.2018
comment
Сопоставление шаблонов opencvs не позволяет использовать маски, но процесс довольно прост, и вы можете написать его (возможно, медленнее/менее оптимизированным) самостоятельно. Еще один похожий алгоритм — сопоставление фасок.   -  person Micka    schedule 29.07.2018
comment
Если цвет шрифта отличается от шестиугольника, вы можете попытаться отфильтровать текст перед сопоставлением с образцом.   -  person Mika72    schedule 31.07.2018


Ответы (1)


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

Для меня это очень похоже на обнаружение/распознавание номеров.

Самый надежный способ — использовать глубокое обучение для решения этой проблемы.

Приблизительно возможное решение может быть таким: 1. Сгенерировать обучающие и тестовые данные на основе стиля шрифта и его формата (например, 3 буквы и 5 цифр) 2. Добавить шум и другой фон к сгенерированным изображениям 3. Найти правильный netowrk и приступайте к обучению...

Удачи.

person Howard GENG    schedule 31.07.2018