Ga naar inhoud
Terug naar blog
AI Segmentation
QGIS
Handleiding

Boomkroon in kaart brengen in QGIS: 6 methoden

Drie panelen van hetzelfde parklandschap: gewone luchtbeelden, een NDVI-raster met vegetatie in rood en elke boomkroon als eigen gekleurde polygon.

Om boomkronen in uit multispectrale beelden in kaart te brengen, bouw je NDVI op in Raster > Raster Calculator…, knip je die op een drempelwaarde met Reclassify by table en voer je daarna Raster > Conversion > Polygonize (raster to vector) uit. Daarmee krijg je bedekking, geen afzonderlijke bomen. Vijf andere methoden behandelen LiDAR, open data en het geval waarin je één polygon per kroon nodig hebt.

Waar het internet de mist in gaat

Drie antwoorden blijven terugkomen in tutorials en forumdiscussies, en elk daarvan kost je een middag.

"Pas een drempel toe op NDVI en je hebt je bomen." NDVI scheidt groen van niet-groen. Een gazon, een tarweveld en een eik zijn allemaal groen, dus ze komen alle drie in dezelfde klasse terecht. NDVI geeft je vegetatiebedekking, en die canopy noemen is een beslissing die je moet kunnen verdedigen.

"Voer het canopy height model rechtstreeks uit op het LAS-bestand." Het grondoppervlak komt uit de punten die als ground zijn geclassificeerd, en QGIS 3.44 heeft geen algoritme dat ze classificeert. Op een niet-geclassificeerde point cloud levert het filter niets op en wordt het terrein vlak.

"Installeer de Semi-Automatic Classification Plugin, de nieuwste versie." Release 9.0.4 heeft QGIS 3.99 nodig, de QGIS 4-lijn. Op QGIS 3.44 biedt de manager je 8.5.0 uit november 2024 aan, dus controleer eerst welke versie je werkelijk hebt gekregen voordat je je samples de schuld geeft.

Het korte antwoord

Wat je hebtMethodeWat het kost
Multispectrale beelden met een nabij-infraroodbandMethode 1, NDVI en daarna polygoniserenGratis, QGIS-kern
LiDAR, of een DSM en een DTMMethode 2, canopy height modelGratis, QGIS-kern
Beelden en meerdere klassen om te scheidenMethode 3, supervised classificationGratis, één plugin
Een groot gebied, waarbij de datum van vorig jaar goed genoeg isMethode 4, een open canopy-datasetGratis download
RGB-beelden en een NVIDIA-kaartMethode 5, een lokaal segmentation modelGratis, plus een model dat je moet vinden
RGB-beelden, geen kaart, en je wilt boomkronenMethode 6, een cloud segmentation modelGratis tier, daarna een abonnement

Voordat je begint

Werk in een geprojecteerde CRS. Elke methode hier eindigt in een oppervlakte, en een oppervlakte in graden is niets waard.

Bepaal of je bedekking of boomkronen nodig hebt. Bedekking is één oppervlak waar een percentage uit volgt. Boomkronen zijn telbare objecten, precies wat een straatinventarisatie of parkregistratie nodig heeft.

Methode 1: NDVI-drempel

NDVI scheidt groene vegetatie van daken, wegen en water. Open Raster > Raster Calculator… en voer ("nir@1" - "red@1") / ("nir@1" + "red@1") in.

An NDVI raster over a French village in QGIS, vegetation bright and roofs dark, with the layer histogram beside it showing two peaks.
NDVI from a Sentinel-2 scene. The histogram has two peaks and the valley between them is your threshold. There is no universal number, so read your own scene.

Voer daarna Reclassify by table uit (native:reclassifybytable, Processing Toolbox, Raster analysis), met één rij boven de drempel en één eronder, en stel het outputgegevenstype in op Byte. Polygoniseer het resultaat.

Gebruik dit wanneer: de beelden een nabij-infraroodband bevatten en je bedekking wilt.

Sla dit over wanneer: bomen van gazon of gewassen moeten worden onderscheiden. NDVI kan dat niet, omdat ze alle drie groen zijn.

Methode 2: Canopy height model uit LiDAR

Hoogte is het enige signaal dat een boom wel van een gazon scheidt, en QGIS bouwt beide oppervlakken rechtstreeks uit een LAS- of LAZ-bestand met Export to raster (pdal:exportraster, Point Cloud Conversion). Stel Attribute in op Z. Voeg voor het terrein de filterexpressie Classification == 2 toe, wat in de ASPRS-klassen die QGIS gebruikt Ground is. Filter voor het oppervlak op ReturnNumber == 1.

A canopy height model in QGIS coloured from green at ground level to dark red at 25 metres, tree crowns standing out over flat grey ground.
DSM minus DTM over a park. Crowns stand out because they are tall, not because they are green, so lawns and gardens drop out on their own.

Trek de ene van de andere af in Raster > Raster Calculator… met "dsm@1" - "dtm@1", of in grass:r.mapcalc.simple voor grotere tegels. Classificeer opnieuw op de hoogte die je specificatie als canopy beschouwt en polygoniseer daarna. De uitvoer bevat een hoogte per pixel, iets wat niets anders op deze pagina je geeft.

Gebruik dit wanneer: je LiDAR hebt, of een nationale DSM- en DTM-combinatie.

Sla dit over wanneer: je punten niet geclassificeerd zijn. QGIS 3.44 heeft geen algoritme voor grondclassificatie, dus niet-geclassificeerde punten gaan eerst buiten QGIS door PDAL.

Methode 3: Supervised classification

Teken trainingspolygonen voor boom, gras, dak en weg, laat daarna een classifier elke pixel labelen en polygoniseer de boomklasse. dzetsaka is de plugin die ik vandaag zou installeren. Hij is GPL, versie 5.0.11, werkt op QGIS 3.0 tot en met 4.99 en bevat elf classifiers, waaronder Random Forest en SVM.

De Semi-Automatic Classification Plugin is bekender en verwerkt ook band sets en preprocessing, maar controleer eerst de versie. Release 9.0.4 heeft QGIS 3.99 nodig, de QGIS 4-lijn. Op QGIS 3.44 krijg je 8.5.0 uit november 2024.

Gebruik dit wanneer: canopy één klasse is uit meerdere klassen die je uit dezelfde scène nodig hebt.

Sla dit over wanneer: bomen het enige zijn wat je wilt. Trainingssamples kosten meer tijd dan Methode 1.

Methode 4: Een open canopy-dataset

Misschien heeft iemand jouw gebied al in kaart gebracht.

Copernicus Tree Cover Density loaded in QGIS over a European city, shaded from pale to dark green by percentage of tree cover.
Copernicus Tree Cover Density streamed into QGIS as a WMTS layer. Free, finished, and the wrong tool the moment you need this year's imagery.

Vier datasets zijn de moeite waard om te kennen. De Meta and WRI canopy height map is wereldwijd beschikbaar, versie 2 sinds maart 2026, met pixels van 1,2 m en een gemiddelde absolute fout van 3,0 m ten opzichte van airborne LiDAR. De kaart van ETH Zurich heeft een resolutie van 10 m voor 2020, is gebaseerd op Sentinel-2 en GEDI en valt onder CC BY 4.0.

De andere twee zijn regionaal of historisch. De Copernicus Tree Cover Density-layer dekt Europa op 10 m, jaarlijks van 2018 tot en met 2024, en voor het downloaden heb je een EU Login nodig. Hansen Global Forest Change heeft een resolutie van 30 m en begint in 2000, dus dit is de dataset voor veranderingen door de tijd.

Steden publiceren hun eigen data. Parijs biedt 219.432 bomen als punten aan, Melbourne 57.980 canopy-polygonen voor 2021, beide als een GeoJSON-URL die je in QGIS plakt.

Alle vier de globale rasters beantwoorden range requests, dus stream een tegel met /vsicurl/ in plaats van die te downloaden. Copernicus biedt WMTS aan op https://land.copernicus.eu/cdse/tcd_europe_10m_yearly, waar je het jaar handmatig instelt. De service adverteert elke datum terug tot 1984, terwijl bijna geen daarvan data bevat.

Gebruik dit wanneer: het gebied groot is en de opnamedatum niet per se van jou hoeft te zijn.

Sla dit over wanneer: je de locatie vorige maand hebt gevlogen, of wanneer je boomkronen nodig hebt. De meeste hiervan zijn percentage-rasters, geen telbare objecten.

Methode 5: Een lokaal segmentation model

Deepness, Geo-SAM en samgeo draaien segmentation models op je eigen machine. Er verlaat niets je machine en er wordt niets gefactureerd.

Gebruik dit wanneer: de beelden je machine niet mogen verlaten.

Sla dit over wanneer: je geen NVIDIA-kaart hebt, of geen zin hebt om een model te zoeken, gewichten op te vragen en een Python-omgeving te bouwen.

Methode 6: Een cloud segmentation model

Een segmentation model heeft geleerd hoe een boomkroon eruitziet en splitst een bosbestand op in telbare objecten waar een drempel één aaneengesloten vlak oplevert. Wij bouwen er één, AI Segmentation. Deze sectie gaat over onze eigen tool.

Teken een zone over de beelden die al openstaan in QGIS en typ één woord. De polygonen komen in de CRS van je project terecht, elk met een oppervlakte en een confidence score. Typ tree voor één polygon per boomkroon, tree canopy voor de bedekking als oppervlak.

A Dutch village from the air where every tree crown, in gardens and along the streets, is filled with its own colour as a separate polygon.
893 crowns from one run over a Dutch village, each its own polygon. Counted off the layer, not estimated.

Het beste voor: één polygon per boomkroon uit RGB-beelden, op een machine zonder GPU.

Prijs: gratis voor 3 km² grond per maand plus 50 cloud Semi-Auto-objecten, zonder kaart. Pro kost 39 euro per maand exclusief btw voor 200 km² en 500 objecten.

Draait op: QGIS 3.22 en hoger, Windows, macOS of Linux. Het model draait op onze servers in de Europese Unie.

Installatie: plugin manager, daarna een e-mailadres om in te loggen. Geen packages, geen gewichten.

Waar het wint: het gewone woord werkt goed. Over 90 dagen met echte runs kwam tree leeg terug op 10.5 procent van de tegels, tegenover 47.3 procent voor orchard over 716 tegels, dus de plugin stuurt het tweede woord naar het eerste voordat je iets uitgeeft.

Waar het tekortschiet: in een gesloten bosbestand zijn geen kroonranden te vinden, dus een tree-run levert één vlak op in plaats van één polygon per stam. Gebruik daar tree canopy en accepteer bedekking. Beide cloud-modi sturen beelden naar onze servers, alleen Semi-Auto op je eigen machine doet dat niet.

De zes methoden naast elkaar

Wat je nodig hebtMethode
Bedekking uit je eigen multispectrale beeldenMethode 1
Canopy height, of bomen gescheiden van grasMethode 2
Canopy als één klasse uit meerdereMethode 3
Een groot gebied, snel en gratisMethode 4
Boomkronen, zonder dat er iets van de machine vertrektMethode 5
Boomkronen uit RGB-beelden, zonder GPUMethode 6

Wat je moet onthouden

Kies tussen bedekking en boomkronen voordat je een methode kiest, want dat gaat over je eindproduct en niet over je beelden.

Hoogte verslaat kleur wanneer je die kunt krijgen, dus een canopy height model uit LiDAR wint overal waar LiDAR beschikbaar is.

NDVI leest een gazon, een gewas en een eik als hetzelfde, dus een drempel alleen levert nooit bomen op.

In een gesloten bosbestand zijn geen kroonranden te vinden, dus elke methode op deze pagina levert daar bedekking op en geen enkele levert een stamtelling.

Voor een percentage boomkroonbedekking in heel Europa is de Copernicus-layer gratis en al af, dus een model over dat gebied draaien betekent twee keer betalen voor hetzelfde antwoord.

Try it free in QGIS, no card needed

Vragen die mensen stellen

Kan QGIS boomkroonbedekking in kaart brengen zonder plugin?

Ja, met Methoden 1, 2 en 4, die bestaan uit QGIS-kern plus een download. Wat je krijgt is bedekking als polygonen, nooit afzonderlijke boomkronen.

Eén polygon per boom, of één voor de hele kroonbedekking?

Een NDVI-drempel of een hoogtemodel geeft je bedekking. Alleen een segmentation model splitst een bosbestand op in telbare boomkronen, en in Methode 6 bepaalt het woord dat je typt welke van de twee je krijgt.

Hoe bereken ik een percentage boomkroonbedekking?

Elke polygon heeft zijn eigen oppervlakte, dus tel de kolom met oppervlakten op en deel die door de oppervlakte die je hebt gemeten. Dat is één veldberekening op geometrie die je kunt openen en controleren.

Wat is nauwkeuriger, NDVI of een LiDAR-hoogtemodel?

Het hoogtemodel, en het verschil is groot. NDVI leest een gazon en een eik als hetzelfde, terwijl een canopy height model ze met meerdere meters verschil van elkaar scheidt.

Is iets hiervan gratis?

Methoden 1 tot en met 5 kosten niets behalve je eigen data en voor Methode 5 een grafische kaart. Methode 6 geeft 3 km² per maand gratis, daarna kost het 39 euro per maand exclusief btw.

De handleiding van raster naar vector loopt door de polygoniseer- en opruimstappen waar elke methode hier mee eindigt, en de SAM in QGIS-post vergelijkt de plugins die segmentation models draaien. De QGIS AI-hub staat boven beide.