Een mooi 3d-geprint object begint met een goede 3d-scan. Met fotogrammetrie kun je zulke scans maken met een gewone fotocamera, smartphone, action- of dronecamera. De techniek werkt binnen en buiten en voor zowel grote als heel kleine objecten.

John Broere


Fotogrammetrie begint met het maken van foto’s - héél veel foto’s - en daarbij moet er 60 tot 80 procent overlap zijn. Dat betekent dat 60 tot 80 procent van de beeldinformatie die op de ene foto staat, ook op de volgende foto moet staan. Je eindigt daarom al snel met tientallen of honderden foto’s van het object.
De kwaliteit van die foto’s is heel belangrijk. Hoe beter de foto’s, hoe beter het resultaat van het scanprogramma. Het is met name belangrijk dat op al die foto’s de belichting (helderheid, contrast en witbalans) zo gelijk mogelijk is. Verder moet op de foto alles scherp zijn, zowel op de voor- als op de achtergrond. Bij grote, vaste objecten, zoals bijvoorbeeld een standbeeld buiten op een plein, zal je je meestal met de camera rond het te scannen object bewegen. Bij kleine en verplaatsbare objecten kan dat natuurlijk ook, maar kun je ook kiezen voor een vaste opstelling van de camera op een statief en het object ronddraaien op een draaischijf. Bewegingsonscherpte van de camera wordt daarmee voorkomen.

fig 1 2
Kleine objecten kun je net zo goed scannen als grote objecten.
Links een foto van een schelp die nog geen 3 cm groot is, rechts de 3d-scan ervan


VAN 2D NAAR 3D
Het scanprogramma op de computer begint met het importeren van alle foto’s die je hebt gemaakt. Het programma kijkt welke foto’s geschikt zijn en voldoende herkenningspunten bevatten om er een 3d-scan van te maken. Daarna gaat het scanprogramma de foto’s met elkaar vergelijkenen proberen overeenkomstige punten in de foto’s te herkennen. Hiervoor worden verschillende technieken (lees: wiskundige algoritmen) gebruikt. Elk algoritme zoekt op een andere manier naar overeenkomsten in de foto’s, probeert dat zo snel mogelijk te doen en met zo min mogelijk fouten. Dit is ook de reden voor die grote overlap op de foto’s, anders worden er te weinig overeenkomsten gevonden en wordt het moeilijk om de juiste vorm van het object te reproduceren. Een goed algoritme is dus belangrijk.

Wanneer de herkenningspunten op de foto’s zijn gevonden, gaat het scanprogramma er een puntenwolk van maken: oftewel de punten in een driedimensionale ruimte projecteren. Scanprogramma’s noemen dit proces “Structure from Motion”, omdat het de structuur van het object zichtbaar maakt van de foto’s die tijdens bewegingen van de camera zijn gemaakt. Van de puntenwolk wordt vervolgens een draadmodel gemaakt. Daarbij wordt als het ware een net, bestaande uit driehoeken, over de gescande punten gelegd, waarbij elke driehoek een maas in het net vormt. Alle herkenningspunten van de puntenwolk worden op die manier verbonden tot er een draadmodel van driehoeken ontstaat. Het draadmodel van een gescand persoon bestaat al snel uit 800.000 driehoeken en ruim 2 miljoen hoekpunten!
Ervan uitgaande dat er kleurenfoto’s zijn gemaakt, wordt in de laatste stap van het scanprogramma de kleureninformatie van de foto’s op het draadmodel geplaatst.

fig 3 5

Links een van de vele foto’s van het standbeeld. In het midden de puntenwolk waarbij het standbeeld
al goed te herkennen is 
en rondom het standbeeld de cameraposities.
Rechts de uiteindelijke 3d-scan: een draadmodel met kleureninformatie.

(Demofoto’s van het standbeeld zijn van 3DF Zephyr en Picelli-Tacconi Studio)

3D-SCAN AANPASSEN 
Geen enkel scanprogramma en geen enkele foto is honderd procent perfect. Meestal is wel enige vorm van nabewerken van de 3d-scan nodig, dat is bij gewone fotografie ook zo. Fouten in de 3d-scan zie je als gaten in het net met driehoekige mazen. Als die gaten niet te groot zijn of op onopvallende plekken zitten, kun je ook overwegen om ze in het draadmodel te repareren in plaats van meer of andere foto’s van het object te maken. Voor het repareren van de gaten bestaan diverse opensource-programma’s zoals Meshmixer, Blender en Fusion 360.
Het scanprogramma kan uit de foto’s wel de onderlinge verhoudingen van delen van het object herleiden, maar niet de werkelijke afmetingen van het gehele object. Met zogeheten markers kunnen enkele scanprogramma’s dit probleem oplossen. Een aantal programma’s werkt met een database met specifieke kenmerken van de camera (o.a. de grootte van de beeldsensor) en de lens (o.a. de brandpuntsafstand) om de afmetingen van het object te kunnen bepalen. Heeft jouw scanprogramma niet de mogelijkheid om de juiste afmetingen van het te scannen object te bepalen, dan kan dat ook altijd nog met bewerkingsprogramma’s zoals Meshmixer en Blender of met het slicer-programma van je 3d-printer.
Veel scanprogramma’s kunnen de 3d-scan in de bestandsformaten STL, OBJ, of PLY opslaan voor verdere bewerking (bijvoorbeeld om te 3d-printen). Je kunt je 3d-scan ook in sommige 3d-CAD programma’s verder bewerken. Bijvoorbeeld om de afmetingen of de vorm te veranderen of het onderdeel in een ander, zelf getekend onderdeel te laten passen.

fig 6 7

De 3d-scan bevat gaten (de blauwe vlekken). Rechts een detail van de gaten.
Het object is door de gaten niet ‘waterdicht’ en de gaten geven problemen bij het 3d-printen

SNELLE COMPUTER
Scansoftware vraagt veel rekenkracht van de computer. Als de computer niet snel genoeg is of weinig geheugen heeft, zal de verwerkingstijd van de foto’s flink oplopen. Het hele proces van foto’s importeren tot een 3d-scan maken kan, afhankelijk van de rekenkracht van de computer, het aantal foto’s, de kwaliteit daarvan en de complexiteit van het gefotografeerde object, van een paar uur tot wel meer dan 24 uur duren!
Bij veel scansoftware is een grafische kaart die CUDA ondersteunt, noodzakelijk. CUDA is een techniek om de rekenkracht van de video-processor te gebruiken en die techniek is vrijwel uitsluitend beschikbaar op nVidia Geforce-grafische kaarten. Enkele scanprogramma’s gebruiken de OpenGL-techniek die door meer grafische kaarten wordt ondersteund. De meeste scanprogramma’s zijn Engelstalig en daarbij wordt er veel, en per scanprogramma ook nog eens verschillend, Engelstalig jargon gehanteerd. Dat maakt het doorgronden van de werking van het programma voor mensen die geen kennis hebben van fotogrammetrie er niet gemakkelijker op. 

fig 8A

Enkele nodes in detail zodat de verbindingen (links) tussen de nodes goed te zien zijn

MESHROOM
Het scanprogramma Meshroom is van Autodesk, een bedrijf dat al tientallen jaren professionele CAD-programma’s ontwikkelt. Autodesk heeft het programma AliceVision gekocht, aangepast en stelt dat onder die nieuwe naam gratis ter beschikking, zonder registratie of het aanmaken van een account. Het programma maakt gebruik van de CUDA-techniek en is er voor het Windows-platform en in een Linux-versie. Meshroomkent een steile leercurve om het onder de knie te krijgen. Het scanprogramma voert standaard elf bewerkingen (nodes geheten) op de gemaakte foto’s achter elkaar uit (in een zogeheten pipeline) om er een 3d-scan te maken. Elke node kent een groot aantal instellingen (attributes) en elke node kan meerdere inputs en meerdere outputs hebben en die inputs en outputs zijn weer met andere nodes verbonden (links). Het klinkt allemaal erg ingewikkeld en dat is het in eerste instantie ook. Gelukkig zijn de standaardinstellingen meestal voldoende om een goede 3d-scan te krijgen.Er is een (Engelstalige) handleiding, maar niet van alle nodes is er een duidelijke uitleg. Vaak zie je van een node alleen een opsomming staan van de instellingen zonder verdere uitleg en bij bepaalde nodes is er nog helemaal geen uitleg. Gelukkig wordt er wel hard aan de handleiding gewerkt; elke twee of drie maanden zie je dat deze weer is uitgebreid. Ook zijn de nodige video’s met uitleg op internet te vinden.

REGARD3D
Het scanprogramma Regard3D is van de Zwitserse software-engineer Roman Hiestand, die het voor zijn hobby heeft ontwikkeld. Gebruiksvriendelijker dan Meshroom, maar ook met minder mogelijkheden. Dit scanprogramma maakt geen gebruik van de CUDA-techniek maar van de OpenGL-techniek, is geschikt voor 64-bits versies van macOS 10.7 of nieuwer en Windows (7, 8 en 10). Een Linux-versie van Regard3D is er niet, maar op de website staat een handleiding hoe je een eigen Linux-versie kunt compileren.
Het bewerkingsproces bevat veel minder stappen dan Meshroom en er zijn bij elke stap ook minder instellingen waar je het hoofd over hoeft te breken, dus het oogt wat gemakkelijker in het gebruik. Er is een (Engelstalige) handleiding die duidelijk uitlegt hoe het programma werkt en wat de verschillende instellingen inhouden. Uiteraard blijft het lastig om alles te doorgronden als je niet thuis bent in de wereld van fotogrammetrie. De standaardinstellingen werken bij dit programma al vrij goed. Wil je toch wat experimenteren: de instellingen zijn bij elke stap goed aangegeven en informatie erover is ook goed in de handleiding terug te vinden. Maar de instelmogelijkheden zijn beperkt en dat merk je ook aan het resultaat van sommige 3d-scans. De puntenwolk is soms net wat minder compleet, waardoor in de 3d-scan gaten kunnen ontstaan die je naderhand moet repareren. Hieruit blijkt duidelijk wat de invloed van het gebruikte algoritme is op de 3d-scan.

Fig9

De schermopbouw van Regard3D, met linksboven de stappenboom en eronder een venster met informatie over de geselecteerde stap. In het midden een venster voor het zichtbare (tussen)resultaat van de 3d-scan en rechts nog een paar instellingen voor het scherm

MEER SCANPROGRAMMA’S 
Deze scantechniek met fotogrammetrie is sterk in opmars en dus verschijnen er steeds meer opensource- en ook commerciële programma’s. Maar pas op, want soms doen deze programma’s maar een deel van het hele bewerkingsproces. Een aantal van de scanprogramma’s heeft een ander doel dan het maken van een 3d-scan om het resultaat op een 3d-printer te kunnen reproduceren, dus controleer ook of het resultaat naar een STL-bestand of OBJ-bestand kan worden geëxporteerd.
Er zijn ook apps waarmee je de foto’s vanaf je smartphone kunt uploaden naar een website met een 3d-scanservice die vervolgens online je foto’s verwerkt en een 3d-scan terug levert. Bij sommige moet je betalen voor de 3d-scan, maar er zijn ook gratis scandiensten. Volgens de leverancier van een van die apps is het maken van een 3d-scan met een smartphone een fluitje van een cent, maar uit de reacties op internet en uit eigen ervaring merk ik dat deze apps toch niet zo gemakkelijk een goede 3d-scan opleveren.

CONCLUSIE
Ga je met fotogrammetrie aan de slag, download dan eerst een set demo-foto’s van de website van de leverancier van het scanprogramma. Dan weet je in ieder geval dat dit goede foto’s zijn. Als je van deze set een goede 3d-scan kunt maken, dan heb je de eerste stappen op het gebied van fotogrammetrie met succes gezet. Ga vervolgens met zelfgemaakte foto’s van een niet te ingewikkeld object aan de slag. Probeer eerst Regard3Duit om een beetje ervaring met fotogrammetrie op te doen. Maar laat, als Windows- of Linux-gebruiker, Meshroom zeker niet links liggen omdat het ingewikkeld lijkt. Meshroom is een prima programma dat, wanneer je bent bekomen van de schrik van de vele nodes, attributes en links, een uitstekend resultaat oplevert.

MEER INFO? HCC!3D-INTERESSEGROEP!
 Helaas zijn er door de coronamaatregelen dit jaar vrijwel geen fysieke HCC-bijeenkomsten en kunnen er ook geen presentaties over dit onderwerp worden gegeven. Daarom is een uitgebreider artikel over 3d-scannen met fotogrammetrie met meer ‘tips & trucs’ voor HCC-leden te vinden op de website van de HCC!3d-interessegroep.