Indholdsfortegnelse:

DIY 3D -scanner baseret på struktureret lys og stereovision i Python -sprog: 6 trin (med billeder)
DIY 3D -scanner baseret på struktureret lys og stereovision i Python -sprog: 6 trin (med billeder)

Video: DIY 3D -scanner baseret på struktureret lys og stereovision i Python -sprog: 6 trin (med billeder)

Video: DIY 3D -scanner baseret på struktureret lys og stereovision i Python -sprog: 6 trin (med billeder)
Video: 3D vision og binpicking ENG Webinar af KUKA Nordic 2024, November
Anonim
DIY 3D -scanner baseret på struktureret lys og stereovision i Python -sprog
DIY 3D -scanner baseret på struktureret lys og stereovision i Python -sprog
DIY 3D -scanner baseret på struktureret lys og stereovision i Python -sprog
DIY 3D -scanner baseret på struktureret lys og stereovision i Python -sprog

Denne 3D -scanner blev lavet ved hjælp af billige konventionelle emner som videoprojektor og webcams. En struktureret lys 3D-scanner er en 3D-scanningsenhed til måling af en tredimensionel form af et objekt ved hjælp af projicerede lysmønstre og et kamerasystem. Software blev udviklet baseret på struktureret lys og stereosyn med pythonsprog.

Ved at projicere et smalt lysbånd på en tredimensionel formet overflade frembringes en belysningslinje, der forekommer forvrænget fra andre perspektiver end projektorens og kan bruges til en nøjagtig geometrisk rekonstruktion af overfladeformen. Horisontale og lodrette lysbånd projiceres på objektoverfladen og fanges derefter af to webkameraer.

Trin 1: Introduktion

Introduktion
Introduktion
Introduktion
Introduktion

Automatiske 3D-indsamlingsenheder (ofte kaldet 3D-scannere) gør det muligt at bygge meget præcise modeller af ægte 3D-objekter på en omkostningseffektiv og tidseffektiv måde. Vi har eksperimenteret med denne teknologi til at scanne et legetøj for at bevise ydeevnen. Specifikke behov er: mellemhøj nøjagtighed, let at bruge, overkommelige omkostninger ved scanningsenheden, selvregistreret indsamling af form- og farvedata og endelig driftssikkerhed for både operatøren og de scannede objekter. I henhold til disse krav designede vi en billig 3D-scanner baseret på struktureret lys, der anvender en alsidig tilgang til farvet stribe. Vi præsenterer scannerarkitekturen, de anvendte softwareteknologier og de første resultater af dens anvendelse i et projekt vedrørende 3D -anskaffelse af et legetøj.

I designet af vores billige scanner valgte vi at implementere emitterenheden ved hjælp af en videoprojektor. Årsagen var denne enheds fleksibilitet (som gør det muligt at eksperimentere enhver form for lysmønster) og dens brede tilgængelighed. Sensoren kan enten være en brugerdefineret enhed, et standard digitalt stillkamera eller et webcam. den skal understøtte farveoptagelse af høj kvalitet (dvs. erhvervelse af højt dynamisk område) og muligvis med høj opløsning.

Trin 2: Software

Software
Software

Python -sprog blev brugt til programmering af tre grunde, en det er let at lære og implementere, to vi kan bruge OPENCV til billedrelaterede rutiner og tre det er bærbart blandt forskellige operativsystemer, så du kan bruge dette program i Windows, MAC og Linux. Du kan også konfigurere softwaren til brug med alle slags kameraer (webkameraer, spejlreflekskameraer eller industrikameraer) eller projektor med indbygget 1024X768 -opløsning. Det er bedre at bruge kameraer med mere end to gange opløsning. Jeg testede personligt ydelsen i tre forskellige konfigurationer, den første var med to parallelle Microsoft webcam biografer og en lille bærbar projektor, den anden var med to lifecam biograf webkameraer, der roterede 15 grader mod hinanden og Infocus projektor, sidste konfiguration var med logitech webkameraer og Infocus -projektor. For at fange objektskyens objektsky skal vi gå gennem fem trin:

1. Projicering af grå mønstre og optagelse af billeder fra to kameraer "SL3DS1.projcapt.py"

2. Behandler de 42 billeder af hvert kamera og optager punktkoder "SL3DS2.procimages.py"

2. Justering af tærskel for at vælge maskering for områder, der skal behandles "SL3DS3.adjustthresh.py"

4. Find og gem lignende punkter i hvert kamera "SL3DS4.calcpxpy.py"

5 Beregn X-, Y- og Z -koordinaterne for punktskyen "SL3DS5.calcxyz.py"

Outputtet er en PLY -fil med koordinat- og farveoplysninger om punkter på objektoverfladen. Du kan åbne PLY -filer med CAD -software som Autodesk -produkter eller en open source -software som Meshlab.

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

Python 2.7, OPENCV -modul og NUMPY bør installeres for at køre disse Python -programmer. Jeg har også udviklet en GUI til denne software i TKINTER, som du kan finde i trin seks med to eksempeldatasæt. Du kan finde yderligere oplysninger om dette emne på følgende websteder:

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…

Trin 3: Hardwareopsætning

Hardwareopsætning
Hardwareopsætning
Hardwareopsætning
Hardwareopsætning
Hardwareopsætning
Hardwareopsætning
Hardwareopsætning
Hardwareopsætning

Hardware består af:

1. To webkameraer (Logitech C920C)

2. Infocus LP330 projektor

3. Kamera og projektorstativ (fremstillet af 3 mm akrylplader og 6 mm HDF -træskæring med laserskærer)

To kameraer og projektor skal forbindes til en computer med to videooutput som en bærbar computer, og projektorens skærm skal konfigureres som en udvidelse til hovedvinduet på skrivebordet. Her kan du se billeder af kameraer, projektor og stativ. Tegningsfilen klar til klipning er vedhæftet i SVG -format.

Projektoren er en Infocus LP330 (indfødt opløsning 1024X768) med følgende specifikationer Lysstyrke: 650 Lumen Farve Lysudbytte: ** Kontrast (fuld til/fra): 400: 1 Auto Iris: Ingen indfødt opløsning: 1024x768 Billedformat: 4: 3 (XGA) Videotilstande: ** Datatilstande: MAX 1024x768 Maks. Effekt: 200 Watt Spænding: 100V - 240V Størrelse (cm) (HxBxD): 6 x 22 x 25 Vægt: 2,2 kg Lampens levetid (fuld effekt): 1.000 timer Lampetype: UHPLampeeffekt: 120 Watt Lampemængde: 1 Skærmtype: 2 cm DLP (1) Standardzoomobjektiv: 1,25: 1 Fokus: Manuel kasteafstand (m): 1,5 - 30,5 Billedstørrelse (cm): 76 - 1971

Denne videoprojektor bruges til at projicere strukturerede lysmønstre på det objekt, der skal scannes. Det strukturerede mønster består af lodrette og vandrette hvide lysstrimler, der gemmes på en datafil, og webkameraer fanger disse forvrængede strimler.

Brug helst de kameraer, der kan styres af software, fordi du skal justere fokus, lysstyrke, opløsning og billedkvalitet. Det er muligt at bruge DSLR -kameraer med SDK'er, der leveres af hvert mærke.

Montering og test blev udført i Copenhagen Fablab med dens støtte.

Trin 4: Eksperimentering med scanner

Eksperimenterer med scanner
Eksperimenterer med scanner
Eksperimenterer med scanner
Eksperimenterer med scanner
Eksperimenterer med scanner
Eksperimenterer med scanner

Til test af systemet blev der brugt et fiskelegetøj, og du kan se det fangede billede. Al fanget fil og også outputpunktskyen er inkluderet i vedhæftede fil, du kan åbne PLY point cloud -filen med Meshlab:

meshlab.sourceforge.net/

Trin 5: Nogle andre scanningsresultater

Nogle andre scanningsresultater
Nogle andre scanningsresultater
Nogle andre scanningsresultater
Nogle andre scanningsresultater
Nogle andre scanningsresultater
Nogle andre scanningsresultater
Nogle andre scanningsresultater
Nogle andre scanningsresultater

Her kan du se nogle menneskelige ansigtsscanninger og 3d -scanning af en væg. Der er altid nogle ekstra punkter på grund af refleksioner eller unøjagtige billedresultater.

Trin 6: 3D -scanner GUI

3D -scanner GUI
3D -scanner GUI

Til test af 3d -scanningssoftwaren i dette trin tilføjer jeg to datasæt, det ene er scanning af en fisk og et andet er bare en plan væg for at se nøjagtigheden af det. Åbn ZIP -filer, og kør SL3DGUI.py. For installation tjek trin 2. Send besked til min indbakke her for alle kildekoder.

For at bruge 3D -scanningsdel skal du installere to kameraer og projektor, men for andre dele skal du bare klikke på knappen. For at teste eksempeldataene skal du først klikke på processen og derefter tærsklen, stereomatch og til sidst punktsky. Installer Meshlab for at se punktskyen.

meshlab.sourceforge.net/

Anbefalede: