Я использую алгоритм SURF в С# (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, которые я нашел, поддерживают только сопоставление одного изображения с другим, но не для эффективного сопоставления одного изображения с списком изображений.