2017-01-09 1 views
0

Ich habe ein bekanntes Objekt (Quadrat) im 3D-Raum und ich kenne die genaue Position seiner Ecken *. Ich mache ein Foto des Objekts, und ich kann bereits genau identifizieren, welches Pixel auf dem Foto welcher Ecke des Quadrats entspricht. (Ich kenne auch die Sensorauflösung der Kamera und die Brennweite des Objektivs **).Wie wird die Kameraposition/-orientierung aus dem Bild eines bekannten Objekts berechnet?

Wie berechne ich die Position und Ausrichtung der Kamera? Ich möchte die Lösung in C# implementieren. Dies klingt wie eine eher einfache Matrix-Operation, die in 3D-Spiel-Engines die ganze Zeit verwendet wird, nur die umgekehrte Richtung ausführend. Ich hoffe es ist wirklich. :)

* Alle Informationen zur Position und Länge werden in [Meter] in einem lokalen Koordinatensystem ausgedrückt. Keine lat/lons werden verwendet.

** Die Brennweite wird nicht in 35-mm-Äquivalenten ausgedrückt, sondern durch die Breite und Höhe des Ansichtsfensters, das 1 m vom Brennpunkt entfernt ist.

Antwort

1

Der Begriff für das, was Sie versuchen, ist "Homographie".

Die OpenCV-Bibliothek bietet eine Vielzahl von Funktionen, dies zu erreichen - Sie können hier einige der Mathematik lesen Sie über:

http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html?highlight=findhomography

Insbesondere die findHomography Funktion eine Liste von Punktkorrespondenzen zwischen einem nutzen wird Beispielbild und ein Kamerabild, um eine Matrix für die Kameraposition zu berechnen.

Verwandte Themen