Как обнаружить букву E под любым углом в opencv

OpenCV новичок здесь. Я изо всех сил пытаюсь обнаружить определенную форму в openCV, используя C++. Конкретная форма — буква "E".

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

Я могу реализовать оба из них, но это следующий шаг, с которым у меня проблемы. Может ли кто-нибудь из вас подсказать, как двигаться дальше. Как после применения фильтра Кэнни проверить наличие буквы «Е»?

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

Вход:

input

Выход:

выход


person user3144325    schedule 31.12.2013    source источник
comment
вам лучше загрузить необработанные изображения и ваш обработанный результат   -  person lennon310    schedule 31.12.2013
comment
Спасибо, сейчас загружу.   -  person user3144325    schedule 31.12.2013
comment
одна из идей состоит в том, чтобы удалить угол, деформируя изображение с помощью извлеченной гомографии. Посмотрите на исправление изображения, чтобы сделать это. После этого может быть применимо распознавание символов и/или сопоставление с шаблоном. Вам нужно будет извлечь прямые линии (например, из возможной буквы) и принять там прямые углы, что позволит вам вычислить гомпографию.   -  person Micka    schedule 06.01.2014


Ответы (1)


В зависимости от того, насколько надежным должно быть это «обнаружение», сложность возможных решений вашей проблемы может сильно различаться. Поскольку вы не упомянули надежность в своем вопросе, это, вероятно, не проблема. Таким образом, довольно простым решением может быть:

  1. Извлеките контуры из бинарного изображения (Canny), используя cv::findContours(). .
  2. Для каждого найденного контура сравните количество точек контура с количеством точек контура, которое вы ожидаете для буквы «Е».
  3. Если он совпадает, вы обнаружили букву «Е».

Если вам нужна большая надежность, вы можете:

  • Добавьте последующие проверки на основе контура, например, моменты, моменты Hu.
  • Дальнейшие этапы предварительной обработки, например, поворот ограничивающей рамки объектов-кандидатов в некоторую нормализованную ориентацию.
  • Что-то совершенно другое, например, обобщенное преобразование Хафа (как здесь: Обработка изображений: улучшение алгоритма распознавания "Coca-Cola Can").
  • Я не думаю, что SIFT или SURF здесь подойдут, потому что объекту не хватает интересного текстурного рисунка.
person moooeeeep    schedule 31.12.2013
comment
Большое спасибо, надежность — это то, что будет необходимо в будущем, но я просто пытался сначала обдумать первоначальную концепцию. Спасибо за помощь, и с Новым годом! - person user3144325; 31.12.2013