Finde die Geschwindigkeit des Fahrzeugs aus Bildern

8

Ich mache ein Projekt, um die Geschwindigkeit eines Fahrzeugs anhand von Bildern zu ermitteln. Wir nehmen diese Bilder aus dem Fahrzeug heraus. Wir werden ein Objekt aus dem 1. Bild als Referenz markieren. Unter Verwendung der Eigenschaften desselben Objekts im nächsten Bild müssen wir die Geschwindigkeit des sich bewegenden Fahrzeugs berechnen. Kann mir hier jemand helfen ??? Ich benutze Python opencv. Es ist mir gelungen, das markierte Pixel im 2. Bild mit der Optical-Flow-Methode zu finden. Kann mir jemand mit dem Rest helfen?

    
Rony Varghese 02.02.2011, 09:17
quelle

1 Antwort

10

Wenn Sie die Erfassungshäufigkeit kennen, müssen Sie nun den Abstand zwischen den aufeinanderfolgenden Positionen des Markers finden.

Um diese Entfernung zu finden, schlage ich vor, dass Sie die Pose des Markers für jedes Bild schätzen. Die "Pose" ist die Transformationsmatrix, die die Koordinaten eines Objekts relativ zu einer Kamera ausdrückt. Sobald Sie diese aufeinanderfolgenden Koordinaten haben, können Sie die Entfernung und dann die Geschwindigkeit berechnen.

Bei der Pose-Schätzung wird die Position und Orientierung eines bekannten 3D-Objekts relativ zu einer 2D-Kamera berechnet. Die resultierende Pose ist die Transformationsmatrix, die die Referenz des Objekts in der Referenz der Kamera beschreibt.

OpenCV implementiert einen Algorithmus zur Schätzung der Pose: Posit . Der Arzt sagt:

  

Gegeben einige 3D Punkte (in Objekt   Koordinatensystem) des Objekts, um   mindestens vier nicht-koplanare Punkte, ihre   entsprechende 2D Projektionen in der   Bild und die Brennweite des   Kamera, der Algorithmus ist dazu in der Lage   Schätze die Pose des Objekts.

Dies bedeutet:

  1. Sie müssen die Brennweite Ihrer Kamera kennen
  2. Sie müssen die Geometrie Ihres Markers kennen
  3. Sie müssen in der Lage sein, vier bekannte Punkte Ihres Markers im 2D-Bild zu finden

Sie müssen möglicherweise die Brennweite der Kamera mithilfe der von OpenCV bereitgestellten Kalibrierungsroutinen berechnen. Ich denke, Sie haben die zwei anderen erforderlichen Daten.

Bearbeiten:

%Vor%

Bearbeiten 2: (Antworten auf Kommentare)

  

"Wie hoch ist die Erfassungshäufigkeit?"

Die Berechnung der Geschwindigkeit Ihres Fahrzeugs entspricht der Berechnung der Geschwindigkeit des Markers. (Im ersten Fall ist die Referenz die an der Erde angebrachte Markierung, im zweiten Fall ist die Referenz die Kamera, die an dem Fahrzeug angebracht ist.) Dies wird durch die folgende Gleichung ausgedrückt:

%Vor%

Mit:

  • D die Entfernung [o1 o2]
  • o1 die Position des Markers zum Zeitpunkt t1
  • o2 die Position des Markers zum Zeitpunkt t2

Sie können die verstrichene Zeit entweder durch Extrahieren von t1 und t2 aus den Metadaten Ihrer Fotos oder aus der Erfassungshäufigkeit Ihres Bildverarbeitungsgeräts abrufen: t2-t1 = T = 1/F .

  

"Ist es nicht besser, einfache Dinge wie Poster zu markieren? Und wenn wir das tun, können wir das nicht als 2D-Objekt betrachten?"

Das ist mit dem Posit-Algorithmus nicht möglich (oder mit irgendeinem anderen Algorithmus zur Pose-Schätzung, soweit ich weiß): Er benötigt vier nicht-koplanare Punkte. Das heißt, Sie können kein 2D-Objekt wählen, das in einen 3D-Raum eingebettet ist. Sie müssen ein Objekt mit einer gewissen Tiefe auswählen.

Andererseits können Sie eine wirklich einfache Form verwenden, sofern es sich um ein Volume handelt. (Ein Würfel zum Beispiel.)

    
Julien-L 02.02.2011, 13:48
quelle