2009-03-06 14 views
7

Qualcuno sa di un algoritmo che raggrupperà le immagini in eventi in base alla data in cui è stata scattata la foto. Ovviamente posso raggruppare entro la data, ma mi piacerebbe qualcosa di un po 'più sofisticato che potrebbe (potrebbe) essere in grado di raggruppare le immagini che coprono più giorni in base alla frequenza in un determinato intervallo di tempo. Considerare i seguenti raggruppamenti:Algoritmo per il raggruppamento di immagini in base alla data presa

  • 1/2/2009 15 foto
  • 1/3/2009 20 foto
  • 1/4/2009 13 foto
  • 1/5/2009 19 foto
  • 1/15/2009 5 foto

potenzialmente questi sarebbero raggruppate in due gruppi:

  1. 2009/01/02 -> 1/5/2009
  2. 1/15/2009

Ovviamente ci saranno una certa tolleranza (s) che devono essere stabiliti.

Esiste un modo ben definito per farlo, oltre ad inventare il mio approccio top/down?

+0

Ti sei ritrovato con una soluzione che funzionava bene? Se sì, saresti in grado di condividere il tuo approccio? Sto per lavorare su un problema simile. – MahlerFive

risposta

6

È possibile applicare più o meno any standard clustering technique a questo, è solo una questione di definire correttamente la funzione di distanza. Quando crei la matrice delle distanze tra le tue foto dovresti prendere in considerazione una combinazione di distanza fisica tra le posizioni - se ce l'hai - e la distanza temporale tra i loro timestamp di creazione. Normalise e mettili su dimensioni separate e potresti anche essere in grado di prendere una normale distanza euclidea.

Buona fortuna.

0

È sufficiente raggruppare le immagini scattate nei giorni successivi (nessun giorno in cui non sono state scattate foto) insieme.

+0

a destra: questo sarebbe l'approccio top/down più ovvio. –

0

Si potrebbe provare a calcolare in modo dinamico la tolleranza in base al numero di cluster (assoluto o%) che si desidera creare.

0

Per ottenere un raggruppamento utile di immagini secondo la data che richiedono le seguenti:

1) Il numero di cluster dovrebbe essere variabile e non fisso a priori al raggruppamento

2) Il diametro di ciascun cluster non deve superare un importo specifico.

L'algoritmo di clustering che soddisfa meglio entrambi i requisiti è lo QT (quality threshold) clustering algorithm. Da Wikipedia:

QT (soglia di qualità) di clustering (Heyer, Kruglyak, Yooseph, 1999) è un metodo alternativo di partizionamento dati, inventati per il gene clustering. È richiede più potenza di calcolo di k-means, ma non richiede specificando il numero di cluster a priori e restituisce sempre lo stesso risultato di quando viene eseguito più volte.

Sebbene sia utilizzato principalmente per il clustering genico, penso che si adatti molto bene a ciò di cui si ha bisogno.

+0

Qualsiasi tecnica di agglomerazione gerarchica condivide questa proprietà. – Simon

+0

Perché pensi che il clustering QT sia migliore? La tecnica di agglomerazione gerarchica –

+0

ingloberà in modo ingenuo sempre le coppie di due punti/cluster più vicine ad ogni iterazione. Dal momento che non stai considerando tutti i cluster per ogni punto, potresti finire con i cluster disallineati. –

0

Provare a rilevare gli spazi vuoti anziché i cluster.