Kazalo:
- 1. korak: Uvod
- 2. korak: Programska oprema
- 3. korak: Namestitev strojne opreme
- 4. korak: Eksperimentirajte s skenerjem
- 5. korak: Nekateri drugi rezultati skeniranja
- 6. korak: grafični vmesnik 3D skenerja
Video: DIY 3D skener na osnovi strukturirane svetlobe in stereo vida v jeziku Python: 6 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
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
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
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
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
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
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
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:
Enostaven program za dodajanje v programskem jeziku Shakespeare: 18 korakov
Enostaven program za dodajanje v programskem jeziku Shakespeare: programski jezik Shakespeare (SPL) je primer ezoteričnega programskega jezika, ki je morda zanimiv za spoznavanje in je zabaven za uporabo, vendar ni posebej uporaben v resničnih aplikacijah. SPL je jezik, v katerem je izvorna koda r
Brezkontaktni infrardeči termometer na osnovi Arduino - IR termometer na osnovi Arduina: 4 koraki
Brezkontaktni infrardeči termometer na osnovi Arduino | IR -termometer z uporabo Arduina: Pozdravljeni fantje, v tem navodilu bomo naredili brezkontaktni termometer z arduinom. Ker je včasih temperatura tekočine/trdne snovi previsoka ali prenizka, potem pa je težko priti v stik z njo in prebrati temperatura v tem prizorju
Kodirajte in preizkusite računalnik v strojnem jeziku: 6 korakov
Kodirajte in preizkusite računalnik v strojnem jeziku: V tem navodilu vam bom pokazal, kako kodirati in preizkusiti računalniški program v strojnem jeziku. Strojni jezik je materni jezik računalnikov. Ker je sestavljen iz nizov 1s in 0s, ga ljudje ne razumejo zlahka. Za delo
Arduino pomočnik v angleškem jeziku: 7 korakov
Arduino pomočnik za angleški jezik: Uvod: Sem študent, ki dela na magistrskem študiju izobraževanja s poudarkom na tehnološki integraciji. Trenutno poučujem glasbo in dobršen del tega semestra sem se naučil uporabljati Arduino za glasbene projekte.
Arduino DIY merilnik svetlobe s senzorjem BH1750: 6 korakov (s slikami)
Arduino DIY merilnik svetlobe s senzorjem BH1750: V tem navodilu vam bom pokazal, kako z Arduinom zgraditi merilnik svetlobe z velikim LCD zaslonom Nokia 5110. Izdelava merilnika svetlobe je odlična učna izkušnja. Ko končate gradnjo tega projekta, boste bolje razumeli