поиск изображений opencv

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

Как только я получу код сопоставления SURF NN, работающий для сравнения двух изображений, как мне изменить этот код, чтобы выполнить поиск в библиотеке изображений и выделить десять ближайших совпадений изображений?

Спасибо


person hndrk    schedule 20.10.2011    source источник


Ответы (2)


Как только я получу код сопоставления SURF NN, работающий для сравнения двух изображений, как мне изменить этот код, чтобы выполнить поиск в библиотеке изображений и выделить десять ближайших совпадений изображений?

Помогает ли это: https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/cpp/matching_to_many_images.cpp ?

person Unapiedra    schedule 20.10.2011
comment
спасибо за ваш ответ, но есть ли более простой способ? Я не ищу самое элегантное решение, я не могу следовать этому образцу... Кроме того, не могли бы вы знать, где найти базовый пример использования серфинга для сопоставления изображений (я уже смотрел find_obj.cpp ), Спасибо - person hndrk; 20.10.2011
comment
aishack.in/topics/tutorials/vision они довольно хорошо объясняют, как работает просеивание, и я думаю, что он делает именно то, что вы хотите. Вы не против поискать там? - person Unapiedra; 20.10.2011
comment
Я только что просмотрел Learning OpenCV, OReilly, Bradski & Kaehler, а также OpenCV Cookbook, Packt, R. Laganiere. Ни то, что вы хотите напрямую. - person Unapiedra; 20.10.2011
comment
Я просмотрел тот веб-сайт, на который вы меня связали, я думаю, что концептуально знаю, что хочу сделать, но, глядя на его код, я все еще не могу этого понять. Я просмотрел и те две книги, о которых вы упомянули. -- Я хочу определить свой собственный вектор признаков, который учитывает лапласиан, размер, направление, гессиан, возможно, используя радиус влияния, а не просто точку. Я пытался упростить find_obj.cpp... Не могли бы вы дать дополнительные указания? Большое спасибо - person hndrk; 20.10.2011
comment
Этот код считывает ВСЕ изображения и дескрипторы SURF в память. Это самый немасштабируемый способ поиска в базе данных изображений... - person Cerin; 11.12.2011
comment
@Cerin, не могли бы вы дать более масштабируемый ответ? - person Unapiedra; 11.12.2011
comment
@Unapiedra, это все еще активная тема исследования, но в прошлом я делал это так, чтобы хранить дескрипторы в базе данных, постепенно передавать их алгоритму кластеризации k-средних, генерировать гистограмму кластера для каждого изображения, обучите классификатор на гистограммах, а затем выполните поиск, классифицируя входящую гистограмму. Есть накладные расходы на обновление гистограмм при обновлении кластеров, но в остальном это работает вне ядра. - person Cerin; 11.12.2011

вы можете вычислить все функции SURF изображений, а затем построить kd-tree. для поиска knn вы также можете использовать поиск на основе flann, реализованный в opencv. (это может быть настроено на время поиска \ точность, поэтому это может быть быстрый приблизительный поиск)

person mrgloom    schedule 16.11.2012