Как сопоставить точки интереса SURF с базой данных изображений

Я использую алгоритм SURF на C# (OpenSurf) для получения списка точек интереса из изображения. Каждая из этих точек содержит вектор дескрипторов, координату x (int), координату y (int), масштаб (float) и ориентацию (float).

Теперь я хочу сравнить точки интереса с одного изображения со списком изображений в базе данных, которые также имеют список точек интереса, чтобы найти наиболее похожее изображение. То есть: [Изображение(I.P.)] COMPARETO [Список изображений(I.P.)]. => Наилучшее совпадение. Сравнение изображений по отдельности дает неудовлетворительные результаты.

При поиске на stackoverflow или других сайтах, лучшее решение, которое я нашел - это построить FLANN-индекс, одновременно отслеживая, откуда берутся точки интереса. Но перед реализацией у меня есть несколько вопросов, которые меня озадачивают:

1) При сопоставлении изображений на основе их точек интереса SURF алгоритм, который я нашел, делает сопоставление, сравнивая их расстояние (x1,y1->x2,y2) друг с другом и находя изображение с наименьшим общим расстоянием. Используются ли дескрипторы или ориентация никогда не используется при сравнении точек интереса?

2) Если дескрипторы используются, то как мне их сравнить? Я не могу понять, как сравнить векторы X из 64 точек (1 изображение) с векторами Y из 64 точек (несколько изображений), используя индексированное дерево.

Буду очень признателен за помощь. Все места, где я искал или API, которые я нашел, поддерживают только сопоставление одной картинки с другой, но не эффективное сопоставление одной картинки со списком картинок.

16
задан Andrey Rubshtein 21 February 2012 в 20:08
поделиться