Cuprins:
- Pasul 1: Introducere
- Pasul 2: Software
- Pasul 3: Configurare hardware
- Pasul 4: Experimentarea cu scanerul
- Pasul 5: Alte rezultate ale scanării
- Pasul 6: Scanner 3D GUI
Video: Scanner 3D DIY bazat pe lumină structurată și viziune stereo în limbaj Python: 6 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
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
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
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
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
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
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
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:
FuseLight: Transformați lumina de tub vechi / topită în lumina de studio / petrecere: 3 pași (cu imagini)
FuseLight: Transformă vechiul / Fused Tubelight în Studio / Party Light: Aici am transformat un Fused Tubelight într-o lumină Studio / Part folosind câteva instrumente de bază, lumini RGB și imprimare 3D. Datorită benzilor cu LED RGB utilizate putem avea mai multe culori și nuanțe
Lumină de bicicletă foarte strălucitoare folosind PCB-uri personalizate cu panou de lumină: 8 pași (cu imagini)
Lumină de bicicletă foarte strălucitoare folosind PCB-uri personalizate cu panou de lumină: dacă dețineți o bicicletă, atunci știți cât de neplăcute pot fi gropile pe anvelope și pe corp. M-am săturat să-mi suflu anvelopele, așa că am decis să-mi proiectez propriul panou led cu intenția de a-l folosi ca lumină pentru bicicletă. Unul care se concentrează pe a fi E
Generator de muzică bazat pe vreme (Generator Midi bazat pe ESP8266): 4 pași (cu imagini)
Generator de muzică bazat pe vreme (Generator midi bazat pe ESP8266): Bună, astăzi vă voi explica cum să vă creați propriul generator de muzică bazat pe vreme. Se bazează pe un ESP8266, care este un fel ca un Arduino și răspunde la temperatură, ploaie și intensitatea luminii. Nu vă așteptați să producă melodii întregi sau programe de acord
Trageți de lumină - Modul de lumină folosind comutatorul Neopixel & Pull Up: 6 pași (cu imagini)
Pull the Light - Modulul de lumină utilizând comutatorul Neopixel & Pull Up: Caracteristici ale modulului de lumină Arduino Uno Hardware & incintă achiziționată de pe internet Neopixel & Alimentare cu energie împrumutată de la Școala de Informatică & Proiectare produs Modul luminos controlat de sursa de alimentare Toate funcțiile controlate prin
Comutator de lumină controlat de la distanță Bluetooth - Modernizare. Comutatorul de lumină funcționează, fără scriere suplimentară: 9 pași (cu imagini)
Comutator de lumină controlat de la distanță Bluetooth - Modernizare. Comutatorul de lumină funcționează în continuare, fără scriere suplimentară.: Actualizare 25 noiembrie 2017 - Pentru o versiune de mare putere a acestui proiect care poate controla kilowați de încărcare, consultați Modificarea controlului BLE la încărcări de putere mare - nu este necesară o conexiune suplimentară Actualizare 15 noiembrie 2017 - Unele plăci BLE / software stivuiesc