Быстрый (эр) способ сопоставления функции с базой данных

Я работаю над проектом, в котором у меня есть функция на изображении, описанная как набор 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

Этот поиск работает, но очевидно, что он становится мучительно медленным в больших базах данных. Кто-нибудь знает более быстрый метод выполнения этого типа поиска или, по крайней мере, есть способ быстро исключить функции, которые явно не соответствуют дескриптору?

5
задан Mikael 5 November 2010 в 12:41
поделиться