2016-07-21 10 views
0

Ich bin verwirrt über die OpenCV Kamera Kalibrierung Koordinatentransformation. Ich benutzen den Beispiel-Code zu meiner Kamera zu kalibrieren, und ich habe dieses Ergebnis:Kamerakoordinate zu Pixelkoordinate opencv

enter image description here

Wenn ich diese Kamera Matrix verwenden, ein Punkt im Kamerakoordinatensystem zu multiplizieren, sagt P = [50, 50, 1,35] , das Ausgabeergebnis ist zu groß, was unmöglich ist, eine Pixelkoordinate zu sein. Was ist hier falsch? Habe ich etwas verpasst ?

Das Bild ist 1920 x 1080. Dies ist die Schachbrett-Konfigurationsdatei Informationen:

enter image description here

+0

Es ist durchaus möglich, einen Punkt zu projizieren, der sich nicht im Bild befindet. Sie wählen ein Verhältnis zwischen X und Z (oder Y und Z), das sehr groß ist. Es ist so, als würde ich einen Punkt projizieren, der 1,5 m von der Kamera in Z entfernt ist, aber 50 m entfernt in X und Y ... – Catree

+0

@Catree Ich verstehe nicht ganz, was du sagst: "Du wählst ein Verhältnis zwischen X und Z (oder Y und Z), das ist sehr groß. " – Johnnylin

+0

Dieser Beitrag erklärt sehr gut den Prozess http://stackoverflow.com/questions/12299870/computing-xy-coordinate-3d-from-image-point? rq = 1 – damianodamiano

Antwort

2

Sie im OpenCV documentation die verschiedenen Gleichungen für das perspektivische Projektion Modell finden, auch in den folgenden Bildern dargestellt (Danke an diese link).

Camera model

einen Punkt P=(X,Y,Z) im Kamerarahmen Fc, das in dem normalisierten Kamerarahmen Koordinate angenommen wird:

x' = X/Z 
y' = Y/Z 

und seine Projektion auf die Bildebene (keine Verzerrung vorausgesetzt):

u = fx * x' + cx 
v = fy * y' + cy 

Mit fx und fy die Brennweite in p ixel und cx, cy die Koordinate des Hauptpunkts im Bild.

In Ihrem Fall ist Ihr Z bei 1,35 von der Kamera entfernt, aber die 2 anderen Koordinaten sind viel zu weit im Vergleich zur Z-Koordinate.

Es gibt kein mathematisches Problem, nur ist Ihr Punkt P für Ihre Kamera nicht sichtbar.

+1

, was bedeutet, dass der Punkt außerhalb des Sichtfelds liegt. – Johnnylin

+0

Genau, Sie können auch das theoretische Sichtfeld berechnen, das Sie benötigen, und Sie sollten etwa 177 ° (2 * atan (50/1,35)) erhalten. – Catree