Странный результат при сравнении SURF

Я пытаюсь реализовать распознаватель дорожных знаков с OpenCV и методом SURF. Моя проблема в том, что я получаю случайные результаты (иногда действительно точные, иногда явно неправильные), и я не могу понять и почему. Вот как я реализовал сравнение:

  • Сначала я обнаруживаю контуры на моем изображении
  • Затем на каждом контуре я использую SURF, чтобы узнать, находится ли дорожный знак внутри и какой дорожный знак

Обнаружение контура работает отлично: с помощью размытия по Гауссу и хитрости edge Мне удалось найти контур, похожий на этот:

enter image description here

Затем я извлекаю изображение, соответствующее этому контуру, и сравниваю это изображение с изображением шаблона дорожных знаков, например следующим:

enter image description here

enter image description here

cvExtractSURF возвращает 189 дескрипторов для изображения контура . Затем я использую метод naiveNearestNeighbor, чтобы выяснить сходство между моим контурным изображением и каждым изображением-шаблоном.

Вот мои результаты:

6/189 для первого шаблона (который является тем i '

количество точек goog / общее количество дескрипторов

PS: Для информации я следовал этому руководству: http://www.emgu.com/wiki/index.php/Traffic_Sign_Detection_in_CSharp

И использовал find_obj пример OpenCV для адаптации его на C.

6
задан casperOne 10 July 2011 в 04:15
поделиться