Kazalo:

DIY 3D skener na osnovi strukturirane svetlobe in stereo vida v jeziku Python: 6 korakov (s slikami)
DIY 3D skener na osnovi strukturirane svetlobe in stereo vida v jeziku Python: 6 korakov (s slikami)

Video: DIY 3D skener na osnovi strukturirane svetlobe in stereo vida v jeziku Python: 6 korakov (s slikami)

Video: DIY 3D skener na osnovi strukturirane svetlobe in stereo vida v jeziku Python: 6 korakov (s slikami)
Video: CS50 2015 - Week 9, continued 2024, November
Anonim
DIY 3D skener na osnovi strukturirane svetlobe in stereo vida v jeziku Python
DIY 3D skener na osnovi strukturirane svetlobe in stereo vida v jeziku Python
DIY 3D skener na osnovi strukturirane svetlobe in stereo vida v jeziku Python
DIY 3D skener na osnovi strukturirane svetlobe in stereo vida v jeziku Python

Ta 3D skener je bil izdelan z uporabo poceni običajnih predmetov, kot so video projektor in spletne kamere. 3D skener s strukturirano svetlobo je naprava za 3D skeniranje za merjenje tridimenzionalne oblike predmeta z uporabo projiciranih svetlobnih vzorcev in sistema kamere. Programska oprema je bila razvita na podlagi strukturirane svetlobe in stereo vida z jezikom python.

S projiciranjem ozkega svetlobnega pasu na tridimenzionalno oblikovano površino nastane črta osvetlitve, ki se zdi popačena z drugih vidikov, kot je projektor, in jo je mogoče uporabiti za natančno geometrijsko rekonstrukcijo oblike površine. Horizontalni in navpični svetlobni pasovi se projicirajo na površino predmeta in jih nato zajameta dve spletni kameri.

1. korak: Uvod

Uvod
Uvod
Uvod
Uvod

Samodejne naprave za pridobivanje 3D (pogosto imenovane 3D skenerji) omogočajo gradnjo zelo natančnih modelov resničnih 3D predmetov na stroškovno in časovno učinkovit način. To tehnologijo smo preizkusili pri skeniranju igrače, da bi dokazali učinkovitost. Posebne potrebe so: srednje visoka natančnost, enostavna uporaba, dostopni stroški naprave za skeniranje, samo registrirano pridobivanje podatkov o obliki in barvah ter nazadnje varnost pri obratovanju tako za operaterja kot za skenirane predmete. V skladu s temi zahtevami smo zasnovali poceni 3D skener na osnovi strukturirane svetlobe, ki sprejema vsestranski pristop barvnih črt. Predstavljamo arhitekturo optičnega bralnika, sprejete tehnologije programske opreme in prve rezultate njegove uporabe v projektu v zvezi s 3D nabavo igrače.

Pri zasnovi našega poceni optičnega bralnika smo se odločili za uporabo enote oddajnika z uporabo video projektorja. Razlog je bila prilagodljivost te naprave (ki omogoča eksperimentiranje z vsemi vrstami svetlobnih vzorcev) in široka razpoložljivost. Senzor je lahko naprava po meri, standardni digitalni fotoaparat ali spletna kamera. podpirati mora kakovostno zajemanje barv (tj. pridobivanje visokega dinamičnega obsega) in po možnosti z visoko ločljivostjo.

2. korak: Programska oprema

Programska oprema
Programska oprema

Jezik Python je bil uporabljen za programiranje iz treh razlogov, enega je enostavno naučiti in implementirati, dva lahko uporabimo OPENCV za rutine, povezane s sliko, trije pa je prenosljiv med različnimi operacijskimi sistemi, tako da lahko ta program uporabljate v oknih, MAC in Linuxu. Programsko opremo lahko konfigurirate tudi za uporabo s katerim koli fotoaparatom (spletnimi kamerami, SLR -ji ali industrijskimi kamerami) ali projektorjem z izvorno ločljivostjo 1024X768. Bolje je uporabljati kamere z ločljivostjo več kot dvakrat. Osebno sem preizkusil zmogljivost v treh različnih konfiguracijah, prva je bila z dvema vzporednima Microsoftovimi spletnimi kamerami in majhnim prenosnim projektorjem, druga je bila z dvema spletnima kamerama za življenjsko kamero, ki sta se vrteli 15 stopinj drug proti drugemu, in projektorjem Infocus, zadnja konfiguracija je bila s spletnimi kamerami Logitech in projektor Infocus. Za zajem oblaka točk na površini predmeta moramo iti skozi pet korakov:

1. Projiciranje sivih vzorcev in zajemanje slik iz dveh kamer "SL3DS1.projcapt.py"

2. Obdelava 42 slik vsake kamere in zajem kode točk "SL3DS2.procimages.py"

2. Prilagajanje praga za izbiro maskiranja za obdelana območja "SL3DS3.adjustthresh.py"

4. Poiščite in shranite podobne točke v vsaki kameri "SL3DS4.calcpxpy.py"

5 Izračunajte koordinate X, Y in Z oblaka točk "SL3DS5.calcxyz.py"

Izhod je datoteka PLY s podatki o koordinatah in barvah točk na površini predmeta. Datoteke PLY lahko odprete s programsko opremo CAD, kot so izdelki Autodesk, ali z odprtokodno programsko opremo, kot je Meshlab.

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

Za zagon teh programov Python je treba namestiti Python 2.7, modul OPENCV in NUMPY. Za to programsko opremo sem v TKINTERju razvil tudi grafični vmesnik, ki ga najdete v šestem koraku z dvema vzorčnima naboroma podatkov. Dodatne informacije o tej temi najdete na naslednjih spletnih mestih:

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…

3. korak: Namestitev strojne opreme

Namestitev strojne opreme
Namestitev strojne opreme
Namestitev strojne opreme
Namestitev strojne opreme
Namestitev strojne opreme
Namestitev strojne opreme
Namestitev strojne opreme
Namestitev strojne opreme

Strojno opremo sestavljajo:

1. Dve spletni kameri (Logitech C920C)

2. Projektor Infocus LP330

3. Stojalo za kamero in projektor (izdelano iz 3 mm akrilnih plošč in 6 mm HDF lesa, razrezanega z laserskim rezalnikom)

Dve kameri in projektor morata biti povezani z računalnikom z dvema video izhodoma, na primer prenosni računalnik, zaslon projektorja pa je treba nastaviti kot razširitev glavnega namizja Windows. Tu si lahko ogledate slike kamer, projektorja in stojala. Risbena datoteka, pripravljena za rezanje, je priložena v formatu SVG.

Projektor je Infocus LP330 (izvorna ločljivost 1024X768) z naslednjimi specifikacijami: Svetlost: 650 lumnov Barvna svetlobna moč: ** Kontrast (popolna vklop/izklop): 400: 1 Samodejna zaslonka: Brez izvorne ločljivosti: 1024x768 Razmerje: 4: 3 (XGA) Video načini: ** Podatkovni načini: MAX 1024x768 Največja moč: 200 W Napetost: 100V - 240V Velikost (cm) (VxŠxG): 6 x 22 x 25 Teža: 2,2 kg Življenjska doba svetilke (polna moč): 1.000 ure Vrsta svetilke: UHPL Moč žarnice: 120 W Količina svetilke: 1 Vrsta zaslona: 2 cm DLP (1) Standardni zoom objektiv: 1,25: 1 Osredotočenost: Ročna razdalja mete (m): 1,5 - 30,5 Velikost slike (cm): 76 - 1971

Ta video projektor se uporablja za projiciranje strukturiranih svetlobnih vzorcev na predmet, ki ga želite skenirati. Strukturiran vzorec je sestavljen iz navpičnih in vodoravnih trakov bele svetlobe, ki so shranjeni v podatkovni datoteki, spletne kamere pa zajamejo te popačene trakove.

Prednostno uporabite tiste kamere, ki jih je mogoče upravljati s programsko opremo, ker morate prilagoditi ostrino, svetlost, ločljivost in kakovost slike. Možno je uporabljati fotoaparate DSLR s SDK -ji, ki jih ponuja vsaka blagovna znamka.

Montaža in testi so bili izvedeni v Københavnu Fablab s svojo podporo.

4. korak: Eksperimentirajte s skenerjem

Eksperimentirajte s skenerjem
Eksperimentirajte s skenerjem
Eksperimentirajte s skenerjem
Eksperimentirajte s skenerjem
Eksperimentirajte s skenerjem
Eksperimentirajte s skenerjem

Za preskušanje sistema je bila uporabljena ribja igrača in lahko vidite posneto sliko. Vsa zajeta datoteka in tudi oblak izhodnih točk sta vključeni v priloženo datoteko, datoteko v oblaku točk PLY lahko odprete z Meshlabom:

meshlab.sourceforge.net/

5. korak: Nekateri drugi rezultati skeniranja

Nekateri drugi rezultati skeniranja
Nekateri drugi rezultati skeniranja
Nekateri drugi rezultati skeniranja
Nekateri drugi rezultati skeniranja
Nekateri drugi rezultati skeniranja
Nekateri drugi rezultati skeniranja
Nekateri drugi rezultati skeniranja
Nekateri drugi rezultati skeniranja

Tukaj si lahko ogledate nekaj skeniranja človeškega obraza in 3D skeniranje stene. Zaradi odsevov ali netočnih rezultatov slike je vedno nekaj zunanjih točk.

6. korak: grafični vmesnik 3D skenerja

Grafični vmesnik 3D skenerja
Grafični vmesnik 3D skenerja

Za preskušanje programske opreme za 3D skeniranje v tem koraku dodam dva nabora podatkov, eden je skeniranje ribe, drugi pa le ravninsko steno, da vidim natančnost. Odprite datoteke ZIP in zaženite SL3DGUI.py. Za namestitev preverite korak 2. Pošljite sporočilo v mapo »Prejeto« za vse izvorne kode.

Za uporabo dela za 3D skeniranje morate namestiti dve kameri in projektor, za ostale dele pa samo kliknite gumb. Za testiranje vzorčnih podatkov najprej kliknite proces, nato prag, stereo ujemanje in na koncu oblak točk. Namestite Meshlab in si oglejte oblak točk.

meshlab.sourceforge.net/

Priporočena: