обнаружение openCV H

Для конкурса дронов мне нужно обработать изображение с помощью openCV, чтобы обнаружить букву «H» (для посадочной площадки вертолета). Я пробовал некоторые классические алгоритмы, но результат меня не удовлетворил.

  • SIFT (и SURF): все углы одинаковы (90 градусов), поэтому, даже если он находит «H», он ошибается в отношении ориентации.
  • matchTemplate: это неплохо, но это не инвариант вращения и размера. Поэтому мне нужно сделать слишком много тестов с разными размерами и разными ориентациями.
  • Преобразование линии Хафа: когда дрон находится слишком далеко от цели или слишком близко к ней, он не обнаруживает одни и те же линии из-за их толщины.
  • Машинное обучение для оптического распознавания символов: я не обращаю внимания на то, как заставить его учиться точно, потому что шаблон, который я ищу, уникален.

Может кто-нибудь дать мне несколько советов, пожалуйста? :)

РЕДАКТИРОВАТЬ: Вот «H», который нам нужно обнаружить: H буква для обнаружения


person ardayigit    schedule 27.06.2017    source источник
comment
ошибся в отношении ориентации. Имеет ли значение ориентация вертолета H, когда он просто обнаруживается как цель для посадки?   -  person barny    schedule 27.06.2017
comment
Я работаю с квадрокоптером и хочу иметь возможность приземляться с правильной ориентацией. И SURF не всегда находит H, потому что все углы одинаковы.   -  person ardayigit    schedule 27.06.2017
comment
Не думайте, что так важно, сколько у него лезвий. Я полагаю, что не может быть ни одной техники, которая идеально работала бы на всех дистанциях, то есть использовать разные техники на разных дистанциях. Например, если H не виден/не обнаруживается, то, по-видимому, дрон должен летать по ограниченной схеме поиска.   -  person barny    schedule 27.06.2017
comment
Значит, вы не думаете, что существует алгоритм сопоставления шаблонов, который не зависит от размера и ориентации?   -  person ardayigit    schedule 27.06.2017
comment
Я этого не говорил и не говорил.   -  person barny    schedule 27.06.2017
comment
Можете ли вы опубликовать несколько образцов изображений для посадочной площадки, которую вы пытаетесь обнаружить?   -  person Shawn Mathew    schedule 27.06.2017
comment
@ardayigit Как насчет того, чтобы сделать H как маркер aruco и использовать встроенная поддержка в OpenCV 3, чтобы получить ориентацию?   -  person George Profenza    schedule 27.06.2017
comment
@ardayigit какой подход вы использовали? если возможно, можете ли вы предоставить код для своего дрона? я пытаюсь обнаружить H и приземлиться на него, но я не могу найти способ обнаружить H   -  person Ali SH    schedule 02.02.2019


Ответы (1)


Лучший подход к распознаванию вертолетной площадки — обучить классификатор Хаара, а затем запустить его:

  1. исходное изображение
  2. Изображения, повернутые на плюс и минус 22, 45, 68, 90 градусов

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

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

person Totoro    schedule 28.06.2017
comment
Значит, у него есть поведение, инвариантное к размеру и вращению, если я тренирую его с достаточным количеством изображений? - person ardayigit; 28.06.2017
comment
Да. Хорошим примером является детектор лица OpenCV, который может обрабатывать около 10 градусов поворота головы по часовой стрелке и против часовой стрелки. - person Totoro; 28.06.2017
comment
Вам не кажется, что этот алгоритм требует много времени для обработки? Я буду использовать его на Raspberry Pi Zero W. - person ardayigit; 28.06.2017
comment
Распознавание лиц Opencv может работать на RPi Model 1b и выше; так что это тоже должно быть хорошо (очевидно, обучение должно проводиться на рабочем столе). Но я не уверен в частоте кадров. Вы можете попробовать запустить детектор лиц OpenCV на своей платформе и посмотреть, работает ли он. - person Totoro; 29.06.2017