Domanda

Chiunque conosce un algoritmo che raggrupperà le immagini in eventi in base alla data in cui è stata scattata la foto. Ovviamente posso raggruppare per data, ma mi piacerebbe qualcosa di un po 'più sofisticato che sarebbe (potrebbe) essere in grado di raggruppare le immagini che coprono più giorni in base alla frequenza in un determinato periodo di tempo. Considera i seguenti raggruppamenti:

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

Potenzialmente questi sarebbero raggruppati in due gruppi:

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

Ovviamente ci saranno alcune tolleranze che devono essere stabilite.

Esiste un modo ben definito per farlo, se non quello di inventare il mio approccio top / down?

È stato utile?

Soluzione

Puoi applicare praticamente qualsiasi tecnica di clustering standard a questo, è solo una questione di definizione la tua distanza funziona correttamente. Quando stai creando la tua matrice di distanze tra le tue foto, dovresti considerare una combinazione di distanza fisica tra le posizioni - se ce l'hai - e distanza temporale tra i loro timestamp di creazione. Normalizza e inseriscili in dimensioni separate e potresti persino essere in grado di regolare distanza euclidea.

Buona fortuna.

Altri suggerimenti

Raggruppa semplicemente le foto scattate in giorni successivi (nessun giorno in cui non sono state scattate foto) insieme.

Potresti provare a calcolare dinamicamente la tolleranza in base a quanti o quanti cluster (assoluti o%) vuoi creare.

Per ottenere un utile raggruppamento di immagini in base alla data è necessario quanto segue:

1) Il numero di cluster dovrebbe essere variabile e non fissato a priori al clustering

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

L'algoritmo di clustering che soddisfa al meglio entrambi i requisiti è Algoritmo di clustering QT (soglia di qualità) . Da Wikipedia:

  

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

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

Prova a rilevare gli spazi vuoti anziché i cluster.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top