Inhoudsopgave:
- Stap 1: Inleiding
- Stap 2: Software
- Stap 3: Hardware-installatie
- Stap 4: Experimenteren met scanner
- Stap 5: Enkele andere scanresultaten
- Stap 6: 3D-scanner GUI
Video: DIY 3D-scanner op basis van gestructureerd licht en stereovisie in Python-taal - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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
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
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
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
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
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
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:
SmartHome draadloze communicatie: de extreme basis van MQTT: 3 stappen
SmartHome draadloze communicatie: de extreme basis van MQTT: MQTT basis: **Ik ga een serie domotica doen, ik zal de stappen doorlopen die ik heb genomen om alles te leren wat ik in de toekomst heb gedaan. Deze Instructable is de basis voor het instellen van MQTT voor gebruik in mijn toekomstige Instructables. echter
Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4: 15 stappen (met afbeeldingen)
Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4: Santiago, Chili tijdens een winterse milieunoodsituatie hebben het voorrecht om in een van de mooiste landen ter wereld te wonen, maar helaas zijn het niet allemaal rozen. Chili heeft tijdens het winterseizoen veel last van luchtverontreiniging, ma
Basis van FastLED: 8 stappen
Basis van FastLED: in deze Instructables zullen we zien hoe we FastLED-programma kunnen schrijven en hoe we de FastLed-bibliotheek kunnen gebruiken. We zullen ook zien hoe we kunnen coderen om onze eigen kleurpatronen te ontwerpen. Deze bibliotheek ondersteunt verschillende soorten ledstrips die bij de
Milieubewakingssysteem op basis van OBLOQ-IoT-module: 4 stappen
Milieubewakingssysteem op basis van OBLOQ-IoT-module: dit product wordt voornamelijk toegepast in elektronische laboratoria om indicatoren zoals temperatuur, vochtigheid, licht en stof te bewaken en te controleren, en deze tijdig te uploaden naar de cloudgegevensruimte om bewaking en controle op afstand van de luchtontvochtiger te bereiken , luchtzuiver
Muziek reactief licht--Hoe maak je super eenvoudig muziek reactief licht voor het maken van Desktop Awsome.: 5 stappen (met afbeeldingen)
Muziek reactief licht||Hoe maak je super eenvoudig muziek reactief licht voor het maken van een desktop geweldig .: Hey whats up jongens, vandaag zullen we een zeer interessant project bouwen. Vandaag gaan we muziek reactief licht bouwen. De led zal de helderheid veranderen volgens de bas die eigenlijk een laagfrequent audiosignaal is. Het is heel eenvoudig te bouwen. We zullen