Я пытаюсь реализовать распознаватель дорожных знаков с OpenCV и методом SURF. Моя проблема в том, что я получаю случайные результаты (иногда действительно точные, иногда явно неправильные), и я не могу понять и почему. Вот как я реализовал сравнение:
Обнаружение контура работает отлично: с помощью размытия по Гауссу и хитрости edge Мне удалось найти контур, похожий на этот:
Затем я извлекаю изображение, соответствующее этому контуру, и сравниваю это изображение с изображением шаблона дорожных знаков, например следующим:
cvExtractSURF возвращает 189 дескрипторов для изображения контура . Затем я использую метод naiveNearestNeighbor, чтобы выяснить сходство между моим контурным изображением и каждым изображением-шаблоном.
Вот мои результаты:
6/189 для первого шаблона (который является тем i '
количество точек goog / общее количество дескрипторов
PS: Для информации я следовал этому руководству: http://www.emgu.com/wiki/index.php/Traffic_Sign_Detection_in_CSharp
И использовал find_obj пример OpenCV для адаптации его на C.