martinbulinski.de

3D Scanner selber machen Drucken E-Mail
  
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

  • Einen Linienlaser (bei mir lag er rum, vermutlich aus einem alten Kassenscanner, 12V Anschluss, über die Leistung kann ich nicht sagen, ich gucke aber lieber nicht rein)
  • Eine Kamera (in meinem Falle wieder eine Billigstvariante, die auch rumlag: Eine alte PS2-USB-Webcam)
  • Einen Computer (ja, auch der ist im Haus)
  • Die Software DAVID Laserscanner
  • Einen rechtwinkligen Hintegrund (Zimmerecke, zwei Bretter o.ä.) sowie einige Kalibriermuster (sind Teil der DAVID Software)

 

Das Setup

Ich 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).

Ein Billig-Setup zum TestenBeide Bretter werden jeweils mit den ausgedruckten Kalibriermustern der David Software beklebt. Da ich gelesen habe, dass Papier anfängt zu wellen, wenn es lediglich mit Tesaband geklebt wird, habe ich mich für eine vollflächige Verklebung mit Holzleim entschieden. Dass beim Kleben leichte Blasen oder gar Falten entstehen, hat mich beunruhigt, aber wenn der Kleber abgetrocknet ist, spannt sich das Papier wieder.

Nun zur Webcam: Ich habe diese frontal vor den Kalibrierhintergrund gestellt und die Kalibrierung mit Hilfe der DAVID Software vorgenommen. Hier muss man ein wenig experimentieren. Bei meinen bisherigen Versuchen mussten die Kalibriermuster nahezu den gesamten Bereich des Kamerabildes einnehmen, damit es klappte. Dieser Umstand reduziert natürlich die mögliche Größe des einzuscannenden Bereichs. Man kann das Kalibriermuster natürlich auch auf A3 drucken und im DAVID Forum sieht man andere mögliche Konstruktionen (mit dieser Technik hat jemand ein komplettes Auto(!!!!) eingescannt, oder auch nur eine 1-EUR-Münze).

Nach dem Kalibrieren darf am Hintergrund und der Webcam nichts mehr verändert werden.

 

 

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.

Dumbo von vorn Dumbo von hinten

 

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 )
 
Benutzerbewertung: / 4
SchwachPerfekt 

Kommentar schreiben


Sicherheitscode
Aktualisieren

Anmeldung



Wer ist online

Wir haben 4 Gäste online