2012-10-16 9 views
5

Ich lerne Kameramatrix Sachen. Ich wusste bereits, dass ich die Homographie der Kamera (3 * 3 Matrix) bekommen kann, indem ich vier Punkte in einer Ebene im Objektraum verwende. Ich möchte wissen, ob wir die Homographie mit vier Punkten nicht in einem Flugzeug bekommen können. Wenn ja, wie bekomme ich die Matrix? Welche Formeln sollte ich betrachten?Kamera Homographie

ich auch verwirrt Homografie mit einem anderen Konzept: Ich brauche nur drei Punkte wissen, ob ich von den Punkten konvertieren möge von einem zum anderen Koordinatensystem. Warum brauchen wir also vier Punkte in der Computerhomographie?

+0

Der vierte Punkt löst Mehrdeutigkeit Perspektive, wenn sie bei der Projektion der Punkte auf der Bildebene suchen. Eine Homografie Karten einer Ebene zur anderen, wenn Sie Ihre Punkte sind nicht in einer Ebene, die Sie nicht ein Homografie verwenden möchten. – Hammer

Antwort

1

Wenn Sie nur haben 4 Punkte - und sie sind nicht auf der gleichen Ebene - dann wird die Berechnung einer Homographie nicht funktionieren.

Wenn Sie eine Belastung von Punkten und 4 von ihnen auf einer Ebene liegen tun einige aber auch nicht, gibt es Filter, die Sie versuchen, verwenden können, um diejenigen zu entfernen, nicht auf einer Ebene liegen. Die von OpenCV implementierten Filter heißen RANSAC und LMeDs.

auch als Hammer in einem Kommentar unter Ihrer Frage sagt - Der vierte Punkt ist es Perspektive zu verstehen.

1

Homographie Karten Punkte 1. Auf Ebene zu Punkten auf einer anderen Ebene 2. Projektionen von Punkten in 3D (nicht obligatorisch auf der gleichen Ebene liegend) während einer reinen Kameradrehung oder Zoom.

Letzteres kann leicht wenn man sich die Strahlen, die Punkte verbinden aussieht überprüft werden, während Sensorebene dreht: grün sind zwei Sensorpositionen und schwarz ist ein 3D-Objekt camera rays maintain mapping between object and camera sensor

Da Homografie zwischen den Vorsprüngen und nicht zwischen Objekten in 3D ist es egal, was diese Projektionen darstellen. Aber das kann verwirrend sein, stimme ich zu. Zum Beispiel können Sie Ihre Kamera auf 3D-Szene (das ist nicht flach!), Dann drehen Sie Ihre Kamera und die beiden resultierenden Bilder der Szene werden durch Homographie bezogen werden. Dies ist übrigens eine Grundlage für Bildpanoramen.

Drei Punktkorrespondenzen, die Sie erwähnt haben, können zu einer Transformation namens Affine (tritt bei großen Zooms, wenn eine perspektivische Effekte verschwinden) oder zu einer starren Rotation und Translation im 3D-Raum gehören. Beide benötigen 3 Punktkorrespondenzen, wobei die erstere nur 2D-Punkte benötigt, während die letztere 3D-Punkte benötigt. Der letztere Fall hat 6DOF (3 für die Rotation und 3 für die Translation), während jede Entsprechung 2DOF, also 6/2 = 3 Entsprechungen liefert. Homographie hat 8 DOF, also sollte es 8/2 = 4 Entsprechungen geben;

Unten ist ein kleines Diagramm, das den Unterschied zwischen affiner und Homographen Transformation erklärt, wenn der ursprüngliche Platz nach vorne kippt. Im affinen Fall ist der perspektivische Effekt vernachlässigbar, dh die ferne Seite hat die gleiche Länge wie eine nahe Seite. Im Falle der Homographie ist die andere Seite kürzer. enter image description here

0

Homographie ist die Beziehung zwischen den beiden Ebenen und der Freiheitsgrad bei der Homographie-Transformation ist 7; Daher benötigen Sie mindestens 4 entsprechende Punkte.
4 Punkte geben Ihnen 4 Paare (x, y), daher können Sie 7 Variablen berechnen. Homografie ist homogines transfrom daher der (3,3) Wert in Homografie Matrix ist immer 1.
So Ihre erste Frage, die Sie Homografie mit 3 Punkten in der Ebene und 4. nicht auf der Ebene berechnen kann: es ist nicht möglich. Sie brauchen Projektion dieses Punktes auf der Ebene und dann können Sie die Homographie berechnen.
Ihre zweite Frage, wie man homography Matrix berechnet, können Sie die Implementierung von findHomography() in opencv sehen.