Inhoudsopgave:

DIY 3D-scanner op basis van gestructureerd licht en stereovisie in Python-taal - Ajarnpa
DIY 3D-scanner op basis van gestructureerd licht en stereovisie in Python-taal - Ajarnpa

Video: DIY 3D-scanner op basis van gestructureerd licht en stereovisie in Python-taal - Ajarnpa

Video: DIY 3D-scanner op basis van gestructureerd licht en stereovisie in Python-taal - Ajarnpa
Video: Stereo 3D Vision (How to avoid being dinner for Wolves) - Computerphile 2024, November
Anonim
DIY 3D-scanner op basis van gestructureerd licht en stereovisie in Python-taal
DIY 3D-scanner op basis van gestructureerd licht en stereovisie in Python-taal
DIY 3D-scanner op basis van gestructureerd licht en stereovisie in Python-taal
DIY 3D-scanner op basis van gestructureerd licht en stereovisie in Python-taal

Deze 3D-scanner is gemaakt met behulp van goedkope conventionele items zoals een videoprojector en webcams. Een 3D-scanner met gestructureerd licht is een 3D-scanapparaat voor het meten van de driedimensionale vorm van een object met behulp van geprojecteerde lichtpatronen en een camerasysteem. Software is ontwikkeld op basis van gestructureerd licht en stereovisie met Python-taal.

Het projecteren van een smalle lichtband op een driedimensionaal gevormd oppervlak produceert een lichtlijn die vervormd lijkt vanuit andere perspectieven dan die van de projector, en kan worden gebruikt voor een exacte geometrische reconstructie van de oppervlaktevorm. Horizontale en verticale lichtbanden worden op het objectoppervlak geprojecteerd en vervolgens vastgelegd door twee webcams.

Stap 1: Inleiding

Invoering
Invoering
Invoering
Invoering

Automatische 3D-acquisitie-apparaten (vaak 3D-scanners genoemd) maken het mogelijk om op een kosten- en tijdbesparende manier zeer nauwkeurige modellen van echte 3D-objecten te bouwen. We hebben met deze technologie geëxperimenteerd bij het scannen van speelgoed om de prestaties te bewijzen. Specifieke behoeften zijn: middelhoge nauwkeurigheid, gebruiksgemak, betaalbare kosten van het scanapparaat, zelfgeregistreerde verwerving van vorm- en kleurgegevens en ten slotte operationele veiligheid voor zowel de operator als de gescande objecten. Volgens deze vereisten hebben we een goedkope 3D-scanner ontworpen op basis van gestructureerd licht met een veelzijdige benadering met gekleurde streeppatronen. We presenteren de scannerarchitectuur, de gebruikte softwaretechnologieën en de eerste resultaten van het gebruik ervan in een project met betrekking tot de 3D-acquisitie van speelgoed.

Bij het ontwerp van onze goedkope scanner hebben we ervoor gekozen om de zendereenheid te implementeren met behulp van een videoprojector. De reden was de flexibiliteit van dit apparaat (waarmee u met elk type lichtpatroon kunt experimenteren) en de brede beschikbaarheid ervan. De sensor kan een aangepast apparaat, een standaard digitale fotocamera of een webcam zijn. het moet kleurvastlegging van hoge kwaliteit ondersteunen (d.w.z. acquisitie van een hoog dynamisch bereik) en mogelijk met een hoge resolutie.

Stap 2: Software

Software
Software

Python-taal werd om drie redenen gebruikt voor het programmeren, één is gemakkelijk te leren en te implementeren, twee kunnen we OPENCV gebruiken voor beeldgerelateerde routines en drie is draagbaar tussen verschillende besturingssystemen, zodat u dit programma in Windows, MAC en Linux kunt gebruiken. U kunt de software ook configureren voor gebruik met elk type camera (webcams, spiegelreflexcamera's of industriële camera's) of projector met een native resolutie van 1024X768. Het is beter om camera's te gebruiken met een resolutie van meer dan twee keer. Ik heb persoonlijk de prestaties getest in drie verschillende configuraties, de eerste was met twee parallelle Microsoft-webcamcinema's en een kleine draagbare projector, de tweede was met twee lifecam-cinemawebcamera's die 15 graden naar elkaar gedraaid waren en de Infocus-projector, de laatste configuratie was met logitech-webcamera's en Infocus-projector. Om de puntenwolk van het objectoppervlak vast te leggen, moeten we vijf stappen doorlopen:

1. Grijze patronen projecteren en beelden vastleggen van twee camera's "SL3DS1.projcapt.py"

2. Verwerken van de 42 beelden van elke camera en vastleggen van puntencodes "SL3DS2.procimages.py"

2. Drempel aanpassen om maskering te selecteren voor te verwerken gebieden "SL3DS3.adjustthresh.py"

4. Zoek en bewaar vergelijkbare punten in elke camera "SL3DS4.calcpxpy.py"

5 Bereken X-, Y- en Z-coördinaten van puntenwolk "SL3DS5.calcxyz.py"

De uitvoer is een PLY-bestand met coördinaat- en kleurinformatie van punten op het objectoppervlak. U kunt PLY-bestanden openen met CAD-software zoals Autodesk-producten of een open source-software zoals Meshlab.

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

Python 2.7, OPENCV-module en NUMPY moeten worden geïnstalleerd om deze Python-programma's uit te voeren. Ik heb ook een GUI voor deze software in TKINTER ontwikkeld die je in stap zes kunt vinden met twee voorbeelddatasets. Op de volgende websites kunt u aanvullende informatie vinden over dit onderwerp:

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…

Stap 3: Hardware-installatie

apparatuur installatie
apparatuur installatie
apparatuur installatie
apparatuur installatie
apparatuur installatie
apparatuur installatie
apparatuur installatie
apparatuur installatie

Hardware bestaat uit:

1. Twee webcamera's (Logitech C920C)

2. Infocus LP330-projector

3. Camera- en projectorstandaard (gemaakt van 3 mm acrylplaten en 6 mm HDF hout gesneden met een lasersnijder)

Twee camera's en een projector moeten worden aangesloten op een computer met twee video-uitgangen, zoals een notebookcomputer, en het projectorscherm moet worden geconfigureerd als een uitbreiding op het hoofdvenster van het bureaublad. Hier zie je beelden van camera's, projector en statief. Het tekenbestand dat klaar is om te knippen, is bijgevoegd in SVG-indeling.

De projector is een Infocus LP330 (oorspronkelijke resolutie 1024X768) met de volgende specificaties. Helderheid:650 lumen Kleur lichtopbrengst:**Contrast (volledig aan/uit):400:1 Auto Iris:Nee Oorspronkelijke resolutie:1024x768 Beeldverhouding:4:3 (XGA) Videomodi:**Gegevensmodi:MAX 1024x768 Max. vermogen:200 Watt Voltage:100V - 240V Afmetingen (cm) (HxBxD):6 x 22 x 25 Gewicht:2,2 kg Levensduur lamp (vol vermogen): 1, 000 uur Lamptype:UHPLamp Wattage:120 Watt Lamphoeveelheid:1 Schermtype:2 cm DLP (1) Standaard zoomlens:1,25:1 Focus:Handmatige projectieafstand (m): 1,5 - 30,5 Beeldgrootte (cm):76 - 1971

Deze videoprojector wordt gebruikt om gestructureerde lichtpatronen op het te scannen object te projecteren. Het gestructureerde patroon bestaat uit verticale en horizontale witte lichtstroken die worden opgeslagen in een gegevensbestand en webcams leggen die vervormde stroken vast.

Gebruik bij voorkeur camera's die softwarematig bestuurbaar zijn omdat je scherpstelling, helderheid, resolutie en beeldkwaliteit moet aanpassen. Het is mogelijk om DSLR-camera's te gebruiken met SDK's die door elk merk worden geleverd.

Assemblage en tests werden uitgevoerd in het Fablab van Kopenhagen met zijn steun.

Stap 4: Experimenteren met scanner

Experimenteren met scanner
Experimenteren met scanner
Experimenteren met scanner
Experimenteren met scanner
Experimenteren met scanner
Experimenteren met scanner

Voor het testen van het systeem is een visspeeltje gebruikt en je kunt de vastgelegde afbeelding zien. Alle vastgelegde bestanden en ook de uitvoerpuntenwolk zijn opgenomen in het bijgevoegde bestand, je kunt het PLY-puntenwolkbestand openen met Meshlab:

meshlab.sourceforge.net/

Stap 5: Enkele andere scanresultaten

Enkele andere scanresultaten
Enkele andere scanresultaten
Enkele andere scanresultaten
Enkele andere scanresultaten
Enkele andere scanresultaten
Enkele andere scanresultaten
Enkele andere scanresultaten
Enkele andere scanresultaten

Hier ziet u enkele scans van menselijke gezichten en 3D-scans van een muur. Er zijn altijd enkele uitschieters als gevolg van reflecties of onnauwkeurige beeldresultaten.

Stap 6: 3D-scanner GUI

3D-scanner GUI
3D-scanner GUI

Voor het testen van de 3D-scansoftware in deze stap voeg ik twee datasets toe, één is een scan van een vis en een andere is slechts een vlakke muur om de nauwkeurigheid ervan te zien. Open ZIP-bestanden en voer SL3DGUI.py uit. Controleer voor installatie stap 2. Stuur hier een bericht naar mijn inbox voor alle broncodes.

Voor het gebruik van het 3D-scangedeelte moet u twee camera's en een projector installeren, maar voor andere onderdelen klikt u gewoon op de knop. Om de voorbeeldgegevens te testen, klikt u eerst op proces, vervolgens op drempelwaarde, stereoovereenkomst en tenslotte op puntenwolk. Installeer Meshlab om de puntenwolk te zien.

meshlab.sourceforge.net/

Aanbevolen: