Я работаю над проектом, в котором у меня есть функция на изображении, описанная как набор X & Координаты Y (5-10 точек на объект), которые уникальны для этого объекта. У меня также есть база данных с тысячами функций, каждая из которых имеет один и тот же тип дескриптора. Результат выглядит следующим образом:
myFeature: (x1,y1), (x2,y2), (x3,y3)...
myDatabase: Feature1: (x1,y1), (x2,y2), (x3,y3)...
Feature2: (x1,y1), (x2,y2), (x3,y3)...
Feature3: (x1,y1), (x2,y2), (x3,y3)...
...
Я хочу найти наилучшее соответствие myFeature в компонентах myDatabase.
Каков самый быстрый способ сопоставления этих функций? В настоящее время я просматриваю каждую функцию в базе данных и сравниваю каждую отдельную точку:
bestScore = 0
for each feature in myDatabase:
score = 0
for each point descriptor in MyFeature:
find minimum distance from the current point to the...
points describing the current feature in the database
if the distance < threshold:
there is a match to the current point in the target feature
score += 1
if score > bestScore:
save feature as new best match
Этот поиск работает, но очевидно, что он становится мучительно медленным в больших базах данных. Кто-нибудь знает более быстрый метод выполнения этого типа поиска или, по крайней мере, есть способ быстро исключить функции, которые явно не соответствуют дескриптору?