Frage

Ich habe angezeigt ein Bild auf dem Bildschirm, die über cvInitUndistortMap & cvRemap unverfälschte (mit done Kamerakalibrierung), und dem Benutzer klickt auf einem Feature im Bild. So ich die (u, v) Pixelkoordinaten des Merkmals, und ich habe auch die intrinsische Matrix und die Verzerrungsmatrix ist.

Was ich suche ist die Gleichung der 3D-Linie in der Kamera / Realweltkoordinaten, auf dem die Funktion muss der Benutzer liegen geklickt. Ich habe bereits den senkrechten Abstand zwischen der Bildebene der Kamera, und der Funktion, so dass ich mit der vorgenannten Gleichung kombinieren, um mir die (X, Y, Z) Koordinate des Merkmals im Raum.

Sounds leicht (inverse intrinsische Matrix oder so etwas?), Aber ich kann nicht Schritt-für-Schritt-Anweisungen überall finden. C ++ oder C # -Code bevorzugt.

War es hilfreich?

Lösung

Das ist ein bisschen alte Frage, aber immer noch für jemanden nützlich könnte. Alle Linien gehen durch den Punkt (0,0,0), so:

line.x0 = 0; line.y0 = 0; line.z0 = 0;

Richtungsvektor ist wie folgt: line.A = (u / fx) - (cx / fx); line.B = (v / fy) - (cy / fy); line.C = 1;

cx, cy, fx, fy sind Parameter von Kamera-Matrix. Die Gleichungen werden in "Learning OpenCV" Buch erklärt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top