2017-03-08 1 views
2

Mein Problem ist ziemlich einfach, aber ich habe Mühe, es richtig zu lösen.Kann ich mit Homographie Kamera-Bildpunkte auf den Boden (2D-Ebene) projizieren?

Ich habe eine Kamera mit Blick auf den Boden und ich kenne alle Parameter des Schusses. Mit einigen mathematischen Berechnungen konnte ich die 4 Punkte berechnen, die das Sichtfeld der Kamera definieren (die Koordinaten am Boden der Ecken jedes Bildes).

Jetzt, von den Koordinaten (x, y) eines Pixels des Bildes, würde ich gerne wissen, seine realen Koordinaten auf den Boden projiziert.

Ich dachte, dass Homographie der Weg zu gehen war, aber ich lese here und there, dass "Homographie ein Flugzeug von einer Kamera aus gesehen auf die gleiche Ebene von einem anderen gesehen" was ein etwas anderes Problem ist.

Was soll ich bitte verwenden?


Edit: Hier ist ein Beispiel.

Vor diesem Bild: Ground

Ich weiß alles über die Kamera, die das Bild aufgenommen hat (Höhe, Blickwinkel, Ausrichtung), so kann ich die Koordinaten der vier Ecken bildet sein Sichtfeld berechnen auf B. der Boden (in Zentimetern, relativ zur Kameraposition, im Uhrzeigersinn von oben links): (-300, 500), (300, 500), (100, 50), (-100, 50).

Wissen, dass die Koordinaten auf dem Bild des Grashalms (1750, 480) sind, wie kann ich seine tatsächlichen Koordinaten auf dem Boden wissen?

+0

Ist es möglich, ein Beispielbild zu sehen? Es scheint, dass die Homographie immer noch nützlich sein kann, weil die Ebene immer dieselbe ist, der Boden. – UJIN

+0

@UJIN Ich habe meine Frage mit einem Beispiel aktualisiert. – Delgan

+0

Es sollte möglich sein, die Koordinaten des Grases in der "projizierten" Ebene zu finden, aber ich kann jetzt meinen Kopf nicht darum herumwickeln. Ich werde es versuchen, sobald ich etwas Freizeit habe. Ich meine, Sie haben 4 Punkte in einem Koordinatensystem und 4 Punkte in einem anderen. Es sollte möglich sein, den 8-Punkt-Algorithmus zu verwenden, eine Homographie zu finden und dann Punkte von dem Foto auf den tatsächlichen Boden zu projizieren. Aber an dieser Stelle kann ich falsch liegen:/ – UJIN

Antwort

1

Wenn Sie alles über die Kamera wissen, meinen Sie, dass Sie das Kamera-FOV, die Rotation und die Translation in Bezug auf die Bodenebene haben? Dann ist es trivial, oder?

Schreiben Sie die Kameramatrix K = [[f, 0, w/2], [0, f, h/2], [0, 0, 1]]. Sei Q die 4x4-Rotations-Translationsmatrix vom Boden zur Kamera. Der einem gegebenen Pixel p = [u, v, 1] entsprechende Strahl ist r = inv (K) * p. Drücken Sie es in Weltkoordinaten als inv (Q) [r, 1] - inv (Q) [0,0,0,1], schneiden Sie sich mit der Grundebene und Sie sind fertig.

+0

Sollte für jemanden mit Bildverarbeitungshintergrund in der Tat trivial sein. Danke für die Antwort. – Delgan

Verwandte Themen