2015-12-20 4 views
0

У меня есть 4 типа символов нот одного и того же цвета: целая нота, половина ноты, крючок и дрожь. Мне нужно классифицировать изображение и указать, есть ли у него один из этих символов (только один на данный момент) и какой. например, если у меня есть изображение только с музыкальным персоналом (но ничего больше в нем), он должен сказать мне, что изображение пуст, но если у меня есть изображение с символом половины ноты в нем, оно должно сказать мне что-то вроде «это половина примечания».Извлечение дескрипторов связки образцов изображений и обучение SVM в OpenCV

Предположим, у меня есть 20 образцовых изображений для каждого возможного символа и 20 с базовым корпусом (ничего в нем), я хочу обучить SVM для классификации любого входного изображения. Я читал о том, как я могу это сделать, но у меня все еще есть определенные сомнения. я думаю, что процесс - это что-то вроде этого (и, пожалуйста, поправьте меня, если я ошибаюсь):

  1. извлеките дескрипторы всех образцовых изображений.
  2. положить эти дескрипторы внутри разных Mat Объекты (по одному для каждого символа).
  3. отправьте эти Mats в SVM, чтобы обучить его.
  4. Используйте SVM для классификации изображений.

у меня есть определенные сомнения по поводу того, что я думаю, что это процесс:

  1. является то, что я описал правильный процесс для того, что мне нужно сделать?
  2. Должен ли я предварительно обработать образцы изображений (скажем, извлечь фон и применить канонические края), прежде чем я отправлю их в дескриптор-экстрактор? o могу ли я оставить их такими, какие они есть?
  3. Я прочитал о трех методах извлечения дескрипторов: HOG, BOW (Bag of Words) и SIFT. Я думаю, что они все делают то, что мне нужно, но я не знаю, какой из них использовать. я вижу, что HOG в основном (если не все времена) для обнаружения лиц и пешеходов, и я не знаю, можно ли его использовать для моего случая. Любые советы, которые следует использовать?
  4. Сколько образцов изображений нужно иметь для каждого случая?

я не нужны конкретные детали реализации, но я действительно нужны ответы на эти вопросы, спасибо заранее

+0

Вы хотите, чтобы классификатор svm классифицировал 4 типа заметок ... Я думаю, что это немного накладные расходы, чтобы обучить классификатор для этой легкой задачи .. или мне не хватает sth? –

+0

@HumamHelfawi хорошо, что мне нужно сделать, это обнаружить через веб-камеру вид больших заметок, которые пользователь будет придерживаться на штативе 3mtx50cm, который приклеен к стене и играет ноты на определенное количество времени в зависимости от его формы. Заметки не всегда будут прямыми, обычно не имеют одинакового размера (камера может быть ближе или дальше) и обычно не получат одинаковое освещение. Поэтому я подумал, что это лучший и более точный подход. но если есть другой подход к обнаружению фигур, о которых вы можете думать, это было бы весьма признательно. – angel208

+0

в вашей задаче вы бы не описали весь образ, а только объект desirdd. поэтому вы должны выполнить ручную маркировку. – Micka

ответ

0

Я не эксперт SIFT и ЛУК, но я знаю кое-что о HOG и SVM ,

1 Я описал правильный процесс для того, что мне нужно сделать? Если вы используете OpenCV и HOG, это не так. Посмотрите пример кода для HOG в образцах OpenCV, и вы обнаружите, что после извлечения дескрипторы напрямую передают SVM без заполнения элемента MAT.

2 должен ли я предварительно обработать образцы изображений (скажем, извлечь фон и применить канонические края), прежде чем я отправлю их в дескриптор-экстрактор? o могу ли я оставить их такими, какие они есть? Это необязательно. Было доказано, что предварительная обработка очень полезна, но для вашего простого случая вам это не понадобится. С другой стороны, если ваша стена представляет ничьи, наклейки или что-то, что может смутить детектор, тогда да. Это может быть хорошим решением для уменьшения числа ложных срабатываний.

3 Я прочитал три метода извлечения дескрипторов: HOG, BOW (Сумка слов) и SIFT. Я думаю, что они все делают то, что мне нужно, но я не знаю, какой из них использовать.я вижу, что HOG в основном (если не все времена) для обнаружения лиц и пешеходов, и я не знаю, можно ли его использовать для моего случая. Любые советы, которые следует использовать? У меня есть прямые знания только о HOG. Вы можете легко реализовать свой собственный детектор с помощью HOG без каких-либо проблем, я в настоящее время использую его для дорожных знаков. Обратите внимание на окно обнаружения, которое вы хотите использовать. Вы можете оставить все остальные параметры такими, какие они есть, это будет работать для простых случаев.

4 сколько образцов изображений у меня есть для каждого случая? Вновь это зависит от ситуации. Я бы сказал, что 200 изображений (попробуйте также с меньшим количеством) для класса сделают трюк, но вы всегда можете увеличить число, применив некоторое преобразование по позитивам. Попробуйте перевернуть, насытить или размыть изображения.

Некоторые дополнительные соображения. Я думаю, что вы можете работать с изображениями с серой шкалой из-за того, что цвет не важен для того, чтобы отличать заметки (все одинаковые цвета?). Если у вас возникли проблемы с ложными срабатываниями, вы можете попытаться использовать цветовое пространство HSV для фильтрации патчей, которые вы затем будете использовать для обнаружения заметок (это действительно хорошо работает с красным!). Самый простой способ обучить ваш SVM - использовать линейное ядро, а затем подготовить модель для каждого класса.

Смежные вопросы