Frage

Ich schaute und schaute. Weiß jemand, wie Blobs von Aforge zu verfolgen? Ich weiß, sie haben es nicht implementiert, aber ich würde wirklich wegen des Restes des Codes verwende ich verwenden Aforge müssen. Ich sah einen Hinweis auf Kalman-Filter, aber ich brauche einige Implementierung und keine Theorien.

tnx, v.

War es hilfreich?

Lösung

Der AForge.NET BlobCounter wird die Blob Erkenntnis liefern, obwohl es ziemlich einfach ist und unterstützt nicht ‚kaputt‘ Blobs. Wenn Sie einige einfache Blob-Tracking implementieren möchten, ein paar Dinge, die Sie sich anschauen sollten:

  1. Wenn Sie Ihre Blobs gelegentlich fragmentiert ist, müssen Sie möglicherweise einige Clustering (die Suche nach Gruppen von Massenmitteln Stellen kleine Fragmente zu kombinieren) auszuführen, um eine gute Schätzung der Lage zu bekommen. Wenn mehrere Rahmen zu analysieren, erhöht dies die Wahrscheinlichkeit von Randbedingungen wie gebrochenen Blobs zu begegnen, so ist es wichtig zu berücksichtigen. Alternativ, wenn Sie über Bedingungen eine gute Kontrolle haben (wie zB Beleuchtung), dass ausreichend sein. Minor (nur wenige Pixel) Umbrüche können mit wiederholter Dilatation / Erosionsoperationen vor dem Blob Fund aufgelöst werden, obwohl dies kann auch Amplify Lärm und reduziert die Positionsgenauigkeit.

  2. Für die eigentliche Tracking, haben Sie ein paar Ansätze. Kalman-Filterung können Sie geben sehr gute Genauigkeit (Sub-Pixel), wie es Informationen aus mehreren Frames integriert. Wenn Sie nicht über das Niveau der Genauigkeit benötigen, können Sie einen sehr einfachen Algorithmus betrachten, wie immer die ausreichend großen Klecks Kommissionierung, die am nächsten an der letzten Position war. Dies funktioniert, wenn das Objekt nicht bewegt sich sehr schnell, und Sie haben nicht andere Blobs Aufspringen in der Nähe von Ihrem Objekt verfolgt. Wenn Sie eine bessere Analyse Leistung benötigen, können Sie auch die Geschwindigkeit aus den letzten beiden Frames in der Lage zu schätzen, und verwenden Sie die Region, die Sie haben zu prüfen, zu begrenzen, wenn für den Blob zu suchen.

  3. Wenn Sie ein Hochgeschwindigkeits-Objekt zu verfolgen, das wird ein bisschen schwieriger. Hier ist ein Fall, in dem Sie versuchen könnten, Blob-Befund mit Template-Matching zu kombinieren. Sie können eine Vorlage basierend auf dem Blob-Fund erstellen und die Vorlage gegen eine nachfolgende Blobs passen sie auf ihre Muster zu erzielen basiert und nicht nur ihre Größe / Lage. Dies erfordert, dass der Blob maßen konsistent im Laufe der Zeit auftreten, was bedeutet, dass die physische Form des Modells und Lichtverhältnisse müssen fest bleiben.


UPDATE als Antwort auf Ihre Frage:

haben nur ein paar Minuten am Morgen, so dass keine eigentlichen Code, aber die Grundidee ist folgende:

  1. Nur betrachten Blobs größer als eine konfigurierbare Größe (Sie werden wahrscheinlich diese empirisch zu bestimmen haben.)

  2. Bewahren Sie Informationen zu den letzten zwei Blob Orten gefunden und die Zeiten, zu denen sie abgetastet wurden. Nennen wir diese Vektoren in R2, p1 und p0, zu den Zeiten t1 und t0.

  3. Wenn Sie davon ausgehen, dass Geschwindigkeit langsam ändert, dann eine vorläufige Schätzung zum Zeitpunkt t2 des neuen Standort p2 = p1 + (t2-t1) * (p1-p0) / (t1-t0). Dies kann oder nicht eine gute Annahme sein kann, so dass Sie dies überprüfen wollen, werden von Ihrem Objekt unter dem geforderten Bereich von Bewegungen zu erfassen.

  4. Sie können optional diese Schätzung verwenden Ihre Blob Suchbereich zu einem Teilbild auf dem geschätzten Standort zentriert zu beschränken. Nachdem Sie den Blob finden, nehmen Sie die blob durchführen, die am nächsten an der geschätzten Position als neuen Standort Messung ist.

Ein Nebeneffekt der oben genannten ist, dass Sie mit der Schätzung funktionieren kann, wenn aus irgendeinem Grund, der Blob Fund während eines Rahmens ausfällt. Es ist gefährlich, diese Extrapolation zu lange zu ermöglichen, aber es kann Ihnen eine gewisse Toleranz für kleinere Rauschspitzen geben.

Sie können sich wahrscheinlich sehen, wie dies weiter Fortschritte könnte eine Schätzung der Beschleunigung aus den letzten Frames enthalten oder Geschwindigkeit / Beschleunigung von mehreren Frames besser zu extrapolieren eine wahrscheinliche Position für die nächste Probe zu integrieren. Sie könnten auch zu vertrauen beginnen, dass die Schätzung (mit akkumulierten Daten aus dem aktuellen und vorherigen Rahmen) genauer ist (und vielleicht genau) als die eigentliche Messung. Schließlich wickeln Sie mit so etwas wie den Kalman-Filter auf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top