2016-05-07 7 views
0

Ich habe ein 2D-Bild (Projektion) eines Quadrats im 3D-Raum. Ich weiß, dass dies ein perfektes Quadrat ist (90-Grad-Winkel und Seiten gleicher Länge).Square Homogene Koordinaten

Ich möchte in der Lage sein, einen Punkt auf der Projektion des Quadrats zu stoßen und die "echten" Koordinaten auf dem Quadrat zu finden. Wenn ich ein wenig im Internet gelesen habe, habe ich verstanden, dass diese als "homogene Koordinaten" des Punktes bezeichnet werden. (Ist das richtig?). Der Einfachheit halber nehmen Sie bitte an, dass die Kantenlänge des Quadrats jeweils 1 beträgt.

Nehmen Sie zur Vereinfachung an, dass die Kamera eine unverzerrte Lochkamera ist und dass ich sie bei Bedarf messen kann. Auch, dass die x, y Koordinaten auf der Kamera symmetrisch in der Länge sind.

Mein Programm ist, dass ich versuche, eine Schachfigur auf einem Schachbrett zu finden. Es ist leicht für mich, die Ecken des Boards zu erkennen und das Teil leicht zu finden. Ich versuche jedoch, die einzelnen Quadrate auf dem Board nicht zu erkennen.

enter image description here

+0

Nachschlagen Homographie Schätzung: https://en.wikipedia.org/wiki/Homography_(computer_vision), http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html ? highlight = findhomography # findhomography – Zaphod

Antwort

1

Ihre quad Vertices (u (i), v (i)) sind perspektivische Projektion quadratischen Vertices (x (i), y (i)). Um Koordinaten eines Punktes auf dem Quadrat zu finden, müssen Sie die Matrix der inversen perspektivischen Transformation unter Verwendung von vier Paaren von Punkten finden und diese Matrix auf gegebene Punktkoordinaten anwenden.
Paul Heckbert article zeigt die Mathematik dieses Prozesses.

Wahrscheinlich finden Sie fertige Bibliotheken für die Berechnung von persp. Matrix. C++ Variante: Agg2

+0

Wenn Sie bereits die Projektionsmatrix vom Quadrat zum Bildschirm haben, können Sie das invertieren, um die inverse Matrix zu erhalten, und dann den Klickpunkt in den Modellraum transformieren. Ansonsten benutze Heckberts Methode nach Agg2. –