Обучение функциям SIFT в OpenCV
Я создал небольшое приложение SIFT, которое захватывает ключевые точки и сохраняет их в текстовый файл. Я использую это, чтобы получить информацию от логотипа (скажем, AT&T) и использовать ее для сравнения с другими изображениями с этим логотипом. Проблема в том, что многие мои изображения имеют варианты логотипа, которые из-за масштабирования, поворота или освещения не поднимают его. Мне было интересно, можно ли было получить набор изображений, захватить его ключевые точки и запустить его через какой-то алгоритм обучения, чтобы улучшить обнаружение.
Я искал в Интернете способы обучения ключевых точек SIFT, но все они в какой-то степени написаны на PhD, в котором рассматриваются все эти математические алгоритмы, которые, честно говоря, отбрасывают меня, так как я некоторое время не брал уроки математики.,
Если у кого-нибудь есть какие-либо советы или ссылки, чтобы можно было понять, как работает обучение или что нужно сделать для его реализации, пожалуйста, дайте мне знать. Или, если у кого-то есть более простые способы сделать это без SIFT, я был бы очень признателен за другие формы обнаружения. Ниже приведен список того, что я пробовал:
- SURF
- Не удалось, так как он возвращал неверные результаты
- Характеристики Хаара с Adaboosting
- Не удалось, так как я начал тренировать 100 позитивных моделей со 100 негативными изображениями 7/11/2011, и он все еще работает с 19.07.2011
- Шаблон Соответствует различным преобразованиям одного логотипа с порогом и без него
- Не удалось, так как мне пришлось бы экспоненциально создавать логотипы, исходя из того, сколько раз он не смог их обнаружить на изображении
заранее спасибо
2 ответа
Простая отправная точка - собрать дескрипторы SIFT/SURF нескольких логотипов AT&T и использовать на них FLANN. Затем возьмите тестовое изображение, вычислите дескрипторы, выполните поиск по диапазону, определите расстояние до ближайшего соседа и т. Д. И попытайтесь определить показатель "близости".
Вы можете использовать PCA для уменьшения количества измерений, а затем вы можете обучить некоторый классификатор, такой как SVM, на наборе векторных функций, извлеченных из логотипов. также вы можете использовать BoW (мешок слов \ особенностей). Также вы можете погуглить на "распознавании логотипа" много доступных материалов.