Wie erstelle ich eine Vogelperspektive des Bildes auf eine gegebene Ebene?

9

Ich habe eine Ebene (Stützvektor und Normalvektor der Ebene), ein Bild, das von einer Kamera aufgenommen wurde, von der ich die intrinsischen Parameter (fx, fy, cx, cy) kenne. Wie bekomme ich die Umwandlung dieses Bildes in ein Vogelperspektiven-ähnliches Bild (so dass die Vogelperspektive kollinear zum normalen Vektor der Ebene ist). Ich bin verwirrt mit den Koordinatensystemen, die ich verwenden muss, einige Matrizen sind in Weltkoordinaten und einige in lokalen. Ich weiß, dass es in openCV warpPerspective() gibt, würde das den Job machen?

Ich verwende OpenCV: 2.4.9

Vielen Dank!

Aktualisierung: Muss ich 4 Punkte mit der Kamera normal berechnen, dann 4 Punkte aus der Vogelperspektive berechnen und sie an findHomography() übergeben, um die Transformationsmatrix zu erhalten?

Aktualisierung: Gelöst. Habe es geschafft zu arbeiten!

    
Sean M. 06.12.2014, 15:05
quelle

1 Antwort

2

Ein Rechteck auf der Weltebene erscheint als ein Viereck in Ihrem Bild.
In der Vogelperspektive soll es wieder als Rechteck erscheinen. Sie müssen mindestens das Seitenverhältnis dieses Welt-Rechtecks ​​kennen, damit die Draufsicht korrekt und gleichmäßig auf beiden Achsen skaliert wird.

Wenn Sie die vier quadratischen 2D-Punkte in Ihrem Bild und die Ecken des Zielrechtecks ​​(für die Sie im Wesentlichen die 2D-Koordinaten wählen) verwenden, können Sie die Homographie von Ihrem Viereck zu einem Rechteck berechnen und% co_de verwenden %, um es zu rendern.

Dies ist oft der einfachste Weg, dies zu tun.

Sie können auch die Kamera und die Matrizen selbst durchsuchen. Dazu müssen Sie die Kamera mit orthographischer Projektion über der Ebene drehen. Sehen Sie sich die Homografie-Dekomposition hier an.

    
Adi Shavit 08.12.2014 07:40
quelle

Tags und Links