OpenCV: Как определить / определить, есть ли у меня необходимый объект на фотографии или нет?
Как я могу определить / определить, есть ли у меня необходимый объект на фотографии или нет?
Мне не нужно распознавать класс объекта, но мне нужно знать, есть ли у меня точно такой же объект, как на картинке шаблона.
До сих пор я пытался использовать сопоставление с шаблоном, сопоставление гистограммы и SIFT-подобные методы, но ни один из этих методов не обладает требуемым уровнем точности.
Кто-нибудь может предложить точный метод?
UPD
Размер БД в выпуске - 5.000-10.000 уникальных объектов
Доступен обучающий набор данных - 50 предметов.
3 ответа
Если вас интересует только этот объект (или небольшое количество объектов), вы можете обучить классификатор - например, V&J (каскадный классификатор) или попробовать подход с пакетом слов.
Вы можете прочитать о каскадном классификаторе здесь: http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html
Теоретическое обоснование мешка слов: http://gilscvblog.wordpress.com/2013/08/23/bag-of-words-models-for-visual-categorization/
И реализация openCV мешка слов: http://docs.opencv.org/modules/features2d/doc/object_categorization.html
Я думаю, что если вам нужна высокая точность, одного метода недостаточно. Вам придется использовать комбинацию методов. Как вы пробовали сопоставление с шаблоном, сопоставление гистограммы и SIFT-подобные методы по отдельности Но если вы попробуете разумную комбинацию из них, это может помочь.
Помимо этого вы можете попробовать подход машинного обучения. Обычно говорят, что он более устойчив
- Классификаторы могут быть одним из решений также
Разница в освещении, ремень, который существует в одном изображении, деформация (нелинейная), вращение, перемещение, масштаб и т. Д.... усложняют эту проблему.
Для начала вы можете выбрать 10-20 изображений этого кошелька. Вычислить такие функции, как гистограмма, элементы просеивания или некоторые вейвлет-функции для каждого кошелька, а затем посмотреть, соответствует ли входящее изображение кошелька любому подмножеству точек в любом из обучающих изображений.
Если у вас есть какой-то успех здесь, то вы можете рассмотреть возможность создания классификатора изображений с использованием методов машинного обучения. Вам нужно будет собрать данные обучения, имея каждый объект, который вы хотите распознать по нескольким видам, ориентациям, деформациям. Поиск в сети "машинного обучения в процессе обработки изображений" поможет вам в правильном направлении.