Я работаю над проектом, в котором у меня есть элемент изображения, описанный как набор координат 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 в функциях в моей базе данных.
Какой самый быстрый способ сопоставить эти функции? В настоящее время я перехожу к каждой функции в базе данных и сравниваю каждую отдельную точку:
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
Этот поиск работает, но, очевидно, он медленно работает с большими базами данных. Кто-нибудь знает о более быстром способе поиска такого типа или, по крайней мере, если есть способ быстро исключить функции, которые явно не соответствуют дескриптору?