Python - сопоставление ключевых точек с использованием векторов объектов - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь сопоставить ключевые точки 2 сеток, используя их векторы признаков и евклидово расстояние в качестве меры сходства,

То, что я пробовал, и вот простой пример этого, я сделал пример основные данные:

a = [0,1,4,6]
    fv_a = [[2.1,4],
            [0.7,3.1],
            [2.23,6],
            [0,1.11]]
    b = [1,3,0,4]
    fv_b = [[0.7,3.1],
            [4.1,3.3],
            [2.1,4],
            [2.23,6]]
    fv_a = (fv_a - np.min(fv_a)) / np.ptp(fv_a)
    fv_b = (fv_b - np.min(fv_b)) / np.ptp(fv_b)
    distances = scipy.spatial.distance.cdist(fv_a,fv_b)
    print(distances)
    # print(np.amax(distances,1))
    # print(np.argmax(distances,1))
    matched = np.argmax(distances,1)
    print(matched)
    for i,j in enumerate(matched):
        print(i, "linked to : ",j)
        print("point in a",a[i]," is matched to: ",b[j])

Итак, дело в том, что для каждой точки в a у меня есть вектор объектов, представленный в fv_a , и я пытаюсь сопоставьте его с b

, но результаты будут такими:

 [0.1329895  0.52549136 0.18161024 0.51302967]
 [0.6614612  0.57648771 0.39237617 0.08298742]
 [0.26783019 0.71056665 0.5111808  0.86461593]]
[0 1 0 3]
0 linked to :  0
point in a 0  is matched to:  1
1 linked to :  1
point in a 1  is matched to:  3
2 linked to :  0
point in a 4  is matched to:  1
3 linked to :  3
point in a 6  is matched to:  4

, и это не правильно, так как 0 должно соответствовать 0, 1 должно соответствовать 1, и т.д. c ..

Что я делаю не так, пожалуйста?

и да, я пытаюсь сделать соответствие один к одному . Любые рекомендации любезно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...