Met je smartphone digitaliseren met Meshroom
Gottfried Hofmann en Marco den Teuling
Met fotogrammetrie en een enigszins fatsoenlijke camera kun je de wereld in 3D inscannen. Een uit alle mogelijke hoeken genomen fotoserie volstaat om objecten op de pc te reconstrueren. Wetenschappers hebben zo met veel moeite de piramides van Gizeh gedigitaliseerd, in de hoop verborgen geheimen te onthullen. Maar het is ook gewoon leuk om de echte wereld op je pc stukje bij beetje na te bouwen en in virtuele scènes te verwerken of een mini-kopie te maken met een 3D-printer.
De automatische modus van de opensource software Meshroom voltooit het 3D-scannen zelfstandig na een druk op de knop. De kunst zit het hem vooral in het fotograferen. Waar je daarbij op moet letten, leer je in deze workshop. Vervolgens wordt het gegenereerde object in de gratis 3D-software Blender opgepoetst en geoptimaliseerd. Daar is geen voorkennis voor nodig. Als je wat dieper in de materie wilt duiken, kun je belangrijke basiskennis opdoen met onze vijfdelige Blender-workshop [1].
Om Meshroom eens even uit te proberen, download je de demo-dataset Monstree (zie de link op de laatste pagina van dit artikel). Die bevat iPhone-foto’s van een Meshroom-ontwikkelaar en werken in elk geval goed. De complete set bestaat uit 41 foto’s, maar je moet rekening houden met meerdere uren verwerkingstijd. Met de kleinere sets die beperkt zijn tot drie of zes foto’s duurt het hele proces maar enkele minuten. De kwaliteit neemt daarbij echter wel aanzienlijk af. Via de link bij dit artikel kun je nog twee andere complete fotoseries downloaden, inclusief kant-enklare Meshroom- en Blender-modellen.
DIKKE GPU, VEEL RAM
Meshroom is beschikbaar als portable 64-bit versie voor Windows en Linux. Beide kun je dus meteen starten – ook vanaf een usb-stick – en hoeven niet op het systeem te worden geïnstalleerd. Mac-gebruikers
die houden van een beetje experimenteren zijn erin geslaagd om de software via homebrew te compileren, wat in elk geval enige hoop biedt op officiële ondersteuning.
Om high-res 3D-modellen met Meshroom te maken, heb je een voor CUDA geschikte grafische kaart van Nvidia en ten minste 32 GB aan RAM nodig. Meshroom kan ook draaien met 16 GB, maar als je minder hebt zul je met een lagere kwaliteit genoegen moeten nemen of aanzienlijk meer computertijd moeten inplannen. Als het nodig is kun je zelfs zonder Nvidia-kaart uit de voeten, aangezien het door CUDA ondersteunde standaardalgoritme voor het berekenen van DepthMaps kan worden omzeild (zie verderop in dit artikel).
We raden ook een snelle ssd met veel vrije ruimte aan. Meshroom bewaart alle tussenresultaten in een cache om ervoor te zorgen dat als je de parameters later wijzigt, de software niet onnodig meerdere berekeningen hoeft uit te voeren en de resultaten makkelijk vergeleken kunnen worden. Het nadeel is de benodigde ruimte. Een uitgebreide scan neemt vaak 50 GB aan opslagruimte in beslag op de ssd.
Een beetje moderne quadcoreprocessor van de laatste vijf jaar voldoet, waarbij ook voor het aantal cores geldt: meer is beter en verkort de rekentijd. Wees er echter op voorbereid om je pc nachtdiensten te laten draaien. Fotogrammetrie is een rekenintensief proces, zeker als je hele gebouwen digitaliseert.
CAMERA: GESCHIKT VOOR 3D
Fotogrammetrie is in de eerste plaats fotografisch vakmanschap. De kwaliteit van een scan hangt af van de kwaliteit van je beelden. Die moeten zo scherp, ruisvrij en gelijkmatig mogelijk belicht zijn. De eerste scans zullen je misschien niet overtuigen, maar met een beetje oefening zullen de resultaten snel verbeteren. Voor het maken van foto’s heb je een goede, maar niet noodzakelijkerwijs een spiegelreflexcamera nodig. Het belangrijkste is dat het onderwerp zo scherp mogelijk en zonder storingen wordt vastgelegd.
Je kunt onscherpte onder meer voorkomen door gebruik te maken van een statief en korte sluitertijden. Kleine diafragma’s en korte brandpuntsafstanden helpen om een slechte scherptediepte te voorkomen. Daarom zijn ook apparaten met kleinere sensors, zoals smartphones, geschikt voor het maken van de foto’s.
Om ruis tot een minimum te beperken, moet je het onderwerp goed belichten of gewoon naar buiten gaan in goede lichtomstandigheden. Ideale omstandigheden zijn bewolkte of enigszins nevelige dagen omdat de vele kleine waterdruppeltjes in de lucht het zonlicht dan gelijkmatig verstrooien. Het is ook om een andere reden de moeite waard om de buitenlucht op te zoeken: daar zijn veel interessante objecten om te scannen.
Zonneschijn veroorzaakt harde schaduwen die in de scan worden meegenomen. Dergelijke schaduwen verminderen de speelruimte als je het object later digitaal opnieuw wilt belichten. Ook het combineren van verschillende beelden wordt moeilijker omdat hun belichting overeen moet komen. Sommigen maken bewust gebruik van zon-schaduweffecten als een artistiek element, maar je moet die tijdens de leerfase in elk geval proberen te vermijden.
Schakel voor het fotograferen alle ‘beeldverbeteringen’ uit, zoals contrastverbetering, bokeh-effecten of slimme correcties. Stel bovendien vaste waarden in voor de witbalans, de gevoeligheid (ISO) en de sluitertijd, zodat de kleuren en de helderheid van de foto’s tijdens het maken niet veranderen. Op je smartphone kun je die parameters instellen met de Pro-modus van de camera-app. Zo niet, installeer dan Open Camera of een soortgelijke app met handmatige modus (zie de link).
Het gewenste bestandsformaat voor het importeren van foto’s is bij Meshroom TIFF, PNG of JPEG. Het programma leest ook veel raw-formaten, maar ondersteunt die nog niet goed genoeg om dezelfde kwaliteit te bereiken als met TIFF en PNG. Als je
camera alleen foto’s in het lossy JPEG-formaat kan maken, stel je het hoogste kwaliteitsniveau in.
VAKKUNDIG GEFOTOGRAFEERD
Bij het maken van de foto’s moet je ervoor zorgen dat de afzonderlijke foto’s een bepaalde overlap hebben. Net als 2D-panoramasoftware zoekt Meshroom naar overeenkomstige kenmerken in aangrenzende foto’s. Meshroom vergelijkt vervolgens de verschillen in de posities van die kenmerken en reconstrueert daaruit de positie en het perspectief van de camera. Als de foto’s elkaar niet genoeg overlappen, vindt Meshroom niet genoeg mogelijkheden om de camerapositie te reconstrueren en de bijbehorende beelden automatisch te sorteren.
Een minimum van 50 procent overlapping wordt aanbevolen. Meer is beter, maar slechts tot ongeveer 80 procent. Boven die grens kan het algoritme nauwelijks gebruik maken van de extra informatie, ondanks een meteen ook sterke toename van de rekentijd. Het is dus geen goed idee om een video te maken en die om te zetten in een beeldsequentie – voorlopig nog niet tenminste. De volgende versie van Meshroom moet in staat zijn om video’s rechtstreeks te importeren en de onnodige beelden er zelf uit te filteren.
Je kunt een perfecte dekking bereiken door met de camera om het object heen te cirkelen en foto’s te maken, vergelijkbaar met hoe de lengte- en breedtegraden over de aardbol lopen. Bij grotere objecten kun je meerdere omwentelingen maken, waarbij de camera bij elke omwenteling iets hoger wordt gehouden. Je kunt het resultaat verder verbeteren door een paar halve cirkels toe te voegen die loodrecht op de andere staan (de ‘breedtegraden’). Soms moet je improviseren, want niet elk object is van alle kanten goed toegankelijk. Het kan bijvoorbeeld handiger zijn om het object te fotograferen langs een spiraalvormig pad.
Als een object interessante details heeft, kun je daar het beste een paar close-ups van maken terwijl je ronddraait, door de camera naar de details toe te bewegen. Dergelijke delen zullen in het digitale model dan in een hogere resolutie verschijnen. Zorg ervoor dat je tijdens het dichterbij bewegen ook een paar foto’s maakt, zodat Meshroom een pad van overlap vindt en de details correct toewijst. Theoretisch zou je ook eerst je rondjes rondom het object kunnen afwerken en pas daarna de fijnere details fotograferen. Maar dan riskeer je dat Meshroom niet genoeg overlap vindt met de rest van de beelden en de detailopnames niet gebruikt worden.
VERMIJDEN: BEWEGING EN REFLECTIES
Bewegende objecten kunnen voor problemen zorgen. Voorbijgangers of voertuigen die maar op een of twee foto’s te zien zijn, kan Meshroom bij de berekeningen probleemloos wegfilteren. Maar vegetatie die wappert in de wind en daardoor op bijna elke foto een andere positie inneemt, zorgt bij het algoritme voor verwarring in de zoektocht naar overeenkomstige kenmerken en bijbehorende posities. Ook reflecties en doorzichtige materialen zoals glas veroorzaken problemen. Als je een object wilt digitaliseren voor een 3D-printer een geen kleur nodig hebt in de scan, kun je dergelijke oppervlakken met krijtspray mat maken.
De meeste oppervlakken hebben van nature een mate van reflectie, die zichtbaarder wordt als je er minder loodrecht op kijkt. Kijk bijvoorbeeld onder een scherpe hoek naar een stuk hout of karton. Wat er in het bovenaanzicht ruw en mat uitziet, kan vanuit een andere hoek extreem reflecterend zijn.
Dat effect wordt fresnel genoemd, naar de ontdekker Jean Fresnel, en veroorzaakt onvermijdelijk problemen bij het maken van rondom-foto’s omdat hoeken met problematische reflecties daarbij gewoon onvermijdelijk zijn. Een polarisatiefilter kan dat enigszins beperken.
Vooral voor beginners zijn voorwerpen waaraan de tand des tijds al een poos heeft geknabbeld, zoals roestige voertuigen en machines of verweerde beelden, het meest geschikt. Het aangetaste oppervlak verstrooit niet alleen het licht, maar zorgt ook voor veel fijne details waardoor de algoritmes de verschillende beelden goed kunnen herkennen.
Monochrome oppervlakken zonder details, zoals een wit tafelblad, zijn daarentegen erg lastig. Bij dergelijke beelden kan Meshroom eenvoudigweg geen herkenningspunten vinden. Een stuk krantenpapier als ondergrond helpt dan, omdat de letters en woorden die daaruit worden gevormd perfect bij elkaar passen.
Vaak kom je de tip tegen om onscherpe en andere mislukte foto’s uit de serie te verwijderen. De Meshroom-ontwikkelaars raden dat echter af omdat de software onbruikbare beelden automatisch filtert. Als je de foto’s handmatig selecteert, riskeer je het weglaten van beelden die waardevolle informatie kunnen opleveren voor de reconstructie. Meshroom markeert de ongebruikte beelden met een doorgestreept rood camerasymbool.
MESHROOM INSTELLEN …
Wanneer je Meshroom voor de eerste keer opent, zie je een relatief leeg grijs vlak. Sleep je foto’s vanuit de bestandsbrowser naar het linker venster Images Pane, herkenbaar aan de tekst ‘Drop Images Files/ Folders’. Meshroom genereert dan previews van die beelden en signaleert het einde van het importeren door een startknop in verzadigd groen weer te geven midden boven in het programmavenster.
Elke voorbeeldfoto bevat een klein rond icoontje in de linkerbovenhoek dat eruit ziet als een lensopening. Als dat groen gekleurd is, heeft Meshroom het cameramodel herkend en alle benodigde metadata in het beeld gevonden. Als het lenssymbool rood is, ontbreekt er te veel metadata om een reconstructie uit te voeren. Die kan verloren zijn gegaan bij het converteren met software die de EXIF-gegevens niet voldoende ondersteunt. Als het pictogram geel is, ontbreekt er informatie – meestal de breedte van de sensor. Meshroom haalt die waarde meestal uit zijn eigen database met behulp van de cameramodelgegevens in de EXIF-data.
Als je camera niet op de lijst staat, schat Meshroom de breedte van de sensor in – wat meestal acceptabele resultaten oplevert. Om de maximale kwaliteit uit je scan te halen, voeg je handmatig de juiste sensorbreedte toe. Om dat te doen, klik je op de drie stippen in de rechterbovenhoek van de Images Pane en vervolgens op ‘Edit Sensor Database’. Dat toont instructies om je cameramodel toe te voegen. Je kunt de parameters van het merk en het model achterhalen door met de muis over het lenssymbool bij een van de afbeeldingen in de Images Pane te bewegen – Meshroom geeft dan de EXIF-gegevens weer.
Om de sensorbreedte in millimeters te achterhalen, is een kort internetonderzoek meestal voldoende. Je zou dat ook kunnen uitlezen met de app Camera2Info (zie de link bij dit artikel). Bij multi-lens smartphones moet je helaas kiezen voor een enkele camera omdat Meshroom tot nu toe slechts één lens per apparaat ondersteunt. Voor de iPhone X, die al in de database geregistreerd is, wordt bijvoorbeeld de sensorbreedte van de hoofdcamera gebruikt.
Voordat je op de startknop drukt, moet je nog twee instellingen wijzigen in het deelvenster Graph Editor Properties Pane in de rechterbenedenhoek. Dat toont alle stappen van de enkele beeldreeks tot het afgewerkte 3D-model, waarbij elke stap wordt weergegeven door een eigen node (knooppunt). Selecteer de laatste node met de naam Texturing en stel de ‘Unwrap Method’ in het venster rechts beneden in op LSCM. Die optie voorkomt dat Meshroom meerdere texturen voor het 3D-model creëert. Anders kunnen die, afhankelijk van het aantal geïmporteerde foto’s, zelfs de huidige grafische kaarten met 8 of 11 GB grafisch geheugen overweldigen. Je kunt zien dat Meshroom uit de VFX-industrie komt. Daar haalt men alles uit de hardware om de maximale kwaliteit te krijgen. Als thuisgebruiker kun je beter aan de veilige kant blijven.
In de Meshfiltering-node aan de linkerkant activeer je ‘Keep only the largest mesh’. Dat bespaart je later een stap in Blender omdat alleen het aaneengesloten object wordt opgeleverd en geen andere niet-aangesloten fragmenten en artefacten. Een mooi neveneffect daarvan is dat texturen door het verminderen van de geometrie een hogere resolutie kunnen krijgen. Daardoor wordt een deel van de kwaliteitsvermindering van de vorige stap weer gecompenseerd. Als je object na het verwerken van de scan ontbreekt omdat een stuk achtergrond iets te groot is, moet je die optie weer uitschakelen.
In de Meshing-node aan de linkerkant vind je nog meer belangrijke instellingen. ‘Max Points’ beperkt de grootte van de uiteindelijke mesh, ‘Max Input Points’ het aantal punten dat in aanmerking wordt genomen. De standaardwaarden zijn bedoeld voor pc’s met 16 GB of meer RAM. Als je systeem minder heeft, moet je die waarde dienovereenkomstig aanpassen.
Als je geen CUDA-compatibele grafische kaart hebt, moet je de DepthMap omzeilen, zie de afbeelding op deze pagina. Je kunt de resulterende kwaliteitsvermindering beperken door de Describer Preset in de FeatureExtraction-node op High of Ultra in te stellen. Daarnaast kun je bij Feature Type de functie Akaze inschakelen, maar dat moet je dan ook doen bij de nodes FeatureMatching en StructureFromMotion.
... EN STARTEN!
Wanneer je op de groene startknop drukt, vraagt Meshroom of je het project wilt opslaan. Dat is zeer aan te bevelen, omdat de software niet alleen alle tussenresultaten opslaat, maar in een submap ook het afgewerkte 3D-model. Als je geen eigen projectmap gebruikt, komen al die bestanden gegevens in de tijdelijke map terecht.
Als de foto’s van voldoende kwaliteit zijn en voldoende overlappen, zal Meshroom na een tijdje een 3D-model laten zien –maar dat kan best wel enkele uren duren. Je kunt de voortgang volgen met de balk onder de start- en stopknoppen en in het node-venster. Voltooide nodes worden aangegeven met een groene balk. Je kunt het proces op elk gewenst moment onderbreken en hervatten met de knoppen Stop/Start.
Na de node StructureFromMotion presenteert de 3D-viewer dan een eerste visualisatie van de scène. Hij markeert de berekende posities van de camera en toont kenmerken die op verschillende foto’s als gekleurde punten zijn herkend. In het beste geval geeft die puntenwolk al een aardig idee van het gescande object.
Je kunt de weergave draaien door te klikken en te slepen met de linker muisknop. Als je de Shift-toets ingedrukt houdt, kun je de scène naar links, rechts, omhoog en omlaag bewegen. Als je met de linkermuisknop op een van de camera’s klikt, zie je de bijbehorende foto in het middelste venster. Als je de Ctrl-toets ingedrukt houdt en met de linkermuisknop op een punt in de 3D-weergave klikt, wordt dat het nieuwe draaipunt. Gebruik het muiswiel om heen en weer te bewegen, klik met de rechtermuisknop om de grootte van de camera’s en de punten te veranderen of om elementen te verbergen en te tonen.
Meshroom is succesvol afgerond als zowel de balk bovenin als de startknop groen oplichten. In het venster met de 3D-weergave, de 3D Viewer, zou de knop Load Model moeten verschijnen. Een klik daarop laadt het voltooide 3D-model in de weergave. De nog zichtbare punten en camera’s kunnen met het oogsymbool naast StructureFromMotion worden verborgen of getoond.
FINETUNEN IN BLENDER
Je hebt nu met succes een 3D-model gemaakt van een serie foto’s. Waarschijnlijk bevat dat echter enkele storende elementen. Meestal gaat de kwaliteit van een scan van het midden naar de randen toe achteruit. Zowel de geometrie als de texturen zijn vervormd en de onderdelen kunnen vrij in de ruimte zweven.
Meshroom biedt geen hulpmiddelen voor het bewerken van een 3D-model, zoals het selecteren en verwijderen van gebieden. Dus je moet het object extern verfijnen, bijvoorbeeld met het gratis Blender. Omdat Meshroom de modellen niet expliciet opslaat of exporteert, gebruik je eerst het OBJ-bestand uit de cache. Dat kan worden geopend door met de rechtermuisknop te klikken op de Texturing Node in de Graph Editor en de opdracht Open Folder te kiezen. De bestandsbrowser toont dan een cryptisch genoemde map met één of meer PNG-bestanden en een OBJ-bestand. Als er geen bestandsbrowser wordt geopend, kun je de locatie vinden in het rechtervenster, dat de knooppuntinstellingen weergeeft, helemaal onderaan onder Uitvoermap. Daar kun je het pad kopiëren.
Open dan Blender en verwijder de Default Cube met behulp van X of Backspace. Selecteer ‘File / Import / Wavefront (.obj)’ en open het OBJ-bestand uit de eerder gevonden map. Blender reserveert de middelste muisknop voor de navigatie in de kamer. Je kunt de weergave draaien door de middelste
muisknop ingedrukt te houden en de muis te bewegen. Gebruik daarbij de Shift-toets om naar links, rechts, omhoog en omlaag te gaan. Gebruik het muiswiel om heen en terug te bewegen. Je kunt ook navigeren met behulp van de widgets in de rechterbovenhoek van de 3D-Viewport.
Onmiddellijk na het importeren toont Blender het kale model zonder texturen. Om het oppervlak ook weer te geven, heb je een andere Shading-modus nodig. Die modi zijn te vinden in de rechterhoek van het kijkvenster, direct boven de navigatiewidgets. Daar zie je vier knoppen met verschillend gearceerde bollen, die de vier beschikbare Shading-modi symboliseren. Selecteer de derde van links met het ruitpatroon om het model inclusief de texturen weer te geven.
Naar alle waarschijnlijkheid zal het model willekeurig in de ruimte gedraaid zijn. Draai en verplaats het met de gereedschappen Move en Rotate in de Tool Shelf aan de linkerkant, totdat het op de virtuele vloer staat. Ga dan naar het bovenaanzicht door op de 7 te drukken op het numerieke toetsenbord of door te klikken op de blauwe speldenknop met het label Z in de navigatiewidget.
De volgende stap is het selecteren van het gebied van het model dat je wilt behouden. Schakel daarvoor over naar Edit Mode met de Tab-toets of via het uitklapmenu in de linkerbovenhoek van de 3D-weergave. Het beeld zal enorm veranderen. Het object in de viewport kleurt nu bijna helemaal oranje en aan de linkerkant verschijnen allerlei nieuwe pictogrammen. De oranje kleur markeert de geselecteerde onderdelen. Je kunt de selectie wijzigen door op een selectierechthoek te klikken en die te verslepen.
Maar zet eerst de X-Ray-modus oftewel transparantie aan, anders selecteer je niet alle elementen onder de rechthoek, maar alleen de direct zichtbare. Je vindt de transparante modus direct links van de vier Shading-bollen boven de navigatiewidget. Als je een vrije vorm wilt tekenen in plaats van een rechthoek, verander dan het selectiegereedschap in Select Lasso door op het selectiegereedschap in de Tool Shelf te klikken en de muis ingedrukt te houden totdat er een uitklapmenu verschijnt.
Wanneer je het volledige gebied dat de moeite waard is om te bewaren hebt vastgelegd, keer je de selectie om met de toetsencombinatie Ctrl+I. Door op de X-toets te drukken en Vertices te selecteren in het uitklapmenu wordt dan alles buiten de oorspronkelijke selectie om verwijderd. Gebruik de Tab-toets om terug te keren naar de Object-modus.
Klik ten slotte met de rechtermuisknop op het object en selecteer ‘Set Origin / Origin to 3D-cursor’ in het contextmenu. Als je de 3D-cursor niet hebt verplaatst, ligt de oorsprong van het object nu in het midden van de scène. Zo niet, druk dan op Shift+S, selecteer ‘Cursor to World Origin’ en herhaal het proces. Als je het object nu draait, zul je merken dat het om dat punt draait. Het is belangrijk om de oorsprong van een object te definiëren voordat je het in andere programma’s verder bewerkt.
3D-PRINT, RENDER OF VR
Als je het object in een Blender-scène plaatst en die wilt renderen, ben je bijna klaar met de nabewerking. Gebieden met ruis en oneffenheden kun je gladstrijken met de Smooth Brush in de Sculpt-modus. Voor gebruik in augmented-reality, vorial-reality, op internet of een computerspel, moet je het object nog reduceren of remeshen en vervolgens de texturen en details toevoegen.
Voor 3D-printen heeft het model een wanddikte nodig, die je kunt toevoegen met behulp van de Solidify Modifier. Als je het liever massief wilt printen, moet je het sluiten, want het heeft nog steeds minstens één opening aan de onderkant. De meeste 3D-printtoepassingen bieden daar automatische functies voor. Als alternatief kun je de gaten zelf dichten met behulp van de Meshmodelling-functies van Blender. We hebben de belangrijkste beschreven in onze Blender-workshop.
Het ziet er professioneler uit en biedt minder inkijk in je huis: een mooie achtergrond voor een videoconferentie vervult beide doelen. Met het gratis OBS Studio kun je zelf de beeldcontent voor je webcam samenstellen en doorgeven aan de videoconferentiesoftware naar keuze.
zelf presenteren voor een boekenkast, voor een uitzicht op de Alpen of voor een vooraf gemaakte opname van het dagelijkse leven op een modern kantoor – of wat dan ook. Geschikte foto’s zijn er op internet genoeg te vinden, maar je kunt natuurlijk ook eens in je eigen fotoverzameling kijken of er wat geschikts tussen zit.
Sommige videoconferentie-tools kunnen de achtergrond zelf veranderen, zelfs zonder een groen scherm. Maar dat ziet er zelden perfect uit en werkt niet met alle hardware. En meestal zijn de instelmogelijkheden zeer beperkt – vaak kun je geen video’s of eigen foto’s toevoegen. Met de juiste plug-ins geeft OBS Studio je de volledige controle over je webcambeeld.
HARDWARE-EISEN
Afgezien van een webcam heb je zoveel mogelijk groene of blauwe stof nodig. Je kunt zo’n scherm online kopen voor relatief weinig geld. Het blauwe doek dat we in de test hebben gebruikt is 1,5 bij 2 meter en kost ongeveer 20 euro. Dat doek hebben we op een plank op de achtergrond bevestigd met een gordijnroede en ducttape. Of de achtergrond groen is of blauw maakt niet uit, als de kleur maar sterk genoeg is en niet te fel.
Bevestig de stof zodat die zo glad mogelijk hangt. Eventueel kun je het doek opspannen. Het loont ook om het van tevoren even te strijken, want plooien veroorzaken een ongelijke verlichting en maken het moeilijk voor de software om de achtergrond te onderscheiden. De verlichting is net zo belangrijk. Je moet er niet alleen voor zorgen dat je duidelijk zichtbaar bent, maar je moet de achtergrond ook zo gelijkmatig en helder mogelijk belichten, zodat de kleur sterk naar voren komt. Heldere
daglichtlampen en led-strips zijn bijzonder geschikt. Als er geen greenscreen beschikbaar is (dat mag ook een andere kleur zijn, maar greenscreen gebruiken we als de verzamelnaam), kun je ook een egaal gekleurd matras of vuilniszakken gebruiken – dat werkte bij het testen redelijk goed. Omdat die niet zo groot zijn, kun je alleen een klein gebied rond je hoofd daarmee bedekken.
OPENSOURCE SOFTWARE
De benodigde software voor dit project is zowel gratis als opensource en beschikbaar voor Windows en Linux. De video-opname en live-streaming software OBS Studio is zo’n beetje de standaard onder game-streamers en videoproducenten. Om de achtergrond mooier te maken zijn hier slechts enkele functies van nodig, maar je moet nog wel eerst een plug-in installeren.
Je kunt OBS Studio voor Windows downloaden van de projectwebsite op https://obs project.com en installeren via het installatiebestand. Alle belangrijke Linux-distributies hebben de tool in hun pakketbronnen, zodat die eenvoudig geïnstalleerd kan worden met behulp van het softwarebeheer. Bij alle distributies heb je ook het ffmpeg-pakket nodig, evenals X-Server van X.org versie 1.18.4 of hoger.
Het OBS Studio-pakket is up-to-date voor Arch Linux, maar andere distributies zoals Linux Mint en Ubuntu bieden meestal alleen een verouderde versie die de benodigde plug-in (v4l2sink) nog niet ondersteunt. Ook het Flatpak-pakket dat wordt aangeboden in het softwarebeheer van Linux Mint is niet up-to-date genoeg. Voor beide kun je de laatste stabiele versie (25.0.8 op het moment van schrijven) installeren vanaf een extra pakketbron (PPA) met de volgende drie commando’s: sudo add-apt-repository ppa:obsproject/ obs-studio sudo apt update sudo apt install obs-studio
Dan heb je alleen nog een extra OBS-plug-in nodig voor de virtuele webcam. Daar moet je voor Windows en Linux verschillende wegen voor bewandelen.
VIRTUELE WEBCAM INSTELLEN
Om onder Windows de volledige controle over je webcambeeld te krijgen, heb je de OBS-plug-in OBS-Virtualcam nodig. Download het installer-bestand van de Github-projectwebsite (zie de link op de laatste pagina van dit artikel). Let op: afhankelijk van welke versie van OBS Studio je hebt, moet je versie 2.0.4 of versie 2.0.5 downloaden. Dubbelklik op de installer, je hoeft dan alleen maar door de dialogen te klikken. Je hoeft enkel te beslissen of je vier of slechts één virtuele camera wilt maken. Eén is in de praktijk meestal voldoende. Daarna wordt het menu-item VirtualCam toegevoegd aan Tools.
VIRTUELE WEBCAM VOOR LINUX
Om het beeld dat door OBS Studio samengesteld wordt onder Linux als een virtuele webcam uit te voeren, heb je de OBS-plug-in v4l2sink nodig. Om het beeld door te kunnen geven aan andere programma’s, heb je ook de v4l2loopback-software nodig. Beide zijn te vinden in de GitHub-repository’s bij de link bij dit artikel.
Installeer eerst v4l2loopback, dat de apparaatbestanden voor de virtuele webcam aanmaakt. Bouw onder Arch Linux het pakket v4l2loopback-dkms met de gelijknamige PKGBuild uit de AUR. Bij Linux Mint en Ubuntu download je de huidige broncode van de software van de GitHub-pagina van het project (zie de link), pak het uit en ga je met cd naar de download-directory. Bouw en installeer vervolgens het pakket met de volgende commando’s: make & sudo make install sudo depmod -a
Start vervolgens de module v4l2loopback met sudo modprobe v4l2loopback card_label="obs-cam"
Met die v4l2loopback wordt een nieuwe virtuele webcam gemaakt en krijgt die de naam obs-cam. Met lsmod | grep v4l2loopback kun je controleren of de module echt draait, in de output zou de term v4l2loopback moeten verschijnen. Het commando ls /dev | grep video toont je de beschikbare videoapparaten. Daarin is er dan een bijgekomen. De benamingen (bijvoorbeeld /dev/video2) heb je later nodig om de virtuele webcam in OBS uit te voeren.
Dan ontbreekt de plug-in voor OBS Studio nog: installeer die onder Arch Linux vanaf de AUR met behulp van de PKGBuild obsv4l2sink. Bij Linux Mint kunt je het DEB-pakket gebruiken dat wordt aangeboden op de GitHub-pagina van het project.
Wanneer je OBS Studio dan start, zou je het menu-item ‘v4l2sink’ moeten zien in het menu onder Tools.
VIDEO-ALLROUNDER OBS
De opensource software OBS Studio is een standaard tool voor livestreams en video-opname en is cross-platform. We hebben voor onze doeleinden maar een heel klein deel van de enorme hoeveelheid functies nodig. YouTubers en Twitch-streamers gebruiken de software om complexe scenario’s voor livestreams en video-opnames samen te stellen en kunnen daarmee snel schakelen tussen die scenario’s. Het getoonde
videobeeld kan bestaan uit vele lagen en afbeeldingen en fade-ins kunnen tot op de pixel nauwkeurig worden geplaatst. Je kunt de afzonderlijke elementen met een druk op de knop in- en uitfaden.
Het vinden van de optimale instellingen voor streams en opnames kan ingewikkeld zijn, maar voor een virtueel webcambeeld kun je de meeste instellingen gewoon negeren. Daarom kun je de ‘Automatische configuratieassistent’ wegklikken die je begroet de eerste keer dat je het programma start.
Je moet echter wel bepalen welke resolutie je virtuele webcam moet uitvoeren. Om dat te doen, open je ‘Bestand / Instellingen’, ga je naar het tabblad Video en pas je de optie ‘Uitvoerresolutie (Geschaald)’ aan – 1280×720 zou voldoende moeten zijn voor een videoconferentie. Je kunt alle andere instellingen daar laten zoals ze zijn en je wijzigingen bevestigen met OK.
BOEKENKAST OF BERGPANORAMA?
Dan kun je beginnen met het samenstellen van je webcambeeld. Wanneer je OBS Studio opent, zie je linksonder het veld Scènes. Daar kun je één of meerdere afbeeldingen als scène samenstellen en indien nodig wijzigen. Voor een eenvoudige virtuele webcam heb je maar één scène nodig, waarvoor je bij Bronnen aan de rechterkant de gewenste componenten kunt toevoegen.
Voor het voorbeeldscenario van een videoconferentie heb je in principe alleen een achtergrondbeeld en het beeld van je (echte) webcam nodig. Bij klantencontacten kun je ook een bedrijfslogo laten zien. In plaats van een afbeelding kan er ook een video op de achtergrond lopen, die bijvoorbeeld het dagelijkse kantoorleven laat zien –desgewenst in een eindeloze loop.
Je kunt een nieuwe bron toevoegen met behulp van het plusteken onder het veld Bronnen. Voor een achtergrondafbeelding selecteer je eerst Afbeelding en laat je ‘Nieuwe maken’ staan en geef je de afbeelding een duidelijke naam, bijvoorbeeld ‘strand’. Bevestig met OK en selecteer vervolgens de gewenste strandafbeelding op je harde schijf via Bladeren.
Als je niet meteen een geschikte foto hebt, kun je ook gewoon een bureaublad-achtergrondafbeelding selecteren voor een eerste test. Die kun je later eenvoudig weer omwisselen door er met de rechtermuisknop op te klikken en bij Eigenschappen te bewerken. Nog een keer klikken op OK maakt de bron aan en je ziet de afbeelding in het OBS-venster. Als het beeld een hogere resolutie heeft dan 1920×1080 pixels, zal het waarschijnlijk worden vergroot en onvolledig worden weergegeven. Om de resolutie aan te passen, rechtsklik je op het item in de bronlijst voor een menu, waar je met ‘Transformeren / Transformatie bewerken’ een dialoogvenster opent. Daarin kun je de Grootte van het beeld instellen op de gewenste uitvoerresolutie, bijvoorbeeld 1920×1080 pixels. Je kunt ook de rode ankerpunten met de muis naar een geschikte grootte slepen en bevestigen met Sluiten. Een andere optie is bij Bounding Box Type ‘schaal naar buitenste grenzen’ selecteren, maar je moet oppassen dat de afbeelding daarbij niet vervormt, anders komt de achtergrond niet meer overtuigend over. Je kunt ook de optie ‘Transformeren / Uitrekken naar scherm’ proberen.
Op die manier kun je verschillende achtergronden aanmaken, bijvoorbeeld een met een foto van een Alpen-panorama of een met een chic kantoor voor klantcontacten. Een klik op het oogpictogram in een regel onder Bronnen toont en verbergt de betreffende bron, zodat je de achtergrond snel kunt veranderen. Dat werkt volgens het lagenprincipe, zoals je misschien wel kent van Photoshop of Gimp. In geval van twijfel is het zichtbare altijd het bovenliggende. Verplaats daarom, indien nodig, het webcambeeld met de pijltjestoetsen onder het veld naar de bovenkant, zodat het voor de achtergrond getoond wordt.
BLUE- OF GREENSCREEN
Om jezelf direct voor die achtergrond te zetten, kun je een Chroma Key-filter toepassen. De filmindustrie maakt veel gebruik van dat filter bij het produceren van superheldenfilms. Daarbij wordt een groene of blauwe achtergrond bij de opnames gebruikt.
Voeg eerst je webcam toe aan de scène in OBS door op het plusteken te klikken bij Bronnen en ‘Video opname- apparaat’ te selecteren. Noem het apparaat
bijvoorbeeld Webcam en bevestig met OK. Klik met de rechtermuisknop op Webcam en Eigenschappen om details zoals de gewenste resolutie in te stellen. Laat bij twijfel de instellingen op ‘Standaard van apparaat’ staan. Controleer ook of het beeld van je webcam vertraagd op de monitor verschijnt en zo ja, probeer dan een andere instelling voor Resolutie. Afhankelijk van het besturingssysteem en de webcam zijn er meer configuratiemogelijkheden beschikbaar. Als de video een sterke kleurzweem heeft, moet je de verlichting aanpassen of de helderheid, het contrast, de verzadiging en de witbalans van de webcam configureren in een externe tool zoals Logitech Capture (Windows) of Guvcview (Linux).
Gebruik daarna de muis om het webcambeeld de gewenste grootte te geven. Let ook op de achtergrond: als er een boekenplank achter je wordt weergegeven, moet de grootteverhouding wel redelijk kloppen. Pas als de resolutie en het beeldformaat ingesteld zijn, moet je naar de fijnafstemming gaan.
De volgende stap is het aanpassen van het beeldgedeelte van de webcam aan je achtergrondscherm. Dat zorgt ervoor dat de webcam naast jou alleen een groene (of blauwe) achtergrond opneemt en niet een stuk witte muur. Open het item ‘Transformeren / Transformatie bewerken" in het contextmenu van de webcambron. Je kunt de meeste waarden negeren, experimenteer gewoon met de waarden onder Bijsnijden totdat er alleen nog maar groen of blauw achter je te zien is.
Zorg vervolgens voor transparantie in het beeld: selecteer in het contextmenu van de bron van de webcam Filters. Klik op het plusteken onder het veld Effect Filters, kies Chroma Key en bevestig met OK". OBS zal dan een grijze achtergrond laten zien in de voorbeeldafbeelding waar die zojuist groen was. Het filter is echter nog niet helemaal perfect, meestal flikkert het een beetje en zit er nog een groene rand om je contouren. Als je een blauwe achtergrond gebruikt in plaats van een groen scherm, selecteer dan Blauw bij Key Kleurtype.
Met de schuifregelaars eronder kun je het filter verder instellen. Welke instelling bij jou het beste werkt, hangt af van de verlichting en je achtergrond. Experimenteer met de waarden en controleer het resultaat in de preview. In ons geval hielp het bijvoorbeeld al een heleboel toen we Tolerantie verhoogden tot boven de 400 om de rand kwijt te raken. Als de achtergrond sterk flikkert, moet je extra lampen gebruiken.
Het schermdoek moet zo glad en kreukvrij mogelijk zijn en gelijkmatig worden verlicht. Een paar extra lampen maken het filteren makkelijker dan dat met OBS proberen te doen. Klik op Sluiten om je instellingen over te brengen naar de OBS-scène.
Op vergelijkbare wijze kun je nu andere scènes samenstellen en met een enkele muisklik tussen die scènes schakelen. Dat kan bijvoorbeeld handig zijn als je af en toe op moet staan of iets moet pakken: dan kun je in de tussentijd een scène zonder webcambeeld laten zien met een tekst als ‘Zo terug …’.
VIRTUELE WEBCAM INSCHAKELEN
Of je nu Linux of Windows gebruikt, OBS Studio moet het door jou samengestelde beeld als virtuele webcam doorgeven aan videoconferentieprogramma’s zoals Microsoft Teams, Skype of Zom of welke videoconferentiesoftware dan ook. Om dat te doen, moet je eerst de uitvoer van het beeld als een virtuele webcam in OBS starten door VirtualCam (Windows) of v4l2sink (Linux) te selecteren in het Tools-menu. Klik in het dialoogvenster dat wordt geopend op Starten.
Als je bij Linux dan de foutmelding krijgt ‘format not supported’, pas dan het volgnummer aan het eind van het videoapparaat aan voordat je op Start klikt, bijvoorbeeld naar /dev/video1 of /dev/video2.
Je kunt de virtuele webcam vervolgens gebruiken in een videoconferentietool. Bij Microsoft Teams open je het menu via je profielfoto en vervolgens Instellingen. Ga naar Apparaten en gebruik de vermelding ‘obs-cam’ (Linux) of ‘OBS-Camera’ (Windows) uit de keuzelijst bij Camera.
VOLLEDIGE CONTROLE
De virtuele webcam van OBS Studio geeft je uitgebreide ensceneringsmogelijkheden voor het getoonde beeld bij videoconferenties. Dat beschermt niet alleen je privacy, maar zorgt er ook voor dat het er professioneler uitziet. Je kunt bij voorbeeld een bedrijfslogo rechtsboven in beeld laten zien tijdens klantcontacten en bij workshops. Een video op de achtergrond simuleert een echte kantoorsfeer. Het installeren en configureren is onder Windows redelijk ongecompliceerd, bij Linux hangt dat af van de actualiteit van je distributie of je de software als een totaalpakket kunt installeren of dat je het eerst zelf moet compileren.
Het resultaat kan er echt goed uitzien, maar alle factoren moeten kloppen. De webcam moet een beeld in goede kwaliteit maken, het greenscreen moet glad hangen en de belichting moet gelijkmatig zijn. Een beetje experimenteren kan daarbij helpen. Als je niet wilt dat de kunstmatige achtergrond opvalt, moet je ook oppassen dat je je armen en je hoofd niet uit het door de webcam getoonde gebied beweegt, anders ontbreken ze in het virtuele webcambeeld. Hoe groter het greenscreen, des te beter.