Jemand mit Entwicklung von DIY-3D-Scannern?

Hallo,

hat’s hier jemanden mit praktischen Erfahrungen (oder auch Interesse) im Bereich 3D-Scannen mit Kamera und Laserlinie oder “Licht-Mustern”?

Ich denke an sowas wie den DavidLaserscanner,den ich ganz zu Beginn noch mit einem Linienlaser verwendet hatte und später mit den auf “Muster-Projektor” umgebauten Casio-DLP-Beamern.

Konkret geht es mir um eine Kombination von Galvo-Lasern mit einer Kamera neben dem Galvokopf.

Der Galvo kann enorm schnell jeden Punkt der Oberfläche beleuchten … und eine Kamera entsprechend den Versatz für die Triangulationsberechnung aufnehmen.

Neben den “normalen” Galvos aus der Materialbearbeitung (und auch ein paar aus dem Lasershow-Bereich) habe ich auch einen telezentrischen “Mikro”-Galvo mit 6x6mm Scanbereich und einer Laserspot-Größe von unter 10µm, was sich für eher kleine Objekte mit 3D-Detail-Auflösung von unter 10µm eignen würde … mit einem XY(Z) Positionierer unter dem Galvo lassen sich dann auch mit der “6x6mm-Optik” größere Flächen und Objekte abscannen.

Wenn schon jemand was in der Richtung macht oder hat, oder Interesse an einem Entwicklungsprojekt in der Richtung, könnte man sich ja etwas austauschen :smiling_face_with_sunglasses:

2 „Gefällt mir“

… hier ein Beispiel, wie ich mir sowas in der Praxis vorstelle:

Der Galvo-Laser ist schnell (und hell) genug, eine Laserlinie abzuscannen, so daß sie in der Kamera-Aufnahme auch als durchgehende Linie aufgenommen wird … nur, wegen des schrägen Anstellwinkels, nicht mehr als gerade Linie, sondern entsprechend des Höhenprofils der abgezeilten Oberfläche entsprechend “ausgebeult”, so daß aus der Abweichung der einzelnen Pixel die Z-Höhe berechnet werden kann.

Das Programm läßt also eine Linie scannen, nimmt die Abweichung auf, scannt die nächste benachbarte Linie, Bildaufnahme … nächste Linie+Aufnahme … u.s.w., u.s.f. … bis die komplette Fläche gescannt ist.

Die Pixel-Auflösung und Linien-Abstand kann um einiges kleiner sein, als der Spot-Durchmesser, weil das dann jeweils von der aufgenommenen Helligkeit interpoliert wird (bei der Bildverarbeitung sind 1/10-el Interpolationen üblich).

Bei meiner 110x110mm-Optik ist der Spot-Durchmesser um 35µm, bei der 6x6mm-”Mikro”-Optik um 8µm … das um z.B. 1/2 oder 1/3 interpoliert dann entsprechend höhere Auflösung.

Die Scangeschwindigkeit bei einer einfachen Linie kann bis 30m/s sein, was ausreicht, die Linie während der Bild-Aufnahme mehrfach auszubelichten, so daß in der AUfnahme eine saubere, durchgehende Linie ohne Fehler zu sehen sein dürfte.

Muß das mal aufbauen und ausprobieren - hier, in den Video vom Lasergravieren ab 0:43 ist das mit der “durchgenhenden Linie” schon bei viel langsameren Geschwindigkeiten zu sehen:

*** EDIT *** - eine Variante für stark glänzende/spiegelnde oder durchischtige Teile wäre z.B. die zu scannende 3D-Oberfläche vorher dünn mit schwarzem Lack einzusprühen, dann mit dem Laser eine dünne Line wegzgravieren und ein Bild aufzunehmen - dann wird praktisch die “freigelegte Kontur-Grenze” anstatt einer Linie ausgewertet … ist aber von der Bildverarbeitung her identisch …

2 „Gefällt mir“

DAVID wurde von HP eingekauft und dann eingestampft, bekommt man irgendwie nicht mehr.

Ich hatte mal was mit einem Revopoint pop2 gemacht, strukturiertes licht (einachsen-MEMS spiegel der eine linie quer scannt)

die ergebnisse waren jetzt nicht so toll und das tracking total mies.

.. lag aber auch an der nicht ausgereiften software

Photogrammetrie scheint noch am besten zu sein wenn das grundmaterial gut ist.

Ein LIDAR oder eine ToF kamera mit guter auflösung wäre wohl das beste, da gibt es ja ein paar interessante lösungen. zb intel realsense

1 „Gefällt mir“

Hallo VDX,

die Idee klingt interessant, vorallem gleich eine Linie pro Beleuchtung zu erzeugen.
Wenn man aber eine Linie mit einmal aufnehmen möchte wäre vielleicht ein Global Shutter interessant statt eines Rolling Shutter, damit alles ordentlich aufgenommen wird, wenn man die zeitlich integrierten Scans hat.
Das Messfeld wird wahrscheinlich auch kleiner , da wegen der Beschleunigung an den Umkehrpunkten der Galvos nicht gemessen werden kann da die Lichtdosis höher ist.

Ist aber ein spannender Ansatz , hätte auch Lust mich etwas intensiver damit zu beschäftigen

1 „Gefällt mir“

… mit Sven Molkenstruck, dem Entwickler von DavidLaserscanner hatte ich schon Kontakt, als die noch als Spin-Off von der Hochschule mit Laserlinie angefangen hatten … bin dann bis zur Version 3.3 mitgezogen und habe auch einiges an “Mitentwicklung” für die Beamer-Musterbild-Scannung und andere Vorschläge mit eingebracht … war echt schade, als sie von HP “geschluckt” wurden :roll_eyes:

Je nach gewünschter Detail-Auflösung ist die Kombination aus Optik/Scanbereich und Kamera-Optik essentiell … einige haben Optiken für 300x300mm (gibts bis 600x600mm) mit entsprechend größeren Spot-Durchmessern von 60-80µm … “typisch sind 110x110mm mit 40µm Spot … ich habe eine (telezentrische) 6x6mm-Optik mit um 8µm Spot … “Größer” geht immer, mit einem XY-Positionierer unter dem Galvokopf (oder der Galvokopf auch einer XY-CNC-Anlage).

Bin aktuell eher noch mit dem “Mikro-Schach” am Rummachen – werde aber nebenher auch ein paar Versuche in Richtung “Mikro-3D-Scanner” machen und dafür eine Kamera nebendran klemmen und ein paar Bilder/Videos machen, um zu sehen, wie präzise das auflöst :thinking:

* EDIT * – hier mal ein Beispiel für feinere Auflösung mit DavidLaserscanner und einer “Mini-Optik” (mal schauen, was in Richtung höhere Auflösung mit der 6x6mm-Mikro-Optik geht) :

1 „Gefällt mir“

Ich hatte schon mal vor, mir etwas zu bauen, aber aus Ermangelung von Galvos erst mal zurück gelegt.
Warum Kamera? Mit einem Fotodetektor kann man doch viel empfindlicher messen, weil man auch Filter verwenden kann, und man hat fast beliebig kleine Punkte. Also mehr wie LIDAR.

Andererseits wird monochromes Licht von bestimmten Oberflächen auch sehr gerne verschluckt, da wären zwei Laser (oder Weißlichtlaser) mit größerem Wellenlängenabstand vielleicht besser.

Was mich an der Technik aber auch noch stört, im Gegensatz zu Photogrammetrie ist, dass man Abschattungen hat. Man hat zwar eine “Höhenkarte”, aber man weiß nicht was “dahinter” ist. Dazu würde man dann wieder einen seitlichen Versatz benötigen.

Vielleicht würde es ja schon reichen, wenn man zwei Laser in kleinem Abstand auf die Galvospiegel richtet. Erstens hätte man die Möglichkeit die oben erwähnte unterschiedliche Absorption der Wellenlängen auszugleichen, und gleichzeitig hätte man auf der Projektionsfläche einen seitlichen Versatz, der dann geeignet ist, die Kanten und teilweise Hinterschneidungen zu erfassen.

Vor einem Monat hatte ich auch mal die Idee, Luftbewegungen in einem Raum durch so eine Technik zu erfassen. Wenn man davon ausgeht, dass z.B. die Zimmerwand oder die Gegenstände im Raum sich nicht bewegen. Wenn man dann trotzdem Bewegungsunterschiede zwischen mehreren Aufnahmen feststellen könnte, wäre das ein Hinweis auf unterschiedliche Luftdichten, also Wärme oder Luftströmung.
Falls man solche Aufnahmen genau genug machen könnte, wäre es theoretisch sogar möglich, teilweise hinter Gegenstände zu schauen. Ok, das ist mit der heutigen Technik vielleicht doch noch ein wenig zu abgefahren.

… warum Kamera? - damit könnte ich z.B. mit OpenCV über Bildverarbeitung relativ einfach was passendes zur Triangulation/Pixel-Versatz in Python, VB oder Cpp programmieren – Kameras und Objektive zur Auswertung habe ich mehr als genug da (hab jahrelang Mikroskop-Kameras und die Optiken dafür entwickelt).

Um keine Hinterschnitte zu haben, reicht es, das zu scannende Teil auf einen kleinen Drehteller zu legen und den in passenden Winkeln zu drehen (so habe ich das auch mit DavidLaserscanner gemacht) … kleine und mittlere Drehteller habe ich auch genug da :smiling_face_with_sunglasses:

Hier mal auf die Schnelle eine der Raspi-Kameras (ArduCam) mit USB3-Ausgang angesteckt und eins der Miniprogramme (5 Zeilen “aktiver” Code … 10 Zeilen für die Vorbereitung/Einrichtung) aus meinem “Mücken-Erkennungs-Projekt” gestartet - links ist das Kamera-Bild, mittig unten in Graustufen konvertiert, rechts “bewegte Konturen” gefunden und die erkannten Bereiche mit Mindest-Fläche im Originalbild rot markiert und mit der XY-Koordinate im Bild gekennzeichne … in einer Linie Pixel mit Versatz auszuwerten ist noch viel einfacher:

** EDIT ** - die “Bewegungserkennung” bzw. die weißen “Flecken” im rechten Bild ist hier einfach das Wackeln der freihändig über den Cent gehaltene Kamera und der Unterschied zum jeweils vorherigen Bild :smiling_face_with_sunglasses:

… übrigens, hier nochmal das gleiche Mini-Progrämmchen mit “echten Mücken”:

Es gab/gibt ja auch noch diese Prismenoptiken, die das Bild so teilen, dass zwei stereoskopische Bilder gleichzeitig abgebildet werden…

… sowas hatte ich mir für das “Mücken-Projekt” auch aufgebaut - 4 kleine Spiegel in Art eines “Periskops” arrangiert … dann aber doch fertige Stereo-Module von ArduCam mit 2 von den Raspi-Kameras in 40mm oder 80mm Abstand fixiert und dann beide Videos zu einem 60fps-Stream kombiniert - ich konnte wählen, ob über- oder nebeneinander.

Aber hier mal “zum Spaß” ein Video zu den 3 Bildern mit dem Cent, damit man sieht, was dabei in Echtzeit abgeht :upside_down_face:

Ich weiß ja nicht, wie weit du da gehen willst, das sind nur so meine Gedanken dazu…

Wir gehen oft von unserem menschlichen Vermögen aus, 3D mittels zweier Augen zu sehen. Aber unsere Augen sind nur horizontal angebracht. Oben und unten berechnet das Gehirn dazu. Bei einem 3D Scanner wäre somit eine “L”-Anordnung mit 3 Ausgangspunkten die bessere Wahl. Oder eine Art Kreisbewegung einer Kamera, bzw. einer Prismenoptik, die Bilder aus unterschiedlichen Richtungen liefern würde.

Was mich aber schon immer stört, bei all diesen Techniken ist, dass man irgendwelche mechanischen Ablenkungen benötigt. Entweder Galvos, oder Schrittmotoren etc.
Alles mit Trägheit und Verschleiß. ..
Gerade habe ich eine Idee, ob man nicht Fresnellinsen verwenden könnte. Ich weiß zwar nicht, ob man die speziell herstellen lassen könnte, aber mal überlegen…
Wenn man zwei Fresnelgeometrien auf eine Fresnellinse packen würde. Ein Bildpunkt käme dann immer an zwei Orten auf dem Sensor an. Anhand des Abstands dieser Positionen könnte man die Entfernung berechnen.

… für meine Mikromontage-Entwicklung hatte ich Anfang 2000auch einiges in Richtung “Stereoskopie” und “live-holografische” Video-Aufnahmen mit Linsenrastern gemacht - da geht einiges!

Eine ganz einfache “Steroskopie” mit einer einzigen Kamera geht mit einer Doppelloch-Blende – für erste Versuche habe ich einfach in eine Alu-Scheibe zwei kleine Löcher gefräst, schwarz eloxiert (damit nichts spiegelt) und dann vor ein Loch eine Rot- und vors andere Loch eine Cyan-farbene Folie aus diesen Rot/Grün- Rot/Cyan-Anaglyph-Brillen geklebt … geht aber auch mit LCD-Shuttern in den Löchern und synchron dazu vor dem Bilschirm oder Shutter-Brillen.

Hab’ noch eine Shutterbrille mit Kabel und 3 oder 4 mit IR-LED für die Synchronisation mit Pulssteuerung von einigen älteren Grafikkarten für die3D-Anzeige … könnte man aber auch selber was in der Richtung aufbauen, wenn die Bild-Wechselfrequenz bekannt ist oder von der Kamera vorgegeben wird.

Hier, diese Bildersequenz ist mit dem Testmuster davon aufgenommen - mit einer Rot-Grün- oder Rot-Cyan-Brille wird das “3-dimensional” :smiling_face_with_sunglasses:

1 „Gefällt mir“

Gute Idee mit den Löchern.
Das ist Stereoskopie für menschliches Auge und Gehirn.
Das was ich meinte ist, dass das 3D Scannen so gemacht werden sollte, dass man die Messdaten optimal mittels Programm auswerten kann. Bei zwei horizontalen Messpunkten hat man nur die horizontale Parallaxe (die das Auge gut aus Erfahrung auswerten kann) . Aber was ist mit oben und unten. Dazu benötigt man einen dritten Messpunkt. Das Auge/Gehirn macht das anders. Man kann kleinste Kopfnickbewegungen machen und dann kommt viel Erfahrung dazu. Wenn ich hier vor meinem Bildschirm sitze und die obere und die seitlichen Kanten betrachte, dann sehe ich einen stärkeren 3D Effekt an der seitlichen Kante. Die obere Kante wird mehr durch die Scharfstellung des Auges im Gehirn berechnet.

Jetzt ist halt die Frage, ob man mehrere Methoden in die Software- Auswertung fließen lassen will. Also Parallaxe (oben/unten/seitlich) zusammen mit Entfernung (zusätzlich fallen mir noch Fluchtlinien, also Kanten und Objekterkennung mittels KI ein) ?

… bei der telezentrischen Optik kommt der Strahl genau “senkrecht von Oben”, so daß bei einer schräge von der Seite draufschauenden Kamera jede “Abweichung” genau der jeweiligen Z-Höhe “über 0” entspricht.

So würde das mit der Laserlinie ausschauen - nur mit den 1064nm des Faserlasers und Spotgröße von um 8µm Durchmesser entsprechend dünnere Linie, als mit dem roten Pilotlaser (zeigt auch den Scanbereich der “Mikro-Galvo-Optik”):

Die Kamera würde dan nvon der Seite draufschauen und das Objekt auf einem kleinen Drehteller liegen, so daß es von jedem Winkel drumherum eingescannt werden kann.

Hier habe ich eine “Punktewolke” von einer kleinen Figur, die ich mal mit meinem Dentalscanner und Laserlinie eingescannt hatte:

Was möchtest du denn dann noch verbessern oder anders angehen?

Spontan fällt mir z.B. eine direkte Kopplung der Linie zur gerade gemessenen Objektgeometrie an. An “Steilwänden” wird man mit einer linearen Scanbewegung wahrscheinlich weniger Punkte erfassen als an einer zum Strahl parallelen Fläche. Also könnte man bei einer größeren Steigung automatisch die Punktdichte erhöhen. Geht das?

Weiterhin ist ein Drehteller auch “nur” eine horizontale Bewegung. Darum bewegt man die Kamera, wenn möglich, ja auch noch senkrecht.

… die “Punktdichte” ist abhängig vom Verhältnis der PWM-Frequenz gegen die Scangeschwindigkeit - mit dem roten Pilotlaser-Test hatte ich glaube 200kHz PWM gegen 2m/s Bewegung.

Angedacht ist vor Allem 3D-scannen von “flächigen” Objekten, wie z.B. offene Chips oder Münzen oder ähnliches mit kaum größeren Höhendifferenzen als 1-2mm.

Beim Dentalscanner mit der “senkrechten” Laserlinie (und zwei “Scheimpflug”-Kameras links/rechts der Laserlinie) habe ich einen Drehteller fürs zu scannende Teil und Linienlaser+2Kameras auf dem Schwenk-Arm … die XY-Position des Scan-Teils kann manuell verschoben werden und eine 3. Kamera mittig im Drehteller schaut von Unten auf die “Basis” des Teilehalters und identifiziert anhand eines Punkt-Musters die exakte Position und Winkel-Ausrichtung.

Evtl. setze ich den kleinen Drehteller auf eine Schwenkachse - das geht auch rein manuell mit z.B. 3 oder 4 Einstellungen … oder ich baue da eine motorische Kipp-Achse drunter - ist ja nicht für schwere Teile gedacht.

Für den Anfang reicht aber erstmal nur ein Drehteller :smiling_face_with_sunglasses: