Sommario:

Scanner 3D fai-da-te basato su luce strutturata e visione stereo in linguaggio Python: 6 passaggi (con immagini)
Scanner 3D fai-da-te basato su luce strutturata e visione stereo in linguaggio Python: 6 passaggi (con immagini)

Video: Scanner 3D fai-da-te basato su luce strutturata e visione stereo in linguaggio Python: 6 passaggi (con immagini)

Video: Scanner 3D fai-da-te basato su luce strutturata e visione stereo in linguaggio Python: 6 passaggi (con immagini)
Video: Leap Motion SDK 2024, Luglio
Anonim
Scanner 3D fai-da-te basato su luce strutturata e visione stereo in linguaggio Python
Scanner 3D fai-da-te basato su luce strutturata e visione stereo in linguaggio Python
Scanner 3D fai-da-te basato su luce strutturata e visione stereo in linguaggio Python
Scanner 3D fai-da-te basato su luce strutturata e visione stereo in linguaggio Python

Questo scanner 3D è stato realizzato utilizzando articoli convenzionali a basso costo come videoproiettore e webcam. Uno scanner 3D a luce strutturata è un dispositivo di scansione 3D per misurare la forma tridimensionale di un oggetto utilizzando modelli di luce proiettati e un sistema di telecamere. Il software è stato sviluppato sulla base della luce strutturata e della visione stereo con linguaggio Python.

La proiezione di una sottile fascia di luce su una superficie sagomata tridimensionale produce una linea di illuminazione che appare distorta da prospettive diverse da quella del proiettore e può essere utilizzata per un'esatta ricostruzione geometrica della forma della superficie. Le bande luminose orizzontali e verticali vengono proiettate sulla superficie dell'oggetto e poi catturate da due webcam.

Passaggio 1: Introduzione

introduzione
introduzione
introduzione
introduzione

I dispositivi di acquisizione 3D automatici (spesso chiamati scanner 3D) consentono di costruire modelli altamente accurati di oggetti 3D reali in modo economico e rapido. Abbiamo sperimentato questa tecnologia nella scansione di un giocattolo per dimostrare le prestazioni. Esigenze specifiche sono: precisione medio-alta, semplicità di utilizzo, costo contenuto del dispositivo di scansione, acquisizione autoregistrata dei dati di forma e colore, ed infine sicurezza operativa sia per l'operatore che per gli oggetti scansionati. In base a questi requisiti, abbiamo progettato uno scanner 3D a basso costo basato sulla luce strutturata che adotta un approccio versatile con motivo a strisce colorate. Presentiamo l'architettura dello scanner, le tecnologie software adottate e i primi risultati del suo utilizzo in un progetto riguardante l'acquisizione 3D di un giocattolo.

Nella progettazione del nostro scanner a basso costo, abbiamo scelto di implementare l'unità di emissione utilizzando un videoproiettore. Il motivo era la flessibilità di questo dispositivo (che consente di sperimentare qualsiasi tipo di schema luminoso) e la sua ampia disponibilità. Il sensore può essere un dispositivo personalizzato, una fotocamera digitale standard o una webcam. deve supportare la cattura del colore di alta qualità (cioè l'acquisizione di un'elevata gamma dinamica) e possibilmente con un'alta risoluzione.

Passaggio 2: software

Software
Software

Il linguaggio Python è stato utilizzato per la programmazione per tre motivi, uno è facile da imparare e implementare, due possiamo usare OPENCV per le routine relative alle immagini e tre è portabile tra diversi sistemi operativi in modo da poter utilizzare questo programma in Windows, MAC e Linux. È inoltre possibile configurare il software per l'utilizzo con qualsiasi tipo di telecamera (webcam, reflex o telecamere industriali) o proiettore con risoluzione nativa 1024X768. È meglio usare fotocamere con una risoluzione più che doppia. Ho testato personalmente le prestazioni in tre diverse configurazioni, la prima era con due webcam cinema Microsoft parallele e un piccolo proiettore portatile, la seconda era con due webcamera cinema lifecam ruotate di 15 gradi l'una verso l'altra e proiettore Infocus, l'ultima configurazione era con webcamera logitech e proiettore Infocus. Per catturare la nuvola di punti della superficie dell'oggetto dovremmo seguire cinque passaggi:

1. Proiezione di motivi grigi e acquisizione di immagini da due fotocamere "SL3DS1.projcapt.py"

2. Elaborazione delle 42 immagini di ciascuna telecamera e codici dei punti di acquisizione "SL3DS2.procimages.py"

2. Regolazione della soglia per selezionare il mascheramento per le aree da elaborare "SL3DS3.adjustthresh.py"

4. Trova e salva punti simili in ogni telecamera "SL3DS4.calcpxpy.py"

5 Calcola le coordinate X, Y e Z della nuvola di punti "SL3DS5.calcxyz.py"

L'output è un file PLY con coordinate e informazioni sul colore dei punti sulla superficie dell'oggetto. Puoi aprire i file PLY con software CAD come i prodotti Autodesk o un software open source come Meshlab.

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

Python 2.7, modulo OPENCV e NUMPY dovrebbero essere installati per eseguire questi programmi Python. Ho anche sviluppato una GUI per questo software in TKINTER che puoi trovare nel passaggio sei con due set di dati di esempio. È possibile trovare ulteriori informazioni su questo argomento sui seguenti siti Web:

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…

Passaggio 3: configurazione hardware

Configurazione hardware
Configurazione hardware
Configurazione hardware
Configurazione hardware
Configurazione hardware
Configurazione hardware
Configurazione hardware
Configurazione hardware

L'hardware è composto da:

1. Due webcam (Logitech C920C)

2. Proiettore Infocus LP330

3. Supporto per fotocamera e proiettore (realizzato con lastre acriliche da 3 mm e legno HDF da 6 mm tagliato con un laser cutter)

Due fotocamere e un proiettore devono essere collegati a un computer con due uscite video come un computer portatile e lo schermo del proiettore deve essere configurato come un'estensione del desktop principale di Windows. Qui puoi vedere le immagini delle fotocamere, del proiettore e del supporto. I file di disegno pronti per il taglio sono allegati in formato SVG.

Il proiettore è un Infocus LP330 (risoluzione nativa 1024X768) con le seguenti specifiche. Luminosità: 650 lumen Colour Light Output: ** Contrasto (Full On/Off): 400:1 Auto Iris: nessuna risoluzione nativa: 1024 x 768 Aspect Ratio: 4: 3 (XGA) Modalità video:** Modalità dati: MAX 1024 x 768 Potenza massima: 200 Watt Tensione: 100 V - 240 V Dimensioni (cm) (A x L x P): 6 x 22 x 25 Peso: 2,2 kg Durata della lampada (piena potenza): 1.000 ore Tipo di lampada:UHPPotenza lampada:120 Watt Quantità lampada:1 Tipo di display:2 cm DLP (1) Obiettivo zoom standard:1,25:1 Messa a fuoco:Manuale Distanza di proiezione (m): 1,5 - 30,5 Dimensioni immagine (cm):76 - 1971

Questo videoproiettore viene utilizzato per proiettare modelli di luce strutturata sull'oggetto da scansionare. Il modello strutturato è costituito da strisce luminose bianche verticali e orizzontali che vengono salvate su un file di dati e le webcam catturano quelle strisce distorte.

Utilizzare preferibilmente quelle telecamere che sono controllabili dal software perché è necessario regolare la messa a fuoco, la luminosità, la risoluzione e la qualità dell'immagine. È possibile utilizzare fotocamere DSLR con SDK forniti da ciascuna marca.

Assemblaggio e test sono stati condotti a Copenhagen Fablab con il suo supporto.

Passaggio 4: sperimentare con lo scanner

Sperimentare con lo scanner
Sperimentare con lo scanner
Sperimentare con lo scanner
Sperimentare con lo scanner
Sperimentare con lo scanner
Sperimentare con lo scanner

Per testare il sistema è stato utilizzato un giocattolo a forma di pesce e si può vedere l'immagine catturata. Tutti i file acquisiti e anche la nuvola di punti di output sono inclusi nel file allegato, puoi aprire il file della nuvola di punti PLY con Meshlab:

meshlab.sourceforge.net/

Passaggio 5: alcuni altri risultati di scansione

Alcuni altri risultati di scansione
Alcuni altri risultati di scansione
Alcuni altri risultati di scansione
Alcuni altri risultati di scansione
Alcuni altri risultati di scansione
Alcuni altri risultati di scansione
Alcuni altri risultati di scansione
Alcuni altri risultati di scansione

Qui puoi vedere alcune scansioni del volto umano e la scansione 3D di un muro. Ci sono sempre alcuni punti anomali dovuti a riflessi o risultati dell'immagine imprecisi.

Passaggio 6: GUI dello scanner 3D

GUI dello scanner 3D
GUI dello scanner 3D

Per testare il software di scansione 3D in questo passaggio aggiungo due set di dati, uno è la scansione di un pesce e l'altro è solo una parete piana per vederne l'accuratezza. Apri i file ZIP ed esegui SL3DGUI.py. Per l'installazione, controlla il passaggio 2. Invia un messaggio alla mia casella di posta qui per tutti i codici sorgente.

Per utilizzare la parte di scansione 3D è necessario installare due fotocamere e un proiettore, ma per altre parti è sufficiente fare clic sul pulsante. Per testare i dati di esempio, fare prima clic su processo, quindi su soglia, corrispondenza stereo e infine nuvola di punti. Installa Meshlab per vedere la nuvola di punti.

meshlab.sourceforge.net/

Consigliato: