Misure di somiglianza tra le curve?


17

Vorrei calcolare la misura della somiglianza tra due insiemi di punti ordinati --- quelli sotto Utente rispetto a quelli sotto Insegnante :

! [Esempio] (http://i50.tinypic.com/2uj0580.jpg)

I punti sono curve nello spazio 3D, ma stavo pensando che il problema sarebbe stato semplificato se li avessi tracciati in 2 dimensioni come nell'immagine. Se i punti si sovrappongono, la somiglianza dovrebbe essere del 100%.


Devi tenere conto del ridimensionamento, della rotazione e / o della traduzione?
nico,

No, non ho bisogno di prenderli in considerazione.
Alex,

nel senso che applicherò occuparmene.
Alex,

Risposte:


11

Stai confrontando traiettorie o curve . Questo è un argomento studiato. L'analisi dei procustri e la distorsione temporale dinamica , come afferma EMS, sono strumenti del mestiere. Dopo aver allineato le curve, dovrai misurare la distanza, ad esempio la distanza di Fréchet . Se desideri condividere alcuni dei tuoi dati, potremmo risolverli da soli.

Lettura pertinente:

Se si ignora la dimensione temporale:

Potresti adattare Utente e Insegnante a densità gaussiane multivariate e trovare il volume del loro prodotto - è abbastanza facile. Se si desidera una maggiore precisione, è possibile utilizzare invece una stima di densità non parametrica.


Grazie Emre per il tuo suggerimento! Ho aggiornato il problema: penso che ora potrebbe essere più semplice, quindi dai un'occhiata.
Alex,

Potresti adattare l'Utente e l'Insegnante a densità gaussiane multivariate e trovare il volume del loro prodotto - è abbastanza facile Potresti gentilmente indicarmi le risorse giuste per imparare questo? Davvero un principiante qui.
Sibbs Gambling,

La distanza euclidea sarà sufficiente per le curve allineate?
Vladimir Chupakhin,

Ho usato coefficienti di correlazione per confrontare le somiglianze e bloccare il risultato tra 0 e 1.
M.kazem Akhgary

3

Potresti prendere in considerazione la distanza Procrustes , o una certa distanza in base alla deformazione temporale dinamica (anche se una delle tue dimensioni non è "tempo" di per sé, puoi comunque usare questa idea di trasformazione). Guarda questo recente lavoro su Tracklets per un caso d'uso illustrativo di distorsione temporale dinamica per misurare la somiglianza tra curve spaziali 3D ricavate da traiettorie puntuali nei video.

Esistono molte librerie con calcoli della distanza Procrustes integrati, come Matlab o la libreria PyGeometry per Python.


2

Il post originale chiedeva una metrica tra i punti ORDINATI in 3D. L'unica metrica di questo tipo è la distanza di Frechet. Non è stato menzionato il tempo come una delle dimensioni, quindi suppongo che tutte le dimensioni abbiano unità di distanza (cioè le unità non sono miste). Questo può essere fatto modificando una funzione caricata di recente nello scambio di file MathWorks (calcolo della distanza di Frechet: http://www.mathworks.com/matlabcentral/fileexchange/38714 ). Queste routine sono state scritte per punti nel piano, ma l'estensione ai punti 3D è semplice.


1
Sei sicuro che la distanza di Frechet sia tra le coppie ordinate? la pagina di Wikipedia dice che un punto in un percorso può essere abbinato a più punti in un altro. Inoltre, sicuramente esiste più di una di queste metriche. Che dire della somma delle distanze tra le coppie ordinate?
naught101

1

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


supinfmaxmin

1
XY

Grazie per il collegamento, nel libro di Tony Chan avevo visto la distanza di Hausdorff nella visione artificiale. È bello vedere più approcci computazionali.
ely,

1

La somiglianza è la quantità che riflette la forza della relazione tra due oggetti o due caratteristiche. Questa quantità ha in genere un intervallo compreso tra -1 e +1 o normalizzata tra 0 e 1. Quindi è necessario calcolare la distanza di due funzioni con uno dei metodi seguenti:

  1. Distanza di corrispondenza semplice
  2. La distanza di Jaccard
  3. Distanza di Hamming
  4. Coefficiente di Jaccard
  5. coefficiente di corrispondenza semplice

Per la linea ... puoi rappresentarlo in base alle proprietà angolo (a) e lunghezza (l) oppure L1 = P1 (x1, y1), P2 (x2, y2) di seguito è la somiglianza con a e l.

ora misura l'angolo per angoli e lunghezze

  • A_user = 20 e Length_User = 50
  • A_teacher30 e Length_Teacher = 55
  • Ora normalizza i valori.

Usando la distanza euclidea

similarità = SquareRoot ((A_user - A_teacher30) ^ 2 + (Length_User - Length_Teacher) ^ 2)

dà la misura della somiglianza. È inoltre possibile utilizzare i metodi sopra menzionati in base al problema e alle funzionalità.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.