Cuprins:

Scanner 3D DIY bazat pe lumină structurată și viziune stereo în limbaj Python: 6 pași (cu imagini)
Scanner 3D DIY bazat pe lumină structurată și viziune stereo în limbaj Python: 6 pași (cu imagini)

Video: Scanner 3D DIY bazat pe lumină structurată și viziune stereo în limbaj Python: 6 pași (cu imagini)

Video: Scanner 3D DIY bazat pe lumină structurată și viziune stereo în limbaj Python: 6 pași (cu imagini)
Video: Pe urmele unei civilizații antice? 🗿 Și dacă ne-am înșelat cu trecutul nostru? 2024, Noiembrie
Anonim
Scanner 3D DIY bazat pe lumină structurată și viziune stereo în limbaj Python
Scanner 3D DIY bazat pe lumină structurată și viziune stereo în limbaj Python
Scanner 3D DIY bazat pe lumină structurată și viziune stereo în limbaj Python
Scanner 3D DIY bazat pe lumină structurată și viziune stereo în limbaj Python

Acest scaner 3D a fost realizat folosind articole convenționale cu costuri reduse, cum ar fi proiector video și camere web. Un scaner 3D cu lumină structurată este un dispozitiv de scanare 3D pentru măsurarea formei tridimensionale a unui obiect folosind modele de lumină proiectate și un sistem de cameră. Software-ul a fost dezvoltat pe baza luminii structurate și a viziunii stereo cu limbaj python.

Proiectarea unei benzi înguste de lumină pe o suprafață tridimensională produce o linie de iluminare care apare distorsionată din alte perspective decât cea a proiectorului și poate fi utilizată pentru o reconstrucție geometrică exactă a formei suprafeței. Benzile de lumină orizontale și verticale sunt proiectate pe suprafața obiectului și apoi sunt capturate de două camere web.

Pasul 1: Introducere

Introducere
Introducere
Introducere
Introducere

Dispozitivele automate de achiziție 3D (adesea numite scanere 3D) permit construirea de modele extrem de precise de obiecte 3D reale într-un mod eficient din punct de vedere al costurilor și al timpului. Am experimentat această tehnologie prin scanarea unei jucării pentru a dovedi performanța. Nevoile specifice sunt: precizie medie-mare, ușor de utilizat, costuri accesibile ale dispozitivului de scanare, achiziționarea auto-înregistrată a datelor de formă și culoare și, în cele din urmă, siguranță operațională atât pentru operator, cât și pentru obiectele scanate. Conform acestor cerințe, am proiectat un scaner 3D cu costuri reduse bazat pe lumină structurată, care adoptă o abordare versatilă a modelului de bandă colorată. Vă prezentăm arhitectura scanerului, tehnologiile software adoptate și primele rezultate ale utilizării sale într-un proiect privind achiziția 3D a unei jucării.

În proiectarea scanerului nostru low-cost, am ales să implementăm unitatea emițătoare folosind un proiector video. Motivul a fost flexibilitatea acestui dispozitiv (care permite experimentarea oricărui tip de model de lumină) și disponibilitatea sa largă. Senzorul poate fi un dispozitiv personalizat, o cameră foto digitală standard sau o cameră web. trebuie să accepte captarea culorilor de înaltă calitate (adică achiziționarea unei game dinamice ridicate) și, eventual, cu rezoluție ridicată.

Pasul 2: Software

Software
Software

Limbajul Python a fost folosit pentru programare din trei motive, unul este ușor de învățat și implementat, două putem folosi OPENCV pentru rutine legate de imagini și trei este portabil între diferite sisteme de operare, astfel încât să puteți utiliza acest program în Windows, MAC și Linux. De asemenea, puteți configura software-ul pentru a fi utilizat cu orice tip de cameră (camere web, SLR-uri sau camere industriale) sau proiector cu rezoluție nativă 1024X768. Este mai bine să utilizați camere cu rezoluție de peste două ori. Am testat personal performanța în trei configurații diferite, prima a fost cu două webcam-uri Microsoft paralele și un mic proiector portabil, al doilea a fost cu două webcam-uri de cinema lifecam care s-au rotit 15 grade una față de alta și proiector Infocus, ultima configurație a fost cu webcam-uri logitech și proiector Infocus. Pentru a captura norul punctelor de pe suprafața obiectului ar trebui să parcurgem cinci pași:

1. Proiectarea modelelor gri și captarea imaginilor de pe două camere „SL3DS1.projcapt.py”

2. Prelucrarea celor 42 de imagini ale fiecărei camere și coduri puncte de captură „SL3DS2.procimages.py”

2. Reglarea pragului pentru a selecta mascare pentru zonele care urmează să fie procesate "SL3DS3.adjustthresh.py"

4. Găsiți și salvați puncte similare în fiecare cameră „SL3DS4.calcpxpy.py”

5 Calculați coordonatele X, Y și Z ale norului de punct „SL3DS5.calcxyz.py”

Ieșirea este un fișier PLY cu informații despre coordonate și culori despre punctele de pe suprafața obiectului. Puteți deschide fișiere PLY cu software CAD, cum ar fi produsele Autodesk sau un software open source precum Meshlab.

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

Python 2.7, modulul OPENCV și NUMPY ar trebui instalate pentru a rula aceste programe Python. De asemenea, am dezvoltat o interfață grafică pentru acest software în TKINTER pe care o puteți găsi în pasul șase cu două seturi de date eșantion. Puteți găsi informații suplimentare despre acest subiect pe următoarele site-uri 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…

Pasul 3: Configurare hardware

Configurare hardware
Configurare hardware
Configurare hardware
Configurare hardware
Configurare hardware
Configurare hardware
Configurare hardware
Configurare hardware

Hardware-ul constă din:

1. Două camere web (Logitech C920C)

2. Proiector Infocus LP330

3. Suport pentru cameră și proiector (realizat din plăci acrilice de 3 mm și lemn HDF de 6 mm tăiat cu un tăietor laser)

Două camere și proiector ar trebui să fie conectate la un computer cu două ieșiri video, cum ar fi un computer notebook, iar ecranul proiectorului ar trebui să fie configurat ca o extensie pentru desktop-ul Windows principal. Aici puteți vedea imagini de camere, proiector și stand. Fișierul de desen gata pentru tăiere este atașat în format SVG.

Proiectorul este un Infocus LP330 (rezoluție nativă 1024X768) cu următoarele specificații. Luminozitate: 650 lumeni Culoare ieșire lumină: ** Contrast (Pornit / Oprit complet): 400: 1 Iris automat: Nu Rezoluție nativă: 1024x768 Raport de aspect: 4: 3 (XGA) Moduri video: ** Moduri date: MAX 1024x768 Putere maximă: 200 wați Tensiune: 100V - 240V Dimensiune (cm) (HxWxD): 6 x 22 x 25 Greutate: 2,2 kg Durată de viață a lămpii (putere maximă): 1, 000 ore Tip lampă: UHPLată Putere: 120 wați Cantitate lampă: 1 Tip afișaj: 2 cm DLP (1) Zoom standard Obiectiv: 1,25: 1 Focus: Distanță de aruncare manuală (m): 1,5 - 30,5 Dimensiune imagine (cm): 76 - 1971

Acest videoproiector este utilizat pentru a proiecta modele de lumină structurate pe obiectul care urmează să fie scanat. Modelul structurat constă din benzi de lumină albă, verticale și orizontale, care sunt salvate într-un fișier de date, iar camerele web captează aceste benzi distorsionate.

Utilizați de preferință acele camere care pot fi controlate de software deoarece trebuie să reglați focalizarea, luminozitatea, rezoluția și calitatea imaginii. Este posibil să utilizați camere DSLR cu SDK-uri furnizate de fiecare marcă.

Asamblarea și testele au fost efectuate la Copenhaga Fablab cu sprijinul său.

Pasul 4: Experimentarea cu scanerul

Experimentarea cu scanerul
Experimentarea cu scanerul
Experimentarea cu scanerul
Experimentarea cu scanerul
Experimentarea cu scanerul
Experimentarea cu scanerul

Pentru testarea sistemului a fost folosită o jucărie de pește și puteți vedea imaginea capturată. Toate fișierele capturate și norul punctelor de ieșire sunt incluse în fișierul atașat, puteți deschide fișierul PLY cloud point cu Meshlab:

meshlab.sourceforge.net/

Pasul 5: Alte rezultate ale scanării

Alte rezultate ale scanării
Alte rezultate ale scanării
Alte rezultate ale scanării
Alte rezultate ale scanării
Alte rezultate ale scanării
Alte rezultate ale scanării
Alte rezultate ale scanării
Alte rezultate ale scanării

Aici puteți vedea câteva scanări ale feței umane și scanarea 3D a unui perete. Există întotdeauna unele puncte anterioare datorate reflexiilor sau rezultatelor imprecise ale imaginii.

Pasul 6: Scanner 3D GUI

GUI pentru scaner 3D
GUI pentru scaner 3D

Pentru testarea software-ului de scanare 3d în acest pas, adaug două seturi de date, unul este scanarea unui pește, iar altul este doar un perete plan pentru a vedea acuratețea acestuia. Deschideți fișierele ZIP și rulați SL3DGUI.py. Pentru instalare verificați pasul 2. Trimiteți mesajul în căsuța de e-mail aici pentru toate codurile sursă.

Pentru a utiliza o piesă de scanare 3D, trebuie să instalați două camere și proiector, dar pentru alte părți, faceți clic pe buton. Pentru testarea eșantionului de date, faceți clic mai întâi pe proces, apoi pe prag, potrivire stereo și, în final, nor de puncte. Instalați Meshlab pentru a vedea norul de puncte.

meshlab.sourceforge.net/

Recomandat: