3D-Scanner aus Industrie und Forschung tasten räumliche Objekte meist mit einer Laseroptik und Spezialkameras ab. Bei der Investition etlicher Tausend Euro muss der Einsatzzweck des Scanners entsprechend einträglich sein. Das Berliner Fraunhofer Heinrich-Hertz-Institut hat nun ein Verfahren entwickelt, das 3D-Scans binnen weniger Sekunden mit einem handelsüblichen Projektor und einer Digitalkamera erstellt.
Das für Gesichter optimierte Verfahren basiert auf dem so genannten Structured-Light-Prinzip. Es projiziert ein Farbstreifenmuster auf die Haut, das die Digitalkamera aufnimmt. Die räumliche Tiefe berechnet es aus der Verzerrung des aufgenommenen Musters. Als Resultat entsteht ein Drahtgitter, das 3D-Programme auch als solides, schattiertes Objekt darstellen. Dient ein Foto des gescannten Gesichts als Textur, entsteht ein realistisch wirkendes räumliches Modell (Abbildung 1), das sich anders als zweidimensionale Fotos jedoch animieren lässt.
Abbildung 1: Das Ergebnis des Scans ist ein räumliches Gitter (Mesh, links). 3D-Software schattiert das Gitter entweder (Mitte) oder überzieht es mit einer Foto-Textur (rechts).
Die Herausforderung bei dem von [1] und [2] inspirierten Verfahren besteht zum größten Teil darin, das Signalrauschen auszugleichen, das sich aus den schwankenden Reflexionseigenschaften der Haut, ungünstiger Beleuchtung und der Unvollkommenheit optischer Sensoren ergibt. Gelingt dies, steht ein Verfahren zur Verfügung, das gegenüber konventionellen Laserscans zwei Vorteile bietet: Es reicht eine einzelne Aufnahme mit der Digitalkamera, um es auch für bewegte Objekte einzusetzen. Außerdem funktioniert es kostengünstig mit Consumer-Hardware (Abbildung 2). Die wissenschaftlichen Details liefern [3] und [4].
Abbildung 2a und 2b: Um die räumliche Form des Gesichts zu ermitteln, reicht handelsübliche Hardware aus: Ein Projektor, der ein Muster auf das Gesicht des Probanden wirft, und eine hinreichend gut auflösende Digitalkamera, deren Bilder dann auszuwerten sind.
Abbildung 2a und 2b: Um die räumliche Form des Gesichts zu ermitteln, reicht handelsübliche Hardware aus: Ein Projektor, der ein Muster auf das Gesicht des Probanden wirft, und eine hinreichend gut auflösende Digitalkamera, deren Bilder dann auszuwerten sind.
Alles Linux - fast alles
Die Entwicklung des Systems fand vollständig unter Linux mit Hilfe von Tools wie dem G++-Compiler und Vim statt. Zum Testen und Simulieren verschiedener Algorithmen benutzten die Entwickler R, eine Computersprache für statistisches Rechnen [5]. Erste Prototypen implementierten sie mit der Computer-Vision-Bibliothek Vigra [6], die mit C++-Templates arbeitet. Mit dem C++-Cross-Plattform-Toolkit Fox [7] programmierten sie die grafische Oberfläche.
Dass die Entwicklung vollständig unter Linux stattfand, scheint dem fertigen System nichts zu nützen: Es lässt sich derzeit nur unter Windows betreiben, da der Treiber für die Softwaresteuerung der benutzten Kamera, einer Canon EOS 20D, nur für diese Plattform verfügbar ist.
Ein projiziertes Muster mit bestimmten Eigenschaften
Das Ziel beim 3D-Scan nach dem Structured-Light-Prinzip besteht darin, in der Aufnahme jeden auf das räumliche Profil projizierten Punkt seinem Ursprung zuzuordnen. Projiziert man im Extremfall nur einen Punkt, ist der natürlich leicht zu identifizieren. Dann wären allerdings sehr viele Aufnahmen nötig, um das ganze Gesicht abzutasten. (Das sehr zuverlässige Ein-Punkt-Verfahren nehmen Experimente gern als Referenz.) Im anderen Extrem bestrahlt ein Projektor jeden Punkt der Szene mit andersfarbigem Licht. Hier reicht theoretisch eine Aufnahme. Die große Zahl der benötigten Farben macht eine Zuordnung in der Praxis jedoch unmöglich.
Die hier vorgestellte Lösung wählt ein für den Einsatzzweck optimiertes Verfahren: Das projizierte Muster besteht aus horizontalen, farbigen Linien (Abbildung 3). Zwischen ihnen liegen unbeleuchtete Streifen. Um die Zuordnung der Farbstreifen zu erleichtern, kommen nur sieben Farben mit voll gesättigten RGB-Farbkanälen zum Einsatz: Die Grundfarben Rot, Grün und Blau, die Kombinationen zweier Grundfarben, Cyan, Magenta und Gelb, sowie Weiß, die Kombination aller drei Grundfarben.
Abbildung 3: Das projizierte Muster garantiert maximale Farbkontraste. Die Reihenfolge der nur sieben verschiedenen Farbstreifen ist auf möglichst seltene Wiederholung der Reihenfolge optimiert. Zwischen den Linien liegen jeweils unbeleuchtete Streifen.
Das Muster enthält also Streifen immer wiederkehrender Farben. Bei der Zuordnung von Ausgangsmuster und projizierter Linie hilft jedoch die Reihenfolge der Farben. Sie ist daher so gewählt, dass sie eine maximale Periode aufweist, die sieben Farben also möglichst selten in der gleichen Reihenfolge auftreten. Für ausreichenden Kontrast unterscheiden sich aufeinanderfolgende Streifen außerdem in mindestens zwei Farbkanälen.