Miary podobieństwa między krzywymi?


17

Chciałbym obliczyć miarę podobieństwa między dwoma uporządkowanymi zestawami punktów --- tymi pod Użytkownikem w porównaniu z tymi pod Nauczycielem :

! [Przykład] (http://i50.tinypic.com/2uj0580.jpg)

Punkty są krzywymi w przestrzeni 3D, ale myślałem, że problem zostanie uproszczony, jeśli narysuję je w dwóch wymiarach, jak na zdjęciu. Jeśli punkty się pokrywają, podobieństwo powinno wynosić 100%.


Czy musisz uwzględnić skalowanie, rotację i / lub tłumaczenie?
nico

Nie, nie muszę ich brać pod uwagę.
Alex

co oznacza, że ​​będę się starał o to zadbać.
Alex

Odpowiedzi:


11

Porównujesz trajektorie lub krzywe . To jest przestudiowany temat. Analiza procrustes i dynamiczne dopasowanie czasu , jak mówi EMS, są narzędziami handlu. Po wyrównaniu krzywych będziesz chciał zmierzyć odległość, powiedz odległość Frécheta . Jeśli chcesz udostępnić część swoich danych, możemy sami je złamać.

Odpowiednia lektura:

Jeśli zignorujesz wymiar czasowy:

Możesz dopasować użytkownika i nauczyciela do wielowymiarowej gęstości Gaussa i znaleźć objętość ich produktu - to całkiem proste. Jeśli chcesz uzyskać większą dokładność, możesz zamiast tego użyć szacunku gęstości nieparametrycznej.


Dziękuję Emre za sugestię! Zaktualizowałem problem - myślę, że może być teraz prostszy, więc spójrz.
Alex

Możesz dopasować Użytkownika i Nauczyciela do wielowymiarowej gęstości Gaussa i znaleźć objętość ich produktu - to całkiem proste. Czy mógłbyś uprzejmie wskazać mi odpowiednie zasoby, aby się tego nauczyć? Naprawdę początkujący tutaj.
Sibbs Gambling

Czy odległość euklidesowa będzie wystarczająca dla wyrównanych krzywych?
Vladimir Chupakhin

Użyłem współczynników korelacji do porównania podobieństw i
ustaliłem

3

Możesz rozważyć odległość Procrustes lub pewną odległość opartą na dynamicznym dopasowaniu czasu (nawet jeśli jeden z twoich wymiarów nie jest „czasem” per se, nadal możesz skorzystać z tej idei transformacji). Zobacz ostatnią pracę nad Trackletami , ilustrującą przykład użycia dynamicznego dopasowania czasowego do pomiaru podobieństwa między krzywymi przestrzennymi 3D wykreślonymi przez trajektorie punktowe na wideo.

Istnieje wiele bibliotek z wbudowanymi obliczeniami odległości Procrustes, takich jak Matlab lub biblioteka PyGeometry dla Pythona.


2

Oryginalny post poprosił o metrykę między ZAMÓWIONYMI punktami w 3D. Jedyną taką miarą jest odległość Frecheta. Nie wspomniano o czasie jako o jednym z wymiarów, więc zakładam, że wszystkie wymiary mają jednostki odległości (tj. Jednostki nie są mieszane). Można tego dokonać, modyfikując funkcję ostatnio przesłaną do wymiany plików MathWorks (obliczanie odległości Frecheta: http://www.mathworks.com/matlabcentral/fileexchange/38714 ). Procedury te zostały napisane dla punktów w płaszczyźnie, ale rozszerzenie do punktów 3D jest proste.


1
Czy na pewno odległość Frecheta jest między zamówionymi parami? strona wikipedia mówi, że punkt w jednej ścieżce można dopasować do wielu punktów w innym. Z pewnością istnieje więcej niż jedna taka metryka. A co z sumą odległości między zamówionymi parami?
naught101

1

XYdH(X,Y)=max{supxXinfyY||xy||,supyYinfxX||xy||}


supinfmaxmin

1
XY

Dziękuję za link, widziałem tylko odległość Hausdorffa w wizji komputerowej w książce Tony'ego Chana. Fajnie jest widzieć więcej podejść obliczeniowych.
ely

1

Podobieństwo to ilość, która odzwierciedla siłę relacji między dwoma obiektami lub dwoma cechami. Wielkość ta zwykle ma zakres od -1 do +1 lub znormalizowana do 0 do 1. Następnie musisz obliczyć odległość dwóch cech za pomocą jednej z poniższych metod:

  1. Prosta odległość dopasowania
  2. Odległość Jaccard
  3. Odległość Hamminga
  4. Współczynnik Jaccarda
  5. prosty współczynnik dopasowania

Dla linii ... możesz to przedstawić za pomocą właściwości kąta (a) i długości (l) lub L1 = P1 (x1, y1), P2 (x2, y2) poniżej to podobieństwo do ai l.

teraz zmierz kąt dla kątów i długości

  • A_user = 20 i Length_User = 50
  • A_teacher30 i Length_Teacher = 55
  • Teraz znormalizuj wartości.

Korzystanie z odległości euklidesowej

podobieństwo = SquareRoot ((A_user - A_teacher30) ^ 2 + (Length_User - Length_Teacher) ^ 2)

daje miarę podobieństwa. Można również użyć wyżej wymienionych metod w zależności od problemu i funkcji.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.