Kinect & Co. als 3D-Scanner

Mit den Rohdaten aus einer günstigen Tiefenkamera wie der Kinect der ersten Generation berechnet spezialisierte Software raumfüllende farbige Punktwolken oder texturierte 3D-Objektmodelle – und die bekommt man zum Teil sogar kostenlos.

In Pocket speichern vorlesen Druckansicht 6 Kommentare lesen
Lesezeit: 14 Min.
Inhaltsverzeichnis

Als Microsoft im Jahr 2010 die erste Kinect auf den Markt brachte, sollte sie eigentlich nur die Bedienung der Spielkonsole Xbox revolutionieren: Der eingebaute 3D-Sensor erfasst Personen vor der Kamera plastisch, sodass sich Spiele durch Gesten steuern lassen. Das Talent der Kinect, räumlich zu sehen, faszinierte nicht nur Spieler, sondern forderte auch Hacker heraus: Schon bald bekam man im Netz einen Satz freier Treiber für die Kinect und die Karriere des Xbox-Gimmicks als konkurrenzlos günstigem 3D-Sensor begann. Bastler versorgten über die Kinect ihre Roboter mit 3D-Karten. Forscher ließen Chirurgen in experimentellen Operationssälen Röntgenaufnahmen über Wischgesten durchblättern. Bei einem Experiment half die Kinect gar Blinden, ihren Weg durch unbekannte Gebäude zu finden.

2011 hatte Microsoft mal wieder selbst die Nase vorn, als die firmeneigene Forschungsabteilung mit ihrem Projekt Kinect Fusion bewies, dass sich das Gerät auch als 3D-Scanner benutzen lässt: Aus den Tiefendaten, die es liefert, errechnet der angeschlossene Computer in Echtzeit ein 3D-Modell der Umgebung und erweitert und verfeinert dieses laufend, während jemand den Sensor freihändig durch den Raum schwenkt.

3D-Scanner gab es zwar schon vorher, die arbeiteten allerdings meistens mit Lasern und Spezialhardware. Die zweckentfremdete Kinect hingegen versprach 3D-Scans für alle: Plastische Schnappschüsse von angebotenen Schätzchen auf Web-Flohmärkten rückten ebenso in greifbare Nähe wie im Handumdrehen ohne Zollstock ermittelte Zimmerabmessungen. Gescannte Möbel, Gegenstände und Personen ließen sich nicht nur ins passende 3D-Format exportieren, konvertieren und in 3D-Spiele einbauen, sondern auch als Miniaturen auf dem 3D-Drucker vervielfältigen.

Microsofts Kinect Fusion Explorer war in der ersten veröffentlichten Fassung eher eine Technik-Demo für die Kinect-Entwicklerwerkzeuge als eine fertige Anwendung, ließ sich aber produktiv nutzen.

Kinect Fusion hatte nur einen Nachteil: Man kam über Jahre nicht an die Software heran – das änderte sich erst 2013 mit der seinerzeit veröffentlichen Version des Kinect-SDK. Die Lücke füllten bis dahin andere, die ebenfalls 3D-Scan-Xoftware für die Kinect und ähnliche Tiefenkameras entwickelten. Im Jahr 2013 gab es eine ganze Reihe davon, weshalb c't seinerzeit sieben interessante Windows-Programme für 3D-Scans mit Kinect getestet hat: Scenect und Skanect (nicht zu verwechseln), Kinect Fusion Explorer und ReconstructMe, Artec Studio, KScan3D sowie das Programm FabliTec 3D Scanner, eine spezialisierte Anwendung für 3D-Selfies.

Die Kinect der ersten Generation ist bis heute noch als Tiefenkamera in Gebrauch – dank ihrer großen Verbreitung, ihres guten Preis-Leistungs-Verhältnisses und weil es viel Software und Programmierwerkzeuge dafür gibt. In dieser Tiefenkamera steckt Sensortechnik vom Hersteller PrimeSense, die auch Asus in seine Xtion-Geräte einbaute. Ein verbesserter Sensor des Zulieferers war der Carmine 1.09, der aber nur schwer zu bekommen war – das einzige uns bekannte handelsübliche Gerät, das ihn an Bord hat, ist der Handscanner Cubify Sense von 3D-Systems.

Skanect führt den Anwender in fünf Schritten vom Scan zum Export, startet die Aufnahme mit wählbarer Zeitverzögerung und kann sie auch automatisch wieder beenden.

Im November 2013 übernahm dann Apple die Firma PrimeSense. Wenig verwunderlich griff Microsoft deshalb für die zweite Generation der Kinect auf andere Komponenten zurück, die noch dazu nach einem ganz anderen Verfahren arbeiten: Die 3D-Oberfläche des Zielobjekts wird hierbei nach der Time-of-Flight-Methode über die Laufzeit von reflektiertem Licht erfasst statt mit dem Lichtmusterverfahren der PrimeSense-Sensoren. Damit geht unter anderem eine deutlich höhere 3D-Auflösung einher.

Dennoch behandeln wir im weiteren Verlauf dieses Textes ausschließlich die Details und Einschränkungen von 3D-Scans, bei der eine Tiefenkamera mit PrimeSense-Technik zum Einsatz kommt, wie bei einer Kinect der ersten Generation oder einer Asus Xtion. Denn zum einen werden solche Geräte immer noch viel benutzt – zum Beispiel im Oktober 2015 für einen vorgeblichen "3D-Kunstraub" im Museum. Zum anderen unterstützt KScan3D als einzige der 2013 getesteten Anwendungen die neue Kinect. Durch deren gänzlich neue Sensortechnik bedeutet es für die Software-Hersteller viel Aufwand, ihre Programme daran anzupassen. Während mancher Hersteller deshalb offenbar die Entwicklung seiner Anwendung eingestellt hat, setzt etwa ReconstructMe verstärkt auf Intels RealSense-Technik als 3D-Sensor. Microsoft hingegen hat kürzlich selbst eine kostenlose 3D-Scan-App für seine aktuelle Kinect im Windows-10-Store veröffentlicht.

Um die Objekte vor sich plastisch zu erfassen, projizieren die Tiefenkameras mit einem Infrarot-Laser ein Punktmuster in den Raum. Gegenstände, Personen und Wände reflektieren diese Punkte. Ein Infrarotsensor in der Tiefenkamera registriert wiederum diese Reflexionen. Er sitzt um etwa 7,5 Zentimeter versetzt im Gehäuse und erfasst die Szene deshalb aus einem etwas anderen Winkel. Die Folge: Je näher sich ein Objekt an der Kamera befindet, desto stärker erscheinen die von ihm reflektierten Punkte verschoben. Die Software vergleicht das aufgenommene Punktmuster mit einem Referenzmuster, identifiziert die verschobenen Punkte und berechnet daraus die Tiefenkoordinaten – und zwar alles live.

Der Infrarotlaser (rot) zeichnet ein Punktmuster auf die Szene, das der weiter links sitzende Sensor aufnimmt (grün). Die Reflexionen von näher an der Kamera befindlichen Oberflächen erscheinen nach rechts verschoben.

Die fallen allerdings recht grob aus. Zum einen arbeitet der Infrarotsensor lediglich mit einer Auflösung von 320 × 240 Pixeln. Zum anderen schrumpfen die Verschiebungen mit wachsendem Abstand zum Gegenstand, was die Messung zusätzlich ungenau macht. Deshalb begnügt sich keine Scan-Software mit einem einzelnen 3D-Schnappschuss. Vielmehr kombinieren sie allesamt Serien von Aufnahmen aus leicht unterschiedlichen Blickwinkeln zu einem zusammenhängenden 3D-Modell.

Dafür muss der Software das Kunststück gelingen, aus den 3D-Daten aufeinanderfolgender Schnappschüsse die Bewegung der Tiefenkamera durch den Raum zu rekonstruieren und simultan die Punktkoordinaten einzelner Datensätze so aneinander auszurichten, dass sich die darin erfassten Formen möglichst widerspruchsfrei ergänzen. Dabei überlässt die Software die Hauptarbeit der Grafikkarte, weshalb die Hardware-Anforderungen der Anwendungen in diesem Punkt ziemlich hoch sind. Wenn es gut läuft, verfestigt und verfeinert sich aus vielen einzelnen 3D-Aufnahmen im Lauf eines Scans ein detailliertes Datenmodell des Objekts oder der Szene vor der Tiefenkamera.

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes Video (Kaltura Inc.) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Kaltura Inc.) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

Das klappt aber nur, wenn sich im Lauf des Scans nichts in der aufgenommenen Szene verändert, denn widersprüchliche Datensätze bringen die Software schnell aus dem Konzept. Möchte man beispielsweise eine Person dreidimensional erfassen, muss sie ihre Positur und auch ihren Gesichtsausdruck zwischen zehn Sekunden und ein paar Minuten lang unbewegt beibehalten können.

Beim 3D-Scannen muss auch der Anwender eine Menge gleichzeitig tun: Manuell führt er die Tiefenkamera durch den Raum oder um das Zielobjekt herum. Dabei hält er einerseits einen Mindestabstand von 40 Zentimetern ein, da die Sensoren auf kürzere Entfernungen nichts mehr registrieren. Andererseits behält er auch das Live-Bild auf dem Monitor im Auge, damit ihm das Zielobjekt nicht aus dem Blickfeld der Kamera rutscht – schließlich hat die Kinect keinen Sucher. Zusätzlich muss er darauf achten, sich langsam genug zu bewegen, damit die Software nicht den Faden verliert und er selbst nicht über das USB-Kabel stolpert, das den Sensor an den Rechner fesselt. Alles zusammen erfordert zumindest Übung, manchmal auch akrobatisches Talent. Hilfreich ist außerdem, wenn ein Helfer am Rechner die notwendigen Klicks für den Start und das Ende des Scanvorgangs übernimmt.

Bei kleinen Objekten ist es oft einfacher, den Spieß umzudrehen. Entscheidend ist ja nur, dass sich Kamera und Gegenstand relativ zueinander bewegen, und das ist auch der Fall, wenn man die Tiefenkamera an einem Ort fixiert und das Objekt beispielsweise auf einem motorisierten Drehteller rotieren lässt. Büsten von Zeitgenossen kann man auf ähnliche Weise mit Hilfe eines üblichen Bürodrehstuhls anfertigen – der FabliTec 3D Scanner wurde sogar speziell für dieses Szenario entwickelt.

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes Video (Kaltura Inc.) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Kaltura Inc.) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

Benutzt man einen Drehteller oder eine ähnliche Konstruktion, ist es wichtig, dass sich alles mitdreht, was der Tiefensensor erfasst. In der Praxis hilft es, die Umgebung des Drehtellers frei zu räumen, darauf einen eckigen Sockel etwa in Form eines stabilen Kartons zu setzen, und obendrauf schließlich die zu scannenden Gegenstände zu drapieren, damit der starre Boden unter dem Drehteller nicht mehr im Blickfeld der Tiefenkamera liegt. Über Entfernungsschwellwerte und Vorgaben, welches Raumvolumen die Anwendung erfassen soll, schränkt man dann den erfassten Bereich auf den oberen Teil des Kartons und dessen Garnierung ein.

Die obere Hälfte einer sitzenden Person hat die ideale Größe, um sie erfolgreich mit der Tiefenkamera zu scannen. Mit einer moderaten USB-Verlängerung (ein Repeater mit Hub-Funktion erwies sich im Test als praktisch) schafft man es mit einer Kinect gerade einmal um den Stuhl herum – bei größeren Objekten braucht man schon einen Helfer, der einem den Rechner hinterherträgt. Viel kleiner als ein Akkuschrauber sollte der Gegenstand aber auch nicht sein, da das Lichtmuster keine beliebig kleinen Details erfassen kann. Filigrane Brillengestelle beispielsweise verschwinden von ganz alleine aus gescannten Porträts.

Diese 3D-Scan-Szene ist zwar inszeniert, übertreibt aber nur ein bisschen: Die Kinect am USB-Kabel so durch den Raum zu führen, dass die Software auf dem Rechner nicht den Faden verliert, erfordert durchaus etwas Übung und manchmal etwas akrobatisches Geschick.

Kugeln oder Kegel sind schwierig zu scannen, denn sie sehen aus unterschiedlichen Blickwinkeln sehr ähnlich aus. Das macht es der Software schwer, auf die Bewegung der Tiefenkamera im Raum zu schließen. Man hilft ihr, indem man rings ums eigentliche Zielobjekt weitere markante Gegenstände verteilt, an denen sich der Algorithmus orientieren kann. Ein aufgeräumter Schreibtisch ist kniffliger zu scannen als ein unordentlicher. Die Software ReconstructMe greift bei großen, gleichförmigen Flächen inzwischen übrigens zu dem Trick, nicht nur die Form auszuwerten, um auf die Bewegung des Sensors im Raum zu schließen, sondern auch die Farbe oder Textur des gescannten Gegenstands.

Glänzende oder gar spiegelnde Oberflächen sowie Glas reflektieren das Punktmuster nicht wie gewünscht und bringen die Software durcheinander. Zu viel Sonnenlicht kann das Muster überstrahlen, auch direkte Infrarotstrahlung blendet den Sensor, etwa wenn man die Tiefenkamera auf eine Glühlampe richtet. Zu wenig Licht beeinträchtigt hingegen höchstens die Oberflächentexturen, nicht aber die Formerkennung: Theoretisch kann man über das Infrarot-Lichtmuster auch bei völliger Dunkelheit dreidimensional scannen.

Alle 3D-Scans können noch etwas manuellen Feinschliff vertragen – wie man die Rohdaten mit kostenloser Software nachpoliert und von störenden Hintergrundfragmenten freistellt, beschreibt der Online-Artikel "Datenmetz", ursprünglich erschienen in c't 18/12.

Beim ersten Scan mit der Tiefenkamera fällt den meisten noch die Kinnlade herunter. Im Alltag nutzt sich die Faszination allerdings schnell ab. Die Grenzen des Sensors treten deutlich zutage: Das USB-Kabel schränkt die Bewegungsfreiheit ein, die geringe Auflösung lässt kleine Gegenstände nach dem Scan wie aus zerfließendem Vanilleeis geformt erscheinen. Da hilft auch die millimeterfeine Voxel-Auflösung einiger Anwendungen nicht, denn wie beim Fotoapparat sagt die Auflösung noch lange nichts über die Schärfe und Genauigkeit der Wiedergabe aus.

Mal in Zahlen gesprochen: Der Tiefensensor der ersten Kinect hat eine Auflösung von 320 × 240 Pixeln, der Mindestabstand zwischen Sensor und Objekt beträgt mindestens 40 Zentimeter. Den Öffnungswinkel gibt Microsoft mit 57 Grad an. Daraus ergibt sich, dass sich beim minimalen Abstand zum Objekt die 320 Sensorpixel in der Breite auf etwa 43 Zentimeter verteilen, was rund 1,34 Millimeter pro Pixel entspricht. Details des Zielobjektes, die nur einen Millimeter groß sind, fallen so durch das Raster. Kommt man nicht ganz so dicht heran, steigt die minimale Größe für Details linear an, bei 1,2 Metern Abstand muss etwas schon mehr als 4 Millimeter groß sein, um dem Sensor überhaupt aufzufallen.

Zu Beginn des 3D-Scans mit der Kinect erscheint das 3D-Modell stellenweise grob – hier zum Beispiel ist die Oberfläche des Pullovers noch sehr rauh ...

Wäre das schon alles, müssten die 3D-Scans aus der Kinect allerdings so ähnlich aussehen wie Minecraft-Modelle: aus lautern Würfeln mit Kantenlänge ab einem guten Millimeter aufwärts zusammengesetzt. Das ist aber nicht so: Gemessen an der recht groben räumlichen Auflösung liefert die meiste 3D-Scan-Software für Kinect & Co. erstaunlich feine 3D-Modelle. Das liegt daran, dass diese laufend weitere Punktkoordinaten sammelt, während der Anwender den Sensor durch den Raum bewegt.

... beim Umkreisen verrechnet die Software das bisherige Scan-Ergebnis allerdings live mit den neu hinzugekommenen 3D-Daten ...

Jeder einzelne 3D-Schnappschuss unterliegt zwar dem Raster der beschränkten Auflösung, aber die Bewegung des Sensors durch den Raum zwischen den Momentaufnahmen ist diesem Raster nicht unterworfen. Aus der ständig wachsenden Punktwolke verdichtet die Software allmählich der 3D-Scan, indem sie Ausreißerpunkte identifiziert und Oberflächen dort verortet, wo sich viele Punkte ballen. Im Lauf des Scans glätten sich zunächst buckelig erfasste Flächen, Kanten treten schärfer hervor, die größeren Formen bilden sich präzise und sogar maßhaltig heraus.

... sodass am Ende der Scan die Realität deutlich genauer abbildet als zu Beginn.

Jedoch bliebt die Beschränkung im Detail durch die Sensorauflösung hart: Was nur einen guten Millimeter groß ist, erscheint im 3D-Scan mit der Kinect im schlechtesten Fall gar nicht und im besten als diffuse Pocke oder Delle im Objekt, auf keinen Fall aber erkennbar ausgeformt, wie oft man auch mit dem Sensor die Stelle virtuell abtastet. Erfasst der Sensor in einer 3D-Momentaufnahme mal eine signifikante Kante oder Ecke der winzigen Struktur, so kann sich diese Punktkoordinate dann aber doch nicht gegen die vielen anderen Messungen dicht drumherum durchsetzen, denen das Detail durch die Lappen gegangen ist. Eine ganz ähnliche Erfahrung haben wir auch bei Lichtschnitt-3D-Desktop-Scannern gemacht, bei denen man mehrere Scans eines Objekts in unterschiedlicher Lage kombinieren kann: Durch mehr Rohdaten, die in mehreren Durchgängen gesammelt werden, treten die großen Formen zunehmend genauer zu Tage, mehr Details bilden sich allerdings nicht mehr heraus.

Bereits im Jahr 2013 lautete das Fazit des c't-Tests, dass die Software nicht der limitierende Faktor für die Qualität der 3D-Scans sei, sondern die geringe Auflösung der PrimeSense-Sensoren, insbesondere weil man sich an die zu erfassenden Gegenstände nicht beliebig annähern kann. Es gab zwar Berichte über die Kombination eines kurzsichtigeren Carmine-1.09-Sensors mit einer handelsüblichen Lesebrille aus dem Drogeriemarkt, die erstaunlich mehr Details erfassen können sollte, Mainstream wurde das aber nie. Und auch wenn natürlich die Software seitdem Fortschritte gemacht hat, kann sie dennoch nicht zaubern. Bessere 3D-Scans wird es nur mit besserer Hardware geben – etwa mit Intels RealSense-Technik oder der Kinect der zweiten Generation.

Mehr Infos

Alternativen

Kinect & Co. sind nicht die einzigen Mittel, um günstig an 3D-Datenmodelle realer Gegenstände zu kommen. Gerade bei Objekten, die zu klein für die Auflösung der PrimeSense-Tiefenkameras sind, bietet sich das Lichtschnittverfahren an: Ein Laser zeichnet eine Linie auf das Zielobjekt, das sich langsam auf einem Teller dreht. Betrachtet man die Linie schräg von der Seite, erscheint sie je nach Form der Oberfläche verzerrt. Das schneidet wiederum eine Kamera mit, aus deren Bilddaten die Software nach einer kompletten 360-Grad-Drehung das 3D-Modell berechnet. Für Modelle beliebiger Größe – von der Haselnuss bis zum Straßenzug – eignet sich hingegen die Photogrammetrie. Hierbei rekonstruiert spezielle Software das 3D-Modell aus Fotoserien, die ein Objekt aus verschiedenen Blickwinkeln zeigen. Auch dafür gibt es kostenlose Angebote.

(pek)