Kinect intrinsischen Parameter aus Feld-of-view
Microsoft besagen, dass der field of view-Winkel zum Kinect-43 ° vertikal und 57 horizontalen (anders hier) . In Anbetracht dieser, können wir die Berechnung der intrinsischen Parameter, d.h. Brennpunkt und Zentrum der Projektion? Ich nehme an, Zentrum der Projektion gegeben werden kann als (0,0,0)?
Dank
EDIT: ein paar mehr Informationen über das, was ich versuche zu tun,
Ich habe einen Datensatz von Bildern, aufgezeichnet mit Kinect, ich bin versucht zu konvertieren von pixel-Positionen (x_screen,y_screen und z_world (in mm)) in der realen Welt-Koordinaten.
Wenn ich weiß, die Kamera ist platziert am Punkt (x',y',z') in der realen Welt-Koordinaten-system, ist es ausreichend zu finden, der realen Welt-Koordinaten, indem Sie Folgendes tun:
x_world = (x_screen - c_x) * z_world /f_x
y_world = (y_screen - c_y) * z_world /f_y
wo c_x = x'
und c_y = y'
und f_x, f_y
ist die Brennweite? Und auch wie ich finde die Brennweite gegeben nur das wissen aus dem Blickfeld?
Dank
danke, ich werde es einmal versuchen
InformationsquelleAutor Aly | 2013-07-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie gleichzusetzen mit den weltursprung (0,0,0) mit dem Kamera-Fokus (Mittelpunkt der Projektion, wie du es nennst) und Sie übernehmen die Kamera zeigt entlang der positiven z-Achse, dann sieht die situation wie diese in der Ebene x=0:
Hier werden die Achsen in z-Richtung (horizontal) und y (vertikal). Das tiefgestellte
v
ist für "viewport" oder Bildschirm, undw
ist für die Welt.Wenn ich Ihren Sinn richtig, Sie wissen
h
die Bildschirm-Höhe in Pixel. Auchzw
,yv
undxv
. Sie möchten wissenyw
undxw
. Hinweis: diese Berechnung ist (0,0) in der Mitte des Viewports. Entsprechend anpassen und die üblichen Bildschirm-Koordinatensystem mit (0,0) in der linken oberen Ecke. Ein wenig trig:und ähnliche Dreiecke
Lösen:
Hinweis: dies setzt Voraus, der "Brennweite" der Kamera ist gleich in der x-Richtung. Es muss nicht sein. Für beste Genauigkeit in
xw
sollten Sie neu berechnen mitf = w /2 tan(57/2)
wow
ist der Bildschirm breit ist. Dies ist, weilf
ist nicht eine echte Brennweite. Es ist einfach eine Konstante der Wandlung. Wenn die Pixel der Kamera sind quadratisch und Optik keine Abbildungsfehler, diese beidenf
Berechnungen führen zum gleichen Ergebnis.NB: In einem gelöschten (unsachgemäße) Artikel die OP schien zu sagen, dass er nicht zw das ist bekannt, aber die Länge D der hypotenuse: Herkunft (xw,yw,zw). In diesem Fall nur beachten
zw = D * f /sqrt(xv² + yv² + f²)
(vorausgesetzt Kamera-Pixel sind quadratisch, einige Skalierung ist notwendig, wenn nicht). Sie können Sie wie oben beschrieben vorzugehen.525.5f
standardmäßig, während f = 480 / 2 / tan(43/2.) = 609.3 f. warum ist das so?Die angegebenen FOV Winkel sind wahrscheinlich falsch. Siehe zum Beispiel smeenk.com/kinect-field-of-view-comparison, wo die vertikale FOV gegeben ist, als von 48,6 Grad wie abgerufen von der SDK für ein richtiges Gerät. Dies ergibt eine Brennweite von 530.
Ich bin mehr verwirrt jetzt... die KinectSDK docs, sagt FOV wird
57 & 43
: msdn.microsoft.com/en-us/library/jj131033.aspx;, während Ihr link und ein weiterer bryancook.net/2014/02/... sagen Sie58.5 & 45.6 / 46.6
, bedeuten Sie den offiziellen M$ - Dokumente sind falsch?was mehr ist, die KinectSDK docs und bryancook.net/2014/02/... NICHT sagen, Bild und Tiefe FOVs auseinander, während smeenk.com/kinect-field-of-view-comparison hat, mit Farbe Bild FOV wird
62 x 48.6
, Tiefe FOV wird58.5 x 46.6
. Bedeutet das, dass der letztere Artikel ist genauer (aber eigentlich sehe ich es falsch, sagte die Tiefe Auflösung als 320x240)?Unser problem ist wir wissen nicht, was das Sichtfeld des Kinect-spec ist eigentlich Messen. Es könnte sein, absichtlich verringert, und zwar von der gesamten Kamera, fov, da die Parallaxe Berechnung der Tiefe funktioniert nicht rund um die Kanten der Kamera fov.
InformationsquelleAutor Gene
kann ich nicht kommentieren, da ich einen zu niedrigen Ruf.
Aber ich erinnere daran, dass die Kamera-Winkel der kinect nicht Allgemeinen die gleichen
wie in einem normale Foto-Kamera, aufgrund der video-stream-format und der sensor-chip. Deshalb ist die SDK zu erwähnen, 57 Grad und 43 Grad, beziehen sich auf den unterschiedlichen Grad der Auflösung für Höhe und Breite.
sendet es ein bitmap 320 x 240 Pixel und die Pixel beziehen sich auf
Z bekannt ist, den Winkel bekannt ist, so dass ich nehme Gesetz von sines bekommen Sie die richtigen stellen, dann https://en.wikipedia.org/wiki/Law_of_sines
InformationsquelleAutor user3800527