Fotogrammetrie met Meshroom

Fotogrammetrie is een methode om fysieke objecten om te zetten in driedimensionale digitale modellen die bewerkt kunnen worden met 3D-software. Dit proces maakt meestal gebruik van gespecialiseerde apparaten die 3D-scanners worden genoemd en er zijn twee hoofdtypen: optisch en laser.
Optische scanners gebruiken vaak een of meer digitale camera's en speciale verlichting om het object gelijkmatig te belichten tijdens het scannen. Hierdoor kan een 3D-model worden gemaakt. Laserscanners daarentegen maken gebruik van laserstralen. Deze apparaten zenden meerdere laserstralen uit en meten de tijd die elke straal nodig heeft om terug te kaatsen van het object. Aan de hand van deze gegevens, samen met informatie van positiesensoren, berekent de scanner de afstand tot elk punt op het object. Dit creëert een "puntenwolk" die de basis vormt van het 3D-model.
Puntenwolk

Om het toekomstige raamwerk van een object op te bouwen, moet het systeem de coördinaten van elk hoekpunt in de driedimensionale ruimte kennen. De verzameling hoekpunten wordt een puntenwolk genoemd. Hoe meer hoekpunten er zijn, hoe gedetailleerder het object zal zijn. Het maken van een puntenwolk is de eerste en een van de meest cruciale stappen bij het recreëren van een 3D-model van foto's.
Het is belangrijk om te weten dat elk hoekpunt in de puntenwolk in eerste instantie niet verbonden is met andere hoekpunten. Dit maakt filteren eenvoudig: de noodzakelijke punten behouden en de rest verwijderen, voordat u begint met het opnieuw maken van de mesh van het object.
Mesh-objecten

Een mesh-object is een type 3D-model dat bestaat uit driehoekige geometrische primitieven, vaak meshes of polymeshes genoemd. Zodra objectpunten gevormd zijn, kan de toepassing hieruit onafhankelijk driehoekige primitieven samenstellen. Door deze primitieven te verbinden, is het mogelijk om een 3D-model van bijna elke vorm te maken. In dit stadium heeft het model geen kleur en blijft het ongeverfd.
De volgende textureringsfase pakt dit probleem aan.
Structureren

De laatste stap is het aanbrengen van de uit de foto's geëxtraheerde beeldtextuur op het voorbereide mesh-object. De kwaliteit van de genomen foto's en hun resolutie spelen hier een belangrijke rol. Als die laag is, zal het eindresultaat er niet op zijn best uitzien. Maar als er voldoende foto's van goede kwaliteit zijn gemaakt, krijg je bij de uitvoer een volledig gebruiksklaar 3D-model van een echt object. Hieronder geven we een aantal handige tips voor het voorbereiden van de originele foto's.
Camera-instellingen
Om teleurstellingen te voorkomen bij uw eerste pogingen om een 3D-model te maken van foto's, moet u deze eenvoudige basisregels in acht nemen. Elke regel helpt problemen te voorkomen die meestal optreden tijdens het maken van het mesh-object.
Ten eerste, vertrouw niet op de automatische instellingen van uw digitale camera. Moderne camera's proberen vier belangrijke parameters onafhankelijk van elkaar te balanceren:
- ISO,
- witbalans,
- sluitertijd,
- diafragma.
In de automatische modus kunnen zelfs kleine veranderingen in externe omstandigheden ervoor zorgen dat deze instellingen variëren tussen frames. Deze variaties kunnen leiden tot merkbare inconsistenties tijdens het textureren.
Gebruik de modus Manual (M) om consistente parameters tussen frames te behouden. Het diafragma is hier een cruciale instelling. Afhankelijk van je lens moet je streven naar een stand waarbij het diafragma bijna gesloten is. Dit helpt om maximale scherptediepte te bereiken: hoe minder open het diafragma, hoe beter. Vermijd echter extreme waarden. Als je lens dicht bij f/22 kan staan, krijg je goede resultaten met waarden tussen f/11 en f/20.

Links f/11, rechts f/22
Het sluiten van het diafragma creëert echter een ander probleem: onvoldoende licht. Dit kan op twee manieren worden aangepakt: door de ISO-gevoeligheid te verhogen of de sluitertijd te verlengen. Beide methoden hebben invloed op het eindresultaat, zij het op verschillende manieren. Het verhogen van de ISO tot 6400 introduceert digitale ruis in de foto, dus je kunt het beste de laagst mogelijke waarden gebruiken. Voor bijna ideale resultaten is het verstandig om de ISO op 100 in te stellen. Dit betekent echter dat het probleem van onvoldoende belichting blijft bestaan:

Links ISO 100, rechts ISO 6400
De meest effectieve manier om meer licht door de camerasensor te laten stromen bij weinig licht is door de sluitertijd te verlengen. Hoe langer de sluiter open blijft, hoe meer fotonen de sensor raken, wat resulteert in een betere beeldkwaliteit. Deze aanpak brengt echter een uitdaging met zich mee: zonder statief kan een sluitertijd van 1/50 seconde of langer het beeld onscherp maken. Met een statief is dit probleem verleden tijd.
Witbalans is de laatste cruciale parameter. Het is belangrijk om de automatische instelling uit te schakelen en een voorgeprogrammeerd profiel te kiezen (zoals "Zonnige dag") of een aangepaste waarde in Kelvin. 5200K is bijvoorbeeld een veelgebruikte instelling. Lagere waarden verschuiven de tint naar geel, terwijl hogere waarden naar blauw neigen. Om tijdrovende kleurcorrecties in de nabewerking te voorkomen, gebruik je hetzelfde witbalansprofiel voor alle foto's in een serie.

WB-profielen. Links "Zonnige dag", rechts "Auto".
Kortom, om foto's van hoge kwaliteit te maken voor fotogrammetrie:
- Gebruik een statief bij onvoldoende licht.
- Sluit het diafragma bijna tot het minimum.
- Stel de ISO in op de minimale waarde.
- Kies een sluitertijd die je het gewenste resultaat geeft (of gebruik de ingebouwde belichtingsmeter van je camera).
- Gebruik dezelfde voorkeuze witbalans.
Foto's maken
Laten we het hebben over hoeveel foto's je moet nemen en vanuit welke hoeken. Het type object en de achtergrond hebben een grote invloed op het eindresultaat. Objecten zonder glimmende, transparante of reflecterende oppervlakken zijn ideaal voor fotogrammetrie. In de praktijk moeten objecten zoals ramen en glas later vaak worden gecorrigeerd in een 3D-editor. De algemene opnametechniek blijft echter hetzelfde.
Stel je voor kleine objecten op een oppervlak een bol voor rond het object. Neem foto's alsof je camera drie keer rond het object cirkelt: een keer van onderaf, een keer in het midden en een keer van bovenaf.

Het is cruciaal dat het object minstens de helft en bij voorkeur driekwart van elk beeld inneemt. Probeer in plaats van in te zoomen fysiek dichter bij het object te komen. Bij het maken van een wolkenpunt heeft de software zoveel mogelijk pixels nodig.
Denk er bij het fotograferen aan dat de software frames combineert tot één object voor een correcte geometrie. Maak als regel minstens drie frames vanuit elke hoek. Zodra je het object in het frame hebt gecentreerd, verdeel je het mentaal verticaal in drie gelijke delen. Neem drie foto's, elk gericht op een derde van het object. Dit zorgt voor de nodige overlap zodat de toepassing de locatie van elk punt in de 3D-ruimte nauwkeurig kan berekenen. Nadat je het object van alle mogelijke kanten en hoeken hebt gefotografeerd, kun je beginnen met het voorbereiden van de software.
Meshroom installeren
Meshroom is een gratis, cross-platform toepassing die alle verwerkingsstappen sequentieel uitvoert, gebruikmakend van CPU en GPU bronnen. Hoewel het op een standaard thuiscomputer kan draaien, kan elke stap tijdrovend zijn. Voor grootschalige projecten met 3D-reconstructie van een groot aantal objecten, zoals het maken van een indrukwekkende 3D-scène, kan het huren van een speciale GPU-server een praktische oplossing zijn.
Laten we eens kijken naar een LeaderGPU server met de volgende configuratie: 2 x NVIDIA® RTX™ 3090, 2 x Intel® Xeon® Silver 4210 (3.20 GHz), 128GB RAM. We gebruiken Windows Server 2022 als besturingssysteem. Voordat je Meshroom installeert, moet je enkele voorbereidende stappen uitvoeren:
- Maak verbinding met een Windows server
- Nvidia-stuurprogramma's installeren in Windows
- GPU rendering in RDP
Bezoek de officiële website van het project om Meshroom te downloaden. Pak het resulterende archief uit om een gebruiksklare toepassing te vinden die geen extra installatie vereist. Start Meshroom.exe om te beginnen.
Afbeeldingen uploaden
Het hoofdvenster van de toepassing is verdeeld in twee delen: boven en onder. Het bovenste deel bevat de afbeeldingsgalerij, de afbeeldingsviewer en de 3D-viewer. Het onderste deel bevat de Graph editor en Task Manager. Om te beginnen sleep je je vastgelegde foto's naar het aangewezen gebied. Zowel gecomprimeerde (bijvoorbeeld JPG) als RAW-bestandsformaten worden ondersteund. Het wordt aanbevolen om RAW-bestanden te gebruiken omdat deze aanzienlijk meer gegevens bevatten voor elk frame.

Houd er rekening mee dat je standaard al een kant-en-klare standaard pijplijn hebt, die schematisch wordt weergegeven in de Graph Editor. Dit is een van de belangrijkste besturingselementen waarmee je alle aspecten van de beeldverwerking in elke fase kunt configureren. Je kunt elke stap handmatig uitvoeren door met de rechtermuisknop te klikken en Compute te selecteren in het vervolgkeuzemenu.
Maar voor de eerste keer kun je gewoon op de groene knop Start klikken en de toepassing zal alles voor je doen. Het vraagt je om het project op te slaan, zodat je de resultaten van de berekening niet per ongeluk kwijtraakt. Klik op Save, geef een naam en map op en sla het project op:

Vervolgens brengt de toepassing alle verwerkingsfasen over van de Graph Editor naar de Task Manager, die ze in een specifieke volgorde uitvoert. Om de status van elke stap te controleren, selecteer je het corresponderende blok in de Graph Editor en klik je op de knop Log in de rechterbenedenhoek van het scherm. Je kunt ook in realtime zien welke stap momenteel wordt verwerkt:

Aan de rechterkant zie je de puntenwolk die je hebt opgebouwd. Het eindresultaat, gegenereerd met de standaard pijplijn, is beschikbaar in de map:
[Your_Project_Path]\MeshroomCache\Texturing\[Random_Symbols]\texturedMesh.obj
Als je van tevoren het uitvoerpad vastlegt in het laatste knooppunt van de pijplijn, komt het object natuurlijk terecht op het pad dat je hebt opgegeven. Vervolgens kun je het importeren in elke teksteditor om oppervlakken te corrigeren, lichtbronnen en andere effecten toe te voegen voor het renderen.
Integratie
Hoewel het eerste resultaat er indrukwekkend uitziet, moet het vaak worden verfijnd in een 3D-editor. Meshroom vereenvoudigt dit proces doordat je niet alleen het model, maar ook de puntenwolk en cameraposities kunt importeren in editors van derden, zoals Houdini of Blender. In de volgende sectie bekijken we hoe u dat doet.
Houdini
In feite is Meshroom een gebruiksvriendelijke interface voor de AliceVision engine, die alle berekeningsgerelateerde operaties afhandelt. Deze interface implementeert de bijbehorende pijplijn en taakmanager. Als je Houdini gebruikt, kun je je eigen pijplijn direct in de toepassing maken en deze naast andere gereedschappen gebruiken, zodat je Meshroom niet apart hoeft te starten.
Om te beginnen kunt u het beste een speciale launcher downloaden en installeren die Houdini updates en plugins beheert. Voeg vervolgens de SideFX Labs plugin toe, die talloze extra tools biedt, waaronder specifieke nodes voor AliceVision. Klik hiervoor op de knop + en selecteer vervolgens Shelves:

Scroll naar beneden in de lijst en selecteer SideFX Labs, klik vervolgens op de knop Update Toolset:

Volg deze stappen om een plugin te installeren: Klik op de knop Start Launcher, navigeer naar de sectie Labs/Packages in het linkermenu en selecteer Install packages. Dit opent een venster waarin je pakketten kunt kiezen om te installeren:

Kies de Production Build voor jouw versie van Houdini en klik op Install. Start daarna de toepassing opnieuw op om ervoor te zorgen dat de nieuwe effectpictogrammen bovenaan verschijnen:

Het is cruciaal om op te merken dat je hier geen vermelding vindt van AliceVision of Meshlab. Dit komt omdat de corresponderende plugin alleen werkt binnen de geometrie context pijplijn. Om dit te controleren, klikt u op het pictogram +, selecteert u vervolgens New Pane Tab Type en kiest u Network View:

Druk op de toets Tab en voeg een knooppunt Geometry toe:

Dubbelklik om het gemaakte knooppunt te openen en typ av op uw toetsenbord. Het systeem toont direct een lijst met beschikbare knooppunten die beginnen met de Labs AV-symbolen. Met deze knooppunten kunt u de AliceVision engine besturen en integreren in uw eigen pijplijnen:

Raadpleeg de officiële documentatie van de plugin om een goede pijplijn te maken. Overweeg daarnaast om de AliceVision directory toe te voegen aan de lijst met omgevingsvariabelen in het houdini.env bestand. Voor een standaardinstallatie met de launcher, bevindt dit bestand zich meestal in de map C:\Users\Administrator\Documents\houdini20.5\
Open het houdini.env bestand met een tekstverwerker en voeg de volgende regel toe:
ALICEVISION_PATH = [path to alicevision directory in Meshroom folder]
Bijvoorbeeld, als je Meshroom hebt geïnstalleerd in de root directory van de D: drive, dan zou je pad er als volgt uit kunnen zien:
ALICEVISION_PATH = D:\Meshroom\aliceVision
Sla het bestand op en start de Houdini-toepassing opnieuw.
Blender
Voor Blender gebruikers raden we de Meshroom2Blender plugin aan. Hoewel deze anders werkt dan de Houdini plugin, kun je hiermee puntwolken en cameraposities berekend door Meshroom exporteren naar Blender. Open de link in uw browser om toegang te krijgen tot de plugincode:
https://raw.githubusercontent.com/tibicen/meshroom2blender/master/view3d_point_cloud_visualizer.py
Sla de code op als view3d_point_cloud_visualizer.py in een handige map. Open vervolgens Blender en navigeer naar Edit - Preferences. Selecteer daar de tab Add-ons:

Klik op de pijl omlaag en selecteer Install from Disk:

Navigeer in het nieuw geopende venster naar de map waar je de plugin hebt opgeslagen. Selecteer het plugin-bestand en klik op Install from Disk button:

De plugin is nu geïnstalleerd. Het wordt aanbevolen om de toepassing opnieuw op te starten. Na het herstarten zie je het item Point Cloud Visualizer in de weergavemodus. De plugin vereist dat je het pad naar een bestand met de extensie .ply opgeeft:

Standaard genereert Meshroom dit type bestand niet. Om het aan te maken, open de pijplijn en voeg de ConvertSfMFormat node toe. Gebruik de SfMData van de StructureFromMotion node als invoer. Geef voor de uitvoer de Images Folder van het knooppunt Texturing op.

De laatste stap is het opgeven van het formaat. Klik op SfM File Format in het knooppunt ConvertSfMFormat en selecteer ply in de vervolgkeuzelijst:

Klik met de rechtermuisknop op het gemaakte knooppunt en selecteer Compute:

Zodra het proces is voltooid, vind je het vereiste bestand in de directory:
[Your_Project_Path]\MeshroomCache\ConvertSfMFormat\[Random_Symbols]\sfm.ply
Je kunt het op twee manieren in Blender laden: via de eerder genoemde plugin of via het standaard importproces File - Import - Stanford PLY (.ply):

Voor meer informatie over het gebruik van deze plugin, raden we je aan de project repository of een gespecialiseerde webbron te raadplegen.
Conclusie
Fotogrammetrie is een groot kennisgebied, waarbij we hebben geprobeerd om slechts enkele basistechnieken te vertellen voor het omzetten van 2D afbeeldingen in een 3D model. Dit wordt in veel industrieën gebruikt, van architectuur tot het maken van computerspellen.
Nadat u de eerste ervaring hebt opgedaan met het fotograferen van een dataset en de consistente transformatie ervan in een 3D-model, kunt u uw vaardigheden verbeteren en fysieke objecten overbrengen naar een virtuele 3D-ruimte. Welnu, LeaderGPU zal u helpen met rekenkracht, het verminderen van de rekentijd en het vrijmaken van uw werkstation voor andere, vaak meer prioritaire taken.
Zie ook:
Bijgewerkt: 12.08.2025
Gepubliceerd: 21.01.2025