Forum: Mikrocontroller und Digitale Elektronik Kinect als Tiefensensor


von malek j. (soprano1983)


Lesenswert?

Hallo zusammen ,

Könnte mir jemanden vielleicht erklären , wie die Tiefe bei Kinect 
berechnet wird ?

ich bedanke mich im voraus

MFG

von hobbychemiker (Gast)


Lesenswert?

Das funktioniert mit Radar

von Dirk K. (d-k)


Lesenswert?

Die Kinect die mit der Xbox 360 benutzt wird beruht auf structured 
light/light coding.

Die Kinect die mit der Xbox One geliefert wird beruht auf time of 
flight.

von 132 (Gast)


Lesenswert?

hobbychemiker schrieb:
> Das funktioniert mit Radar

wer keine Ahnung hat einfach mal die ...... halten.


3D-Erfassungskomponenten
Das Interessanteste der Kinect ist die Erzeugung von Tiefendaten. Für 
die Erzeugung des 3D-Bildes wird bei der Kinect ein Infrarot-Projektor 
und eine Infrarot-Kamera verwendet. Strukturiertes Licht, als zu Grunde 
liegendes Prinzip, bildet das Kernstück der 3D-Raumerfassung. Der 
IR-Projektor sendet eine definierte Punkt-Matrix im Infrarotbereich in 
den Raum. Diese ist vom menschlichen Auge nicht wahrnehmbar. Die 
eingebaute IR-Kamera kann dieses Muster aufnehmen und weitergeben. 
Intern werden die IR-Kameradaten auf dem PS1080-A2-Chip des Herstellers 
PrimeSense in räumliche Koordinaten umgerechnet[5][6][7].
Infrarot-Projektor
Als IR-Projektor wird in der Kinect eine Laserdiode (λ=830 nm) der 
Laserklasse 1 verwendet[2][4]. Auch bei direktem Einfall ins Auge können 
somit keine Schäden auftreten[8]. Die Leistung des Lasers liegt 
gleichbleibend bei 60 mW. Um die Temperatur konstant zu halten wird ein 
Peltier-Element verwendet, welches sowohl kühlen als auch wärmen 
kann[9]. Das Muster für das strukturierte Licht wird durch eine 
"Lochschablone" (Diffusor) mit definiertem Muster erzeugt[10].
Infrarot-Kamera
Zur Aufnahme des IR-Punktgitters wird ein monochromer CMOS-Sensor 
verwendet. Dieser arbeitet mit einer Auflösung von 640x480 Bildpunkten 
bei einer Abtastfrequenz von 30Hz. Die hardwareseitig höhere Auflösung 
ist firmwareseitg beschränkt[10]. Der Datendurchsatz wird mit 11bit 
angegeben was einer Abstufung von 2048 (211) Stufen entspricht. Der 
Sensor hat einen Blickwinkel von 57° horizontal und 43° vertikal[2].
Strukturiertes Licht


Abb.3 IR-Aufnahme einer Wand beleuchtet mit strukturiertem Licht der 
Kinect und vorgestelltem Buch
Das der 3D Erfassung zu Grunde liegende Prinzip ist das des 
Strukturierten Lichtes. Ein ähnliches Funktionsprinzip wird bei der 
Lichtstreifenmessung verwendet. Bei der Kinect liegt der Messung kein 
Lichtstreifen sondern eine Lichtpunktewolke zu Grunde. Die Grundstruktur 
der Wolke ist definiert und bekannt[12]. Die Tiefe wird durch 
Triangulation gegen die bekannte Schablone berechnet. Dazu stehen 
IR-Projektor und Kamera in einem definierten Abstand zueinander. Trifft 
diese Wolke auf ein unebenes Objekt wird der Abstand der Punkte 
zueinander im Kameraabbild verändert. Durch diese Deformation der 
Punktwolke, zu sehen in Abb.2, lassen sich Tiefenabstände der Punkte 
zueinander triangulieren[13].
Farbkamera
Zusätzlich zur Tiefenkamera besitzt die Kinect einen Farbkamera zur 
Aufnahme von 2D-Farbbildern. Darin arbeitet ein Bayer-Sensor im 8 bit 
VGA-Bereich bei einer Auflösung von 640x480 Pixel[2]. Die technisch 
mögliche Auflösung von 1280x1024 kann bei 10Hz mit speziellen Treibern 
genutzt werden[14]. Diese Farbkamera kann zur gewöhnlichen Aufnahme vom 
2D Bildern genutzt werden, oder um die erzeugten 3D-Geometrien mit 
Texturen zu versehen.
Array-Mikrofone
Über den Kinect-Korpus sind insgesamt vier Mikrofone verteilt. Jedes 
Mikrofon arbeitet mit 16bit bei einer Samplerate von 16kHz[2]. Diese 
dienen dazu, Sprachbefehle einer Person vor der Kamera exakt zuzuordnen.

Distanz der Tiefenkamera


Abb.4 Messfehler der Tiefenmessung in Bezug zum Objektabstand
Im Spielkonsolenbetrieb gibt Microsoft die Entfernungen mit einem 
Bereich von 1,2m bis 3,5m an. [17]. Dieser Bereich ist primär für die 
Gestenerkennung an der Xbox360 gedacht. Mit den original Microsoft SDK 
-Treibern liegt der messbare Bereich zwischen 0,8 m und 4 m[2]. Mit 
anderen Treibern sind Erkennungsbereiche zwischen 0,6 m und 10 m 
realisierbar[18]. Geringere Entfernungen können wegen der resultierenden 
Paralaxe zwischen IR-Projekter und IR-Kamera nicht ohne zusätzliche 
Optik ermöglicht werden. Die höchste Tiefenerkennung der rohen 
Tiefendaten liegt mit 2mm bei einer Entfernung von 800mm[19][20]. Dies 
liegt sowohl an der Verteilung der Punktmatrix als auch an dem internen 
Umrechnungsalgorhythmus. Die Tiefenauflösung variiert mit der 
Entfernung. Abb.4 veranschaulicht das Verhältnis.
Auflösung der Tiefenkamera
Die USB-Bandbreitenbestimmungen der Xbox360 beschränken die maximale 
Auflösung an der Spielkonsole auf 320×240. Unter Verwendung der 
offiziellen Microsoft SDK- Treiber kann zwischen drei Auflösungen 
gewählt werden: 640×480, 320×240 und 80×60. Diese können alle bei einer 
Bildfrequenz von 30Hz betrieben werden. Bei einem Abstand vom 800mm 
ergibt sich aus den Blickwinkeln der Sensoren, 57° horizontal und 43° 
vertikal, ein Blickfeld von 870mm x 630mm. Bei der maximal möglichen 
Auflösung des Tiefensensors vom 640×480 ergibt sich somit ein maximal 
unterscheidbarer Abstand vom 1,4mm in der Horizontalen und 1,3mm in der 
Vertikalen[21]. Auch wenn die Auflösung des verbauten Sensors 1280×1024 
Pixel erkennen kann, scheint diese nach aktuellen Erkenntnissen 
firmwareseitig auf die genannte VGA-Auflösung beschränkt zu sein[22].


http://wiki.zimt.uni-siegen.de/fertigungsautomatisierung/index.php/Einsatzm%C3%B6glichkeiten_einer_3D-Kamera_in_der_Produktionstechnik_am_Beispiel_der_Kinect-Kamera#Aufbau_und_Funktionsweise

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.