Nachdem Sie SIFT oder ORB in einem Frame berechnet haben, wie können Sie das Objekt in einem Video in Echtzeit verfolgen?

8

Grundsätzlich möchte ich ein Objekt erkennen und es dann in einem Video (Bild für Bild) verfolgen.

Ich kann es auf dem ersten Frame mit zum Beispiel ORB oder SIFT erkennen. Aber für die nächsten Frames (oder die nächsten XX Frames) möchte ich vermeiden, alle Keypoints (ORB oder SIFT) erneut zu berechnen, um sie wieder zu erkennen.

Wenn ich es in Echtzeit in Echtzeit verfolgen möchte, was kann ich tun?

    
dynamic 16.07.2012, 22:47
quelle

4 Antworten

7

Eine häufige Option ist die Verwendung eines Patchtrackers . Das bedeutet, dass Sie in einem Bereich von beispielsweise 8 Pixel um den vorherigen Frame-Schlüsselpunkt herum nach Schlüsselpunkten suchen. Sie können cv::matchTemplate() eines Bereichs ausführen, der den Schlüsselpunkt umgibt, anstatt SIFT zu verwenden.

Durch die Durchführung einer Pyramidensuche wird die Bildrate verbessert. Sie suchen zuerst auf einer niedrigeren Skala, wenn Sie den Schlüsselpunkt nicht finden, verdoppeln Sie die Skala.

Wenn der Patchtracker fehlschlägt, weil sich das Bild zu schnell bewegt, müssen Sie das System lediglich neu initialisieren, indem Sie SIFT erneut anwenden. Ich würde FAST anstelle von SIFT verwenden. Sie können SIFT für die Markierung verwenden und dann FAST, um Schlüsselpunkte in Echtzeit zu erkennen und SIFT-Deskriptoren zu erzeugen.

    
Jav_Rock 17.07.2012, 11:23
quelle
5

Das Erkennen und Verfolgen eines Objekts in einem Video ist ein sehr großes Thema, und die Art und Weise, wie Sie vorgehen, hängt stark von Ihrer Anwendung ab. Es gibt kein Wundermittel! Wenn Sie den Erkennungsteil erreichen, können Sie versuchen, mit der Wahrscheinlichkeit der Farbwahrnehmung (möglicherweise HSV-Farbraum) zu tracken, wenn das Objekt, das Sie verfolgen möchten, farbig ist, oder versuchen Sie den Vorlagenabgleich, oder .. Sie müssen genauer auf Ihre sein braucht.

    
Eric 16.07.2012 23:07
quelle
4

Sie können OpticalFlow für einfaches Tracking verwenden, hier sind die Schritte dazu ...

  1. Finden Sie die Ecken eines sich bewegenden Objekts mit dem Harris Corner Detector oder dem SIFT Feature Detector.

  2. Geben Sie diese Ecken und das vorherige Bild (in dem Sie die Ecken des zu verfolgenden Objekts gefunden haben) und das nächste Bild mit der Funktion opticalflow an, berechnet die Ecken des gleichen Objekts in den nächsten Bildern.

Hier sind die Links:

Link1

Link2

Code

HINWEIS: Wenn Sie Probleme wie die Handhabung von Okklusionen, die Verfolgung mehrerer Personen und dann OpticalFlow alleine lösen, können Sie Probleme nicht lösen. Dafür müssen Kalman-Filter oder Partikelfilter eingesetzt werden ...

    
G453 03.08.2012 18:19
quelle
0

Mit TLD oder CLM können Sie nahezu perfektes und Echtzeit-Tracking erreichen. Sobald Sie das Objekt von Interesse erkannt haben, verwenden Sie diese Bounding Box, um das Predator Tracking zu initiieren. Sie können über CMT hier finden Ссылка

und TLD hier Ссылка

    
Atul Patil 01.05.2017 18:42
quelle