Inhaltsverzeichnis:

DIY-3D-Scanner basierend auf strukturiertem Licht und Stereovision in Python-Sprache - Gunook
DIY-3D-Scanner basierend auf strukturiertem Licht und Stereovision in Python-Sprache - Gunook

Video: DIY-3D-Scanner basierend auf strukturiertem Licht und Stereovision in Python-Sprache - Gunook

Video: DIY-3D-Scanner basierend auf strukturiertem Licht und Stereovision in Python-Sprache - Gunook
Video: What is Application of computer vision? what is Related fields of computer vision? 2024, Juli
Anonim
DIY-3D-Scanner basierend auf strukturiertem Licht und Stereovision in Python-Sprache
DIY-3D-Scanner basierend auf strukturiertem Licht und Stereovision in Python-Sprache
DIY-3D-Scanner basierend auf strukturiertem Licht und Stereovision in Python-Sprache
DIY-3D-Scanner basierend auf strukturiertem Licht und Stereovision in Python-Sprache

Dieser 3D-Scanner wurde mit kostengünstigen konventionellen Artikeln wie Videoprojektoren und Webcams hergestellt. Ein 3D-Scanner mit strukturiertem Licht ist ein 3D-Scangerät zum Messen der dreidimensionalen Form eines Objekts mit projizierten Lichtmustern und einem Kamerasystem. Software wurde basierend auf strukturiertem Licht und Stereovision mit Python-Sprache entwickelt.

Die Projektion eines schmalen Lichtbandes auf eine dreidimensional geformte Oberfläche erzeugt eine Beleuchtungslinie, die aus anderen Perspektiven als der des Projektors verzerrt erscheint und für eine exakte geometrische Rekonstruktion der Oberflächenform verwendet werden kann. Horizontale und vertikale Lichtbänder werden auf die Objektoberfläche projiziert und dann von zwei Webcams erfasst.

Schritt 1: Einführung

Einführung
Einführung
Einführung
Einführung

Automatische 3D-Erfassungsgeräte (oft als 3D-Scanner bezeichnet) ermöglichen den kostengünstigen und zeiteffizienten Aufbau hochgenauer Modelle realer 3D-Objekte. Wir haben diese Technologie beim Scannen eines Spielzeugs experimentiert, um die Leistung zu beweisen. Spezifische Anforderungen sind: mittlere bis hohe Genauigkeit, einfache Bedienung, erschwingliche Kosten des Scangeräts, selbstregistrierte Erfassung von Form- und Farbdaten und schließlich Betriebssicherheit sowohl für den Bediener als auch für die gescannten Objekte. Entsprechend diesen Anforderungen haben wir einen kostengünstigen 3D-Scanner auf Basis von strukturiertem Licht entwickelt, der einen vielseitigen Ansatz mit farbigen Streifenmustern verfolgt. Wir stellen die Scannerarchitektur, die eingesetzten Softwaretechnologien und erste Ergebnisse ihres Einsatzes in einem Projekt zur 3D-Erfassung eines Spielzeugs vor.

Beim Design unseres Low-Cost-Scanners haben wir uns dafür entschieden, die Sendereinheit durch den Einsatz eines Videoprojektors zu realisieren. Der Grund war die Flexibilität dieses Geräts (das es ermöglicht, jede Art von Lichtmuster zu experimentieren) und seine breite Verfügbarkeit. Der Sensor kann entweder ein benutzerdefiniertes Gerät, eine standardmäßige digitale Fotokamera oder eine Webcam sein. es muss eine qualitativ hochwertige Farberfassung (d. h. die Erfassung eines hohen Dynamikbereichs) und möglicherweise eine hohe Auflösung unterstützen.

Schritt 2: Software

Software
Software

Die Python-Sprache wurde aus drei Gründen für die Programmierung verwendet: Erstens ist sie einfach zu erlernen und zu implementieren, zweitens können wir OPENCV für bildbezogene Routinen verwenden und drittens ist sie zwischen verschiedenen Betriebssystemen portabel, sodass Sie dieses Programm unter Windows, MAC und Linux verwenden können. Sie können die Software auch so konfigurieren, dass sie mit jeder Art von Kamera (Webcams, SLRs oder Industriekameras) oder Projektoren mit einer nativen Auflösung von 1024 x 768 verwendet werden kann. Es ist besser, Kameras mit mehr als der doppelten Auflösung zu verwenden. Ich habe die Leistung persönlich in drei verschiedenen Konfigurationen getestet, die erste mit zwei parallelen Microsoft-Webcam-Kinos und einem kleinen tragbaren Projektor, die zweite mit zwei Lifecam-Kino-Webcameras, die um 15 Grad zueinander gedreht wurden, und dem Infocus-Projektor, die letzte Konfiguration mit Logitech-Webcameras und Infocus-Projektor. Um die Punktwolke der Objektoberfläche zu erfassen, sollten wir fünf Schritte durchlaufen:

1. Projektion von Graumustern und Aufnahme von Bildern von zwei Kameras "SL3DS1.projcapt.py"

2. Verarbeitung der 42 Bilder jeder Kamera und Erfassungspunktcodes " SL3DS2.procimages.py"

2. Einstellen des Schwellenwerts zur Auswahl der Maskierung für zu bearbeitende Bereiche "SL3DS3.adjustthresh.py"

4. Suchen und speichern Sie ähnliche Punkte in jeder Kamera "SL3DS4.calcpxpy.py"

5 Berechnen Sie die X-, Y- und Z-Koordinaten der Punktwolke "SL3DS5.calcxyz.py"

Die Ausgabe ist eine PLY-Datei mit Koordinaten- und Farbinformationen von Punkten auf der Objektoberfläche. Sie können PLY-Dateien mit CAD-Software wie Autodesk-Produkten oder einer Open-Source-Software wie Meshlab öffnen.

www.autodesk.com/products/personal-design-a…

Python 2.7, OPENCV-Modul und NUMPY sollten installiert sein, um diese Python-Programme auszuführen. Auch für diese Software habe ich in TKINTER eine GUI entwickelt, die Sie in Schritt sechs mit zwei Beispieldatensätzen finden. Weitere Informationen zu diesem Thema finden Sie auf den folgenden Websites:

docs.opencv.org/modules/calib3d/doc/camera_…

docs.opencv.org/modules/highgui/doc/reading…

www.3dunderworld.org/software/

arxiv.org/pdf/1406.6595v1.pdf

mesh.brown.edu/byo3d/index.html

www.opticsinfobase.org/aop/fulltext.cfm?uri…

hera.inf-cv.uni-jena.de:6680/pdf/Brauer-Bur…

Schritt 3: Hardware-Setup

Hardware-Setup
Hardware-Setup
Hardware-Setup
Hardware-Setup
Hardware-Setup
Hardware-Setup
Hardware-Setup
Hardware-Setup

Hardware besteht aus:

1. Zwei Webcams (Logitech C920C)

2. Infocus LP330-Projektor

3. Kamera- und Beamerständer (aus 3 mm Acrylplatten und 6 mm HDF-Holz mit einem Laserschneider geschnitten)

Zwei Kameras und ein Projektor sollten an einen Computer mit zwei Videoausgängen wie ein Notebook-Computer angeschlossen werden und der Projektorbildschirm sollte als Erweiterung zum Haupt-Windows-Desktop konfiguriert werden. Hier sehen Sie Bilder von Kameras, Beamer und Stativ. Die schneidfertigen Zeichnungsdateien sind im SVG-Format angehängt.

Der Projektor ist ein Infocus LP330 (native Auflösung 1024X768) mit folgenden Spezifikationen. Helligkeit:650 Lumen Farblichtleistung:**Kontrast (Voll Ein/Aus):400:1 Auto Iris:Nein Native Auflösung:1024x768 Seitenverhältnis:4:3 (XGA) Videomodi:**Datenmodi:MAX 1024x768 Max. Leistung:200 Watt Spannung:100V - 240V Größe (cm) (HxBxT):6 x 22 x 25 Gewicht:2,2 kg Lampenlebensdauer (volle Leistung)::1.000 Stunden Lampentyp: UHPL Lampenleistung: 120 Watt Lampenanzahl: 1 Anzeigetyp: 2 cm DLP (1) Standard-Zoomobjektiv: 1,25:1 Fokus: Manuelle Projektionsentfernung (m): 1,5 - 30,5 Bildgröße (cm): 76 - 1971

Dieser Videoprojektor wird verwendet, um strukturierte Lichtmuster auf das zu scannende Objekt zu projizieren. Das strukturierte Muster besteht aus vertikalen und horizontalen weißen Lichtstreifen, die in einer Datei gespeichert werden und Webcams erfassen diese verzerrten Streifen.

Verwenden Sie vorzugsweise solche Kameras, die per Software steuerbar sind, da Sie Fokus, Helligkeit, Auflösung und Bildqualität anpassen müssen. Es ist möglich, DSLR-Kameras mit SDKs zu verwenden, die von jeder Marke bereitgestellt werden.

Montage und Tests wurden mit seiner Unterstützung im Kopenhagener Fablab durchgeführt.

Schritt 4: Experimentieren mit Scanner

Experimentieren mit Scanner
Experimentieren mit Scanner
Experimentieren mit Scanner
Experimentieren mit Scanner
Experimentieren mit Scanner
Experimentieren mit Scanner

Zum Testen des Systems wurde ein Fischspielzeug verwendet und Sie können das aufgenommene Bild sehen. Alle erfassten Dateien und auch die Ausgabepunktwolke sind in der angehängten Datei enthalten.

Sie können die PLY-Punktwolkendatei mit Meshlab öffnen:

meshlab.sourceforge.net/

Schritt 5: Einige andere Scanergebnisse

Einige andere Scan-Ergebnisse
Einige andere Scan-Ergebnisse
Einige andere Scan-Ergebnisse
Einige andere Scan-Ergebnisse
Einige andere Scan-Ergebnisse
Einige andere Scan-Ergebnisse
Einige andere Scan-Ergebnisse
Einige andere Scan-Ergebnisse

Hier sehen Sie einige menschliche Gesichtsscans und 3D-Scans einer Wand. Es gibt immer einige Ausreißer aufgrund von Reflexionen oder ungenauen Bildergebnissen.

Schritt 6: 3D-Scanner-GUI

3D-Scanner-GUI
3D-Scanner-GUI

Um die 3D-Scan-Software in diesem Schritt zu testen, füge ich zwei Datensätze hinzu, einer ist der Scan eines Fisches und der andere ist nur eine ebene Wand, um die Genauigkeit zu sehen. Öffnen Sie die ZIP-Dateien und führen Sie SL3DGUI.py aus. Für die Installation überprüfen Sie Schritt 2. Senden Sie hier eine Nachricht an meinen Posteingang für alle Quellcodes.

Um den 3D-Scan-Teil zu verwenden, müssen Sie zwei Kameras und einen Projektor installieren, aber für andere Teile klicken Sie einfach auf die Schaltfläche. Um die Beispieldaten zu testen, klicken Sie zuerst auf Prozess, dann auf Schwellenwert, Stereo-Match und schließlich auf Punktwolke. Installieren Sie Meshlab, um die Punktwolke anzuzeigen.

meshlab.sourceforge.net/

Empfohlen: