Ich habe eine Bilderserie die ich in Numpy Arrays gesteckt habe. In den Bildern sind Objekte die ich Tracken möchte. Hier ein Beispiel visualisiert mit Matplotlib:
Die Segmentierung habe ich von scipy.ndimage.measurements.label erledigen lassen und dann noch den Schwerpunkt jedes Objektes bestimmt, der auf dem Plot als kleiner schwarzer Punkt zu sehen ist.
Da sich die Wolken gelegentlich verbinden oder aufspalten, bzw. unterschiedlich viele entstehen, ändert sich die Anzahl der Objekte über die Zeit.
Ich habe nun also am Ende eine List der Form:
Code: Alles auswählen
data = [
[(1, 1), (2, 3), (3, 5)],
[(1, 2), (2, 4), (3, 7), (1, 1)],
[(2, 4), (3, 7)]
]
* Ich nehme mir einen belibigen Punkt aus data[0]
* Bestimme Differenz data[1] - data[0][0], i im Bereich 0 bis len(data[1])
* Verschiebe data[1] um die ermittelten Differenzen ermittel die Übereinstimmung zu data[0]
* Nehme das beste Ergebniss
Es gibt natürlich viele Möglichkeiten der Opimierung: u.a. könnte man nur Schwerpunkte nehmen die in der Wolke der alten liegen usw. aber gibt es da nicht ein schönere Lösung?
Würdet ihr auch über die Schwerpunkte gehen?
Ideen? Vorschläge?
*edit* Bildlink geändert