Как определить сходство лиц на основе ориентира лица на изображении? - PullRequest
0 голосов
/ 13 января 2019

Я извлекал ориентир лица на основе библиотеки dlib

Из полученного изображения есть список кортежей

P1 = [(277, 288), (248, 290), (182, 291), (210, 291), (230, 347)]
P10 = [(349, 291), (307, 278), (220, 247), (255, 260), (248, 346)]

P1
The left eyes on (277, 288), (248, 290)
The right eyes on (182, 291), (210, 291)
Nose tip on (230, 347)

P10
The left eyes on (349, 291), (307, 278)
The right eyes on (220, 247), (255, 260)
Nose tip on  (248, 346)

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

Мне было интересно, как получить значение сходства из тех ориентиров, которые я извлекал?

1 Ответ

0 голосов
/ 13 января 2019

Я понимаю вашу проблему следующим образом: вам нужно измерить, насколько похожи 5-гионы (или 5-ти кортежей 2D-точек). Если это так, вы, вероятно, могли бы использовать анализ Procrustes для этой задачи. scipy.spatial.procrustes должен сделать трюк: https://docs.scipy.org/doc/scipy-0.16.1/reference/generated/scipy.spatial.procrustes.html Вы должны искать disparity:

import scipy.spatial
d = scipy.spatial.procrustes(P10,P1)[-1]
print(d) #prints 0.001937599061578668

Если я не ошибаюсь меньше, то значение больше похожих записей. Обратите внимание, что это нечувствительно к масштабу, т. Е. 5-гон, и скажем, в 5 раз больше 5-гона той же формы даст 0.0 (см. Пример в ссылке).

...