Соответствие формы OpenCV

Я новичок в OpenCV (на самом деле я использую оболочку Emgu CV С#) и пытаюсь выполнить обнаружение некоторых объектов.

Я пытаюсь определить, соответствует ли объект заранее определенному набору объектов (который мне придется определить). Фон хорошо освещен и не двигается. Мои объекты, с которых я начинаю, это бутылки и банки.

Мой текущий подход: сделайте absDiff с ранее сделанным фоновым изображением, чтобы отделить фон. Затем расширьте в 4 раза, чтобы светлые области (на этикетках) уменьшились. Затем я делаю бинарный порог, чтобы получить большой блог, после чего нахожу контуры на этом изображении. Затем я беру самый большой контур и рисую его, который становится моей формой, чтобы либо сохранить в принятый набор, либо сравнить с принятым набором.

В настоящее время я использую cvMatchShapes, но двойное возвращаемое значение, похоже, сильно различается. Я предполагаю, что это потому, что он не учитывает вращение.

Является ли этот подход хорошим? Это не работает для стеклянных бутылок, так как трудно найти края...

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


person MAckerman    schedule 15.03.2011    source источник
comment
классификаторы Хаара также не учитывают повороты.   -  person rossb83    schedule 15.03.2011
comment
Учитывая коэффициент вращения, вы в основном смотрите на SIFT. (преобразование инвариантных функций масштаба), которое сопоставляет функции на изображениях с учетом размера/масштаба, поворота (как вы упомянули) или местоположения на изображении. Это было реализовано в OpenCV, вы можете узнать об этом по предоставленной ссылке. Надеюсь это поможет.   -  person AruniRC    schedule 03.05.2011


Ответы (1)


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

http://blogs.oregonstate.edu/hess/sift-library-places-2nd-in-acm-mm-10-ossc/#more-176

person Jav_Rock    schedule 09.05.2011