3D Gaussian splatting · RWZI Nieuwveer

Wat remt de kwaliteit, en wat nu?

R&D-lab · 11 oktober 2026 · hoofdmodel b32a8e7635d4 · 84 tegels · concept
Meer foto's van hetzelfde soort helpen niet. Elke plek staat al op honderden foto's; wat slecht scoort is water, schuim en bomen, en die veranderen tussen twee foto's. Wat wél remt: alle foto's komen uit twee kijkhoeken, de helft van de richtingen is een uur later gevlogen, en de camerastanden wijken gemiddeld 4 cm af. Eerst een korte knelpunttest zonder vliegwerk, dan gericht bijvliegen.
290foto's zien elk stukje grond
0foto's lager dan 44°
≈ 4 cmuitlijnfout camera's
+2,2 dBdetail met betere lens

Meer foto's? Kijk waar het slecht is

tegelwater, schuim of bomen
Elke stip is een tegel van 40 × 40 m. Bij ± 400 foto's per plek loopt de score uiteen van 19 tot 26 dB: de inhoud beslist, niet het aantal. De lichte stijging naar rechts is vooral rand (weinig foto's) tegen midden.
Boven: de zes slechtste tegels (water, beluchting, bomen). Onder: de zes beste (verharding, zand, daken).
Boven de 6 slechtste tegels, onder de 6 beste. Rimpelend water, bruisend schuim en bladeren in de wind zien er op elke foto anders uit; meer foto's geven daar alleen meer tegenstrijdige foto's.

Wat het model wel remt

927 foto's recht omlaag, 3.674 schuin onder 45° in 4 vaste richtingen. Kijk je in 3D lager of tussen die richtingen, dan gokt het model.
Twee richtingen zijn een uur later gevlogen. Schaduwen draaien mee en auto's rijden weg; het model maakt daar "per richting een andere kleur" van (de spookbus).
huidige lensoptisch midden vrij
Proeftegel D6, 31 testfoto's. Het optisch midden ligt 58/35 px naast het beeldmidden; dat smeert nu elk detail uit. Het overzicht van schuin zakte 0,4 dB, dus nog één nette proef.
Al geprobeerd: tankvideo. Van 117 frames vielen er 11 in het fotomodel. Zeven tegels opnieuw getraind: alles binnen de ruis. Video (andere camera, compressie) koppelt slecht aan de foto's.
Ook gemeten: 70 van de 84 tegels zitten op het plafond van 1,5 miljoen splats, en de scores worden alleen op 11,4 en 2,9 cm per pixel bepaald, nooit op de echte 1,4 cm. Hoe scherp het model op volle resolutie is, weten we dus niet.

GUI: viewer en beheer

Publieke viewer op wbd-rd.nl/splat met genummerde aandachtspunten
Publieke viewer (wbd-rd.nl/splat). 3D stond uit voor deze schermafdruk.
Beheer, tabblad Verwerking, met genummerde aandachtspunten
Beheer, tabblad Verwerking.
  1. 1Twee versies heten allebei "Heel terrein (88 tegels)", terwijl er 84 zijn. → naam + datum + wat anders is ("+ tankvideo").
  2. 2Nederlands en Engels door elkaar (Complete, Tile run, Move, Measure…); de hele beheerkant is Engels. → alles Nederlands.
  3. 3Vultekst ("Een gedeelde blik op de locatie…"). → weg; vorm, getal, één knop.
  4. 4Onderzoeksknoppen (mesh/splat vergelijken, D6/H4/I6) staan in de publieke viewer, maar Kwaliteit is leeg voor het huidige model. → verbergen voor publiek of aan het hoofdmodel hangen.
  5. 5Kruimelpad staat er twee keer. → één keer.
  6. 63D tekent op 1 beeldpunt per schermpunt en standaard 1,5 van 38 miljoen splats: op een laptop met schaalfactor of een telefoon wordt het beeld opgerekt. → scherp scherm benutten in "Meer detail", keuze onthouden.
  7. 7Logboek in lange Engelse zinnen. → korte regels met icoon en getal.
  8. 8Tegelraster vergelijkt met de vorige versie: bijna alles "=", het zegt niet waar het model zwak is. → standaard een kwaliteitskaart; water/schuim apart gemarkeerd.
  9. 9Scores op 11,4 en 2,9 cm per pixel. → volle resolutie (1,4 cm) erbij.
Verder: tabblad Verwerking is leeg voor publiek; de 2D-kaart heeft overlappende "skipped"-labels en heeft ± 15 s nodig voor alle bovenaanzichten; op een telefoon duwt de modellenlijst de 3D naar beneden; lokaal staan de proefversies van de tankvideo tussen de echte versies.
Sterk, zo houden: logboek met pauzes en reden, automatisch pauzeren en hervatten, 84 tegels die vloeiend streamen, volumetool, orthofoto uit de foto's, aparte publieke viewer en beheer achter login.

Tooling

OnderdeelStandAdvies
App + tegeltrainingDe enige actieve pijplijn; zwaartepunten trainer (1.780 regels) en tegels (1.173)Houden; trainer later opsplitsen
Losse scripts in de hoofdmap30 stuks uit de videofase (run_video, train_model, sfm …), niemand roept ze aanNaar een archiefmap; de DJI-voorbereiding pas weg als de upload in de app een hele vlucht aankan
Experimenten8.218 regels; alleen de kwaliteitsvergelijking zit in de appProef drie tegels en UI-concept archiveren
Tests429 Python-tests, ± 83 browser/node-tests, breed op logicaEén beeldkwaliteitstest op volle resolutie toevoegen
CIGeheimenscan → test-build → image per commitGoed; uitrol naar wbd-rd.nl beschrijven in de repo
Documentatie42 bestanden, 6.084 regels, 8 gedateerde momentopnamesEén ingang (overdracht + 3 architectuurdocs), rest naar archief
Hulpscripts buiten de repoAlleen de geheugenmonitor draait vast; rest zijn losse proefscriptsMonitor als dienst in de repo

Plan

  1. Knelpunttest op 3 tegels ± 2 uur GPU · geen vliegwerk
    Elke variant traint één tegel opnieuw (± 11 min) en meet op dezelfde testfoto's, ook op volle resolutie. Tegels D6 (daken/parkeerplaats), H4 (tanks), J5 (water).
    VariantVraagAls het wint…
    A · helft van de foto'sHelpen foto's nog?Verlies < 0,3 dB → meer van hetzelfde is zinloos
    B · 3 M splats i.p.v. 1,5 MTe weinig splats?Plafond per tegel omhoog
    C · camera's opnieuw uitgelijndTe vage camerastanden?Hele terrein opnieuw (± 16 u)
  2. Viewer scherper uur
    Scherp scherm benutten, keuze onthouden, punten 1–6 hierboven.
  3. Water en schuim apart dag
    Niet harder trainen: water als vlak met de orthofoto erop, bassins buiten de score.
  4. Pas dan vliegen, gericht ½ dag veldwerk
    Zie de vliegtips hieronder.
  5. Losse 48-fotoproeven parkeren
    Puur 3DGS, 2DGS en mesh op 48 foto's gaven geen winst op het live model. Terug naar de tegels.

Nuttige tips

Bekijken

  • Zet Tekendetail op "Meer detail" en zoom in op één tegel.
  • Kijk schuin van bovenaf (knop Schuin aanzicht): dat is de hoek van de foto's, daar is het model het scherpst.
  • Laag over de grond kijken toont gokwerk, geen fout in de viewer.
  • De 2D-kaart met "From the photos" is de echte orthofoto (2 cm).

Meten

  • De schaal komt uit de drone-GPS; het hele model kan 1–2 m verschoven liggen (GPS zonder correctie).
  • Volumes alleen op droge grond; water, overkappingen en holtes zijn onbetrouwbaar.
  • De nauwkeurigheid is nog niet gevalideerd: eerst een object met bekende maat meten.

Bijvliegen

  • Alleen waar je van opzij wilt kijken: rondjes op 20–30° boven de horizon om tanks en gebouwen.
  • Alle richtingen binnen ± 30 minuten, liefst bewolkt; geen rijdende voertuigen.
  • Foto's met dezelfde Mavic 3E, geen video; vaste belichting en witbalans.
  • Laat elk rondje overlappen met de 45°-foto's, dan klikken ze vast.
  • Correctie-GPS (RTK/PPK) of een paar meetpunten op de grond voor maatvastheid.
Aannames. Dekking per plek telt elke foto waarin het punt binnen het beeld valt, zonder afscherming door gebouwen. De testfoto's per tegel (elke 8e foto) zijn representatief voor de kijkhoeken van de viewer. Het vertrek van de bus (± 10:20) komt uit de eerdere bewegende-objectenanalyse.

Bronnen

  1. COLMAP-reconstructie hoofdmodel, dataset vdataset-material-b083e6eccf9e (camera's, lens, 111.582 punten), uitgelezen 11-10-2026.
  2. Tegelresultaten run 967e21fb4e2d en b32a8e7635d4 (result.json, curve.json per tegel), 30-09 en 10-10-2026.
  3. Lensproef tegel D6, vergelijking per testfoto (review-2026-09-30/comparison.json), 30-09-2026.
  4. Schermafdrukken wbd-rd.nl/splat en lokaal beheer, 11-10-2026.
  5. Splat Lab-repository (RnD/3DGS), stand 10-10-2026: scripts, tests, CI en documentatie.
Bronnen en werkwijze. Camera's en punten uit de COLMAP-reconstructie van het hoofdmodel (4.674 beelden, 111.582 punten); dekking berekend op een raster van 4 m per tegelkern, zonder rekening te houden met afscherming. Scores per tegel uit het hoofdmodel (84 tegels, gemeten op eigen testfoto's op 1/8 en 1/2 resolutie). Lensproef op tegel D6 (31 gedeelde testfoto's). GUI-schermafdrukken van wbd-rd.nl/splat en het lokale beheer op 11-10-2026. Rekenscripts staan bij de analyse in het R&D-lab.