| 3D Scanner selber machen |
|
|
| Mittwoch, 12. Januar 2011 um 09:09 | ||
|
Ich habe mir vor ein paar Jahren mal einen Linienlaser bei ebay ersteigert (ca. 5EUR) und damit ein wenig gespielt. Ich kam dabei auf die Idee, das es ja möglich sein müsste, die projizierte Linie mit einer Kamera aufzunehmen und anhand der Brechnung den Abstand zu Objekten zu errechnen. Die Überlegung diente in erster Linie der Kollisionserkennung im Rahmen der Robotik. Mit der gleichen Technik könnte man natürlich auch eine 3D-Umgebung berechnen. Und genau das macht die Software DAVID Laserscanner. Ich habe die Tage mal ein Billigst-Setup aufgebaut und mich im 3D-Scannen probiert.
Was man braucht
Das SetupIch habe mir zwei alte Schrankeinlegeböden (weiss) geschnappt und diese in einem rechten Winkel zueinander aufgestellt (sie sind wirklich nur hingestellt und in keiner Weise befestigt, sollte ja auch nur zum Testen sein).
Nun zur Webcam: Ich habe diese frontal vor den Kalibrierhintergrund gestellt und die
Nun folgt das Scannen: Ein Objekt vor die Webcam stellen und mit dem Linienlaser über das einzuscannende Objekt fahren. Der Winkel zwischen Kamera und Laser sollte möglichst groß sein. Dabei ist wichtig, das links und rechts vom Objekt auch noch der Kalibrierungshintergrund von der Laserlinie überstrichen wird. Es kommt hier nicht darauf an, das die Punkte des Musters sichtbar sind, sondern lediglich die Fläche. Im Gegenteil, beim Scannen sollte man das Licht ausschalten, um störende Reflexionen zu vermeiden. Die DAVID Software meldet SCAN-Probleme sofort (Winkel zu klein, fehlende Laserlinie links oder rechts vom Objekt usw.). Es hat sich bei mir gelohnt, die Exposure und Brightness der Kamera manuell einzustellen, um eine möglichst schmale Laserlinie auf dem Kamerabild zu erhalten. Das führt zu höherer Genauigkeit und Auflösung. Danach kann das eingescannte Objekt innerhalb der DAVID-Software auf seine Qualität in geprüft werden (3D-Ansicht). In der Freeware-Version der Software ist eine Bearbeitung der eingescannten Bildpunkte nicht möglich (leider auch nicht das Zusammensetzen mehrerer Scans mit Shapefusion).
Die Nachbearbeitung Am besten ist, man speichert nun das Ergebnis des Scans in einem .OBJ File, um es in anderer Software weiterzubearbeiten. Ich habe mich hierzu für MeshLab entschieden, eine Freeware zur Verarbeitung von Meshes. Anbei zwei Screenshots aus MeshLab von zwei Scans des Spielzeugelefanten meines Sohns inklusive Textur (auch die läßt sich original übernehmen aus einem Screenshot mit der David Software). Die OBJ-Dateien sind derzeit noch unbearbeitet.
Gerade am Scan der Vorderseite des Elefanten lassen sich die vielen Unterschneidungen im Kopf des Elefanten erkannen. Um eine komplette Abbildung des Elefanten zu erhalten, der sich aus allen Richtungen betrachten läßt. Müssen also weitere Scans erfolgen. Ich habe insgesamt acht Scans gemacht (und dabei den Elefanten immer ein Stück weiter gedreht). Beim Drehen des Objekts ist es völlig unerheblich, wo der Drehpunkt ist, solange nur der Hintergrund und die Position der Kamera nicht geändert werden. Wenn man die Vollversion von DAVID hat (die ca. 200EUR kostet), lassen sich diese einzelnen Scans nun in einem Programm namens Shapefusion zusammenführen. Soweit ich gelesen habe, soll das recht einfach und qualitativ hochwertig geschehen. Nun, ich habe 200EUR leider anders verplant und versuche mein Glück mit dem Ausrichten der einzelnen Meshes in MeshLab V.1.2.3. In dieser Version ist ein vielversprechendes Alignment-Feature hinzugekommen namens "Point Based Glueing". Unglücklicherweise hat sich herausgestellt, dass diese Methode des Ausrichten der einzelnen Meshes nicht das Optimum darstellt. Also entweder manuell ausrichten (das habe ich noch nicht versucht), oder doch die professionelle Version von DAVID nutzen (letzteres kommt für mich jedoch nicht in Frage). Mein Spielzeugelefant sieht nun so aus. Überhaupt nicht perfekt, aber die Ausbeute von zwei, drei Stunden "rumprobieren". Mit der Maus läßt sich Dumbo drehen, mit + und - kann gezoomt werden (Flash notwendig!).
|
||
| Aktualisiert ( Mittwoch, 12. Januar 2011 um 13:46 ) | ||




