2009-03-06 12 views
7

Jedermann kennt einen Algorithmus, der Bilder in Ereignisse gruppiert, die auf dem Datum basieren, an dem das Bild aufgenommen wurde. Offensichtlich kann ich nach dem Datum gruppieren, aber ich hätte gerne etwas raffinierteres, das in der Lage wäre, Bilder zu gruppieren, die sich über mehrere Tage erstrecken, basierend auf der Frequenz über einen bestimmten Zeitraum. Betrachten Sie die folgenden Gruppierungen:Algorithmus für das Clustering von Bildern basierend auf dem Aufnahmedatum

  • 1/2/2009 15 Fotos
  • 2009.01.03 20 Fotos
  • 2009.01.04 13 Fotos
  • 2009.01.05 19 Fotos
  • 2009.01.15 5 Fotos

Potenziell würden diese in zwei Gruppen eingeteilt werden:

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

Offensichtlich gibt es eine gewisse Toleranz sein (e), die eingerichtet werden müssen.

Gibt es eine gut etablierte Art und Weise, dies zu tun, anderenfalls erfinde ich meinen eigenen Top/Down-Ansatz?

+0

Hatten Sie eine Lösung, die gut funktioniert? Wenn ja, wären Sie in der Lage, Ihren Ansatz zu teilen? Ich bin dabei, an einem ähnlichen Problem zu arbeiten. – MahlerFive

Antwort

6

Sie können so ziemlich any standard clustering technique anwenden, es ist nur eine Frage der richtigen Definition der Abstandsfunktion. Wenn Sie Ihre Matrix von Entfernungen zwischen Ihren Fotos erstellen, sollten Sie eine Kombination aus räumlicher Entfernung zwischen Orten - falls Sie sie haben - und einem zeitlichen Abstand zwischen ihren Erstellungszeitmarken berücksichtigen. Normalise und legen Sie sie auf separate Dimensionen und Sie können sogar nur eine regelmäßige euklidische Distanz nehmen.

Viel Glück.

0

Gruppieren Sie einfach die Bilder, die an aufeinanderfolgenden Tagen (keine Tage, an denen keine Bilder aufgenommen wurden) zusammen aufgenommen wurden.

+0

rechts - das wäre der offensichtlichste Top/Down-Ansatz. –

0

Sie könnten versuchen, die Toleranz dynamisch zu berechnen, basierend darauf, wie viele oder wie groß (absolute oder%) Cluster Sie erstellen möchten.

0

Um eine sinnvolle Bündelung von Bildern nach Datum erhalten Sie folgendes benötigen:

1) Die Anzahl der Cluster sollte variabel sein und nicht von vornherein auf das Clustering

2) Der Durchmesser jedes fixiert Cluster sollte eine bestimmte Menge nicht überschreiten.

Der Clusteralgorithmus, der beide Anforderungen am besten erfüllt, ist QT (quality threshold) clustering algorithm. Aus Wikipedia:

QT (Qualitätsschwelle) Clustering (Heyer, Kruglyak, Yooseph, 1999) ist ein alternatives Verfahren zur Partitionierung Daten, für die Gen-Clustering erfunden. Es erfordert mehr Rechenleistung als k-bedeutet, aber erfordert nicht Angabe der Anzahl der Cluster a priori, und immer das gleiche Ergebnis, wenn mehrmals ausgeführt.

Obwohl es hauptsächlich für Gen-Clustering verwendet wird, denke ich, es würde sehr gut für das, was Sie brauchen, passen.

+0

Jede hierarchische Agglomerationstechnik teilt diese Eigenschaft. – Simon

+0

Warum denken Sie QT-Clustering ist besser? –

+0

hierarchische Agglomerationstechnik wird bei jeder Iteration naiv immer die nächsten zwei Punkt/Cluster-Paare zusammenführen. Da Sie nicht alle Cluster für jeden Punkt betrachten, könnten Sie mit schiefen Clustern enden. –

0

Versuchen Sie, die Lücken statt der Cluster zu erkennen.

Verwandte Themen