OpenCV Edge Match - PullRequest
       2

OpenCV Edge Match

0 голосов
/ 08 июня 2018

Я довольно новичок в opencv, и я прочитал несколько учебников и исходных кодов проектов.Кажется, что люди склонны делать базу обнаружения объекта по цвету.

Интересно, есть ли способ сделать базу обнаружения объекта по кривой края.

Например, яУ меня есть известный объект, край которого подобен A, и я знал, что край этого объекта на разных изображениях довольно похож, но не одинаков, как B. Теперь рассмотрим B в Pic C, и моя цель - выяснить,контур или край B в C, основанный на поиске аналогичной формы A в C.

Итак, существует ли какой-либо метод обнаружения контура или обнаружения ребер, основанный на поиске аналогичной формыизвестная форма.

My Example Image

1 Ответ

0 голосов
/ 08 июня 2018

Я думаю, что по умолчанию в OpenCV используется метод matchShapes;но я использовал общий метод, который работает довольно хорошо.

  • Для каждого контура возьмите центроид.
  • Следуя контуру от самой высокой точки над центроидом, возьмите расстояние до центроида.
  • Переместить шаг по контуру (например, 1/100 длины контура).Снова расстояние.
  • После всех шагов у вас есть массивы расстояний.
  • Сравните массивы, например, используя косинусное сходство

Вы можете сделать этометод масштаба и инвариант вращения.

  • Если вы хотите иметь масштаб инвариантность, нормализуйте массив перед сравнением.
  • Если вы хотите иметь вращение инвариантность, вы можете сдвинуть массив и найти лучшее совпадение по широте
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...