OpenCV: 4 Kamera Vogelperspektive?

8

Ich habe ziemlich viele Probleme damit, darüber nachzudenken, wie man eine Vogelperspektive mit vier Kameras macht, so gesehen in Luxusautos . Hier ist das Original, das ich als Beispiel für diese Frage verwenden werde ...

Im Moment habe ich es so gemacht, dass das Bild mit .getPerspectiveTransform verzerrt wird, aber das ist nur für ein Bild.

Ich brauche offensichtlich vier und habe keine Ahnung, wie man diese Bilder zusammenfügt. Ich bin auch ahnungslos, wenn die Bilder so aussehen sollen. Hier ist der Code, den ich derzeit habe:

%Vor%

und hier ist das Endbild, das ich gerne haben möchte (Ein Freund, der mit Photoshop zusammengesetzt wurde) ...

    
user3818089 02.06.2016, 21:24
quelle

1 Antwort

4

Um die Transformation zu implementieren, müssen Sie auf die Funktion getPerspectiveTransform verweisen. Es dauert:

  • src: Koordinaten von Viereckscheitelpunkten im Quellbild.
  • dst: Koordinaten der entsprechenden Viereckscheitelpunkte im Zielbild.

    Ich denke, dass es kein einfaches Problem ist, "src" und "dst" zu definieren. Es benötigt einige Berechnungen basierend auf realen Daten und kann nicht alleine gelöst werden, nur durch einen Blick auf die Bilder.

Für mich ist die Schlüsselidee einen Plan der gewünschten Szene zu machen (wie er aussehen muss). Es sollte echte Daten verwenden wie:

  • die Entfernung zwischen Kameras
  • der Blickwinkel der Kameras
  • die Größe des Rechtecks ​​zwischen den Kameras (graues und weißes Gitter)

Dann können Sie einen guten Wert für die Entfernung E-F finden, abhängig von der Größe des "Ansichtsfensters Ihrer fiktiven Vogelsichtkamera". Danach ist dein Job fast fertig.

Der Parameter dst ist einfach eine skalierte Version des Rechtecks ​​ I J L K (für die obere Kamera). Abhängig von der Größe in Pixel des Ausgabebildes.

Der Parameter src sollte ein Rechteck in Ihrem Foto sein. Seine Breite füllt das gesamte Bild . Die Höhe muss aus der E-F gewollten Entfernung berechnet werden .

Sie können die Höhe des roten Rechtecks ​​auf zwei Arten berechnen. Entweder Sie platzieren "Marker" in der realen Szene (oder Sie versuchen, einige zu finden), um automatisch eine horizontale Linie zu finden. Oder Sie können versuchen, es als eine komplexe Funktion des Höhenwinkels Ihrer Kamera zu berechnen (aber ich möchte Sie beraten, ich denke, es scheint ziemlich kompliziert).

So hätte ich dieses Problem gelöst. Ich hoffe es hat geholfen:)

    
Alexis Clarembeau 10.06.2016, 20:51
quelle