Tree Canopy Mapping from Aerial Imagery

Tree Canopy Mapping from Aerial Imagery

E
By Etzal Earth
12 min read

Tree canopy is one of the few things a city can measure from above that maps directly onto how the place feels and functions. It cools streets, intercepts rainfall, shades buildings, and occasionally brings down a power line. It is also, unlike most urban attributes, genuinely visible from the air.

That visibility is deceptive. Canopy mapping looks like a solved problem because trees are obviously green and obviously distinct from roofs, and it turns hard the moment anyone asks a specific question. How much canopy is there, over what, compared with when, and how many trees is that.

Those last four words are where most canopy projects go wrong, because the number of trees and the amount of canopy are different products, and the methods that produce one do not produce the other.

Why canopy is worth measuring

Heat is the reason that has moved fastest. Surface temperature in a built-up area varies enormously over short distances, and shade is one of the strongest local controls on it. A street with continuous canopy and an identical street without it are different environments in a way that is measurable at the pavement. Work on heat exposure, vulnerable population mapping, or cooling intervention needs canopy at fine resolution, because the variation that matters happens over tens of metres.

Drainage is the second. Canopy intercepts rainfall before it reaches the ground, delays what does reach it, and contributes to infiltration through root structure and improved soil condition. Urban drainage models that treat all non-built surfaces identically get the runoff response wrong in leafy catchments.

Amenity and property are third, established enough that street trees appear in valuation models and planning conditions. That creates demand for canopy data at parcel granularity, which is finer than most methods honestly support.

Risk to infrastructure is the fourth and it inverts the sign. Canopy near overhead lines is a fault source, canopy near railways causes adhesion problems, and roots damage pavements and drains. Utilities and rail operators want to know where vegetation is close to their assets and how fast it is encroaching, which is a proximity and change question rather than a coverage question.

These four uses want different products, and a single canopy layer will serve at most two of them well.

Cover fraction and individual trees are different products

Canopy cover is a proportion: the share of a defined area lying under tree crown when viewed from above. It is a property of an area, not of any tree, computed by classifying pixels or segments and dividing. It has no notion of individual trees and does not need one.

Individual tree detection produces objects: a location, a crown outline, sometimes a height and a species guess. It is a different task, closer to object detection than to classification, and its errors are counting errors rather than area errors.

The two have almost opposite failure characteristics.

Cover fraction is robust to the thing that destroys tree counting, which is that adjacent crowns touch. A block of woodland whose individual trees are impossible to separate still has a well-defined cover fraction close to one hundred percent, and small classification errors at crown edges shift it slightly without changing its interpretation.

Individual tree detection is robust to the thing that distorts cover fraction, which is the definition of the reporting area. A tree is a tree regardless of which polygon it falls in. Cover fraction depends entirely on the denominator, and the denominator is a choice: the whole administrative area, the public realm only, the land excluding water bodies, the street corridor. The same trees produce very different percentages depending on that choice, and comparisons computed with different denominators are meaningless.

The practical rule is to pick the product that matches the question. Heat and drainage want cover fraction. Asset management and street tree inventories want objects. Producing one and reporting it as the other, usually by dividing canopy area by an assumed average crown size to get a tree count, generates a number with no defensible error bound.

The clustering problem

The central difficulty in individual tree detection is that crowns are not separated in a top-down view. In a park, a street avenue, or any closed-canopy area, neighbouring crowns interlock and the boundary between them is not visible from above, because there is no boundary from above: the leaves are continuous.

A segmentation model trained on well-spaced specimen trees performs well in a suburban garden and collapses in woodland, returning one enormous blob where a dozen trees stand. The failure is not a weak model. The information required to separate them is not present in the imagery.

Several mitigations exist and each buys something specific.

  • Local maxima on a height surface. If a canopy height model is available, individual crowns often appear as local peaks with a saddle between them. This works when trees differ in height and fails when they are even-aged and uniform, which describes most planted avenues and plantations.
  • Watershed segmentation on the inverted height surface, which formalises the same intuition and inherits the same limitation.
  • Shadow analysis. Adjacent crowns of different heights cast distinguishable shadows at low sun angles. This is sensitive to acquisition conditions and useless at high sun.
  • Texture cues. Different species have different crown texture at high resolution, so a boundary between two species is sometimes visible even when the canopy is continuous. This does not help within a uniform stand.

None of them solve the general case, and the right response is to accept that individual detection has a density ceiling. Above a certain crown closure, report cover rather than counts, and say so. A product that reports counts everywhere is reporting fabricated counts in exactly the areas with the most trees.

Season, phenology, and the deciduous trap

An aerial capture is an instant. Canopy is not constant.

A deciduous tree in leaf presents a dense crown with a broad footprint. The same tree in winter presents a sparse skeleton through which the ground is largely visible. A classifier trained on leaf-on imagery will miss it entirely in leaf-off imagery, and a cover fraction computed from winter imagery in a deciduous-dominated area will be a fraction of the leaf-on figure.

This produces a specific and common error: a canopy time series assembled from captures taken at different times of year, showing dramatic gains and losses that are entirely phenological. The pattern is easy to recognise once suspected, because it oscillates with a period of a year and correlates with capture date rather than anything on the ground.

Consequences worth planning around:

  • Cover fraction is only comparable between captures in a similar phenological state. Fixing the acquisition window matters more than improving the classifier.
  • Mixed evergreen and deciduous areas appear to change composition, not just magnitude. A winter capture over-represents evergreens, so any species-related statistic derived from it is biased.
  • Leaf-off imagery is genuinely better for some tasks. Trunk and branch structure is visible, ground beneath canopy can be seen, and individual stems in a deciduous stand are easier to separate than in summer. Choosing leaf-off for structure and leaf-on for cover is reasonable provided the two are not then differenced against each other.
  • Drought, disease, and defoliation produce real canopy loss that looks exactly like early leaf fall. Distinguishing them requires a longer time series or corroborating information, and a single pair of captures cannot do it.

Any canopy figure should carry its capture date and, where the region has strong seasonality, its phenological state. Without those, the figure cannot be compared with anything.

Green is not canopy

Vegetation indices separate vegetation from non-vegetation well. They do not separate trees from other vegetation at all, and a surprising number of canopy layers are, in practice, vegetation layers with an optimistic label.

The confusions that matter:

  • Grass and amenity turf. Large, bright green, spectrally very similar to canopy. Playing fields, verges, and lawns can dominate the green area in suburban and institutional land.
  • Crops. Fields near an urban edge produce enormous apparent canopy at certain growth stages and none at others.
  • Shrubs and hedgerows. Genuinely woody and usually not what a canopy product intends to count. The boundary between a large shrub and a small tree is a definitional choice, normally made by height threshold.
  • Green roofs and walls. Deliberately vegetated built surfaces, spectrally indistinguishable from ground vegetation.
  • Artificial turf, painted surfaces, green shade cloth over nurseries and markets, and green-tinted glazing, all of which can pass a naive index test on three-band imagery without a near-infrared channel.
  • Algal cover on still water, which is green, and dark water, which can be misclassified as dense shaded canopy.

The single most useful discriminator is near-infrared, because live vegetation reflects strongly there and artificial greens do not. Where the imagery has only red, green, and blue, the separation of live from artificial vegetation is weak and should be treated as a known limitation rather than tuned away.

Even with near-infrared, grass and canopy remain hard to separate spectrally, because they are the same material. What separates them is not colour. It is height.

Height is what actually separates trees from grass

A canopy height model, produced by subtracting a terrain model from a surface model, converts the problem from a spectral one to a geometric one. Vegetation above a threshold height is tree canopy. Vegetation below it is grass, crops, or low shrub. This is a far more reliable rule than any spectral test, and it is why canopy products built on height data are qualitatively better than those built on imagery alone.

The height data can come from several places. Airborne lidar is the reference and gives both the surface and, through returns that reach the ground under canopy, the terrain. Stereo or multi-view photogrammetry produces a surface model but struggles to see the ground under closed canopy, so the terrain model has to come from elsewhere and any error in it propagates directly into the height.

Two cautions. The terrain model is the weak link in photogrammetric approaches, and on sloping ground a poor one produces canopy heights that vary with slope in a way that looks like a real pattern. And the height threshold separating tree from shrub is a policy choice, not a natural boundary, with different jurisdictions using different values. A canopy figure computed with one threshold cannot be compared with one computed under another, so the threshold belongs in the metadata.

Where height data is unavailable, which is much of the world, the honest position is that the product measures woody vegetation cover rather than tree canopy, and that grass exclusion depends on texture and context cues that fail in some conditions.

The gap between what the map records and what is there

There is a persistent asymmetry in tree data. Imagery shows canopy that no map records, and maps record trees that imagery cannot resolve.

Municipal tree inventories, where they exist, typically cover street trees and trees in managed parks, because those are the ones the municipality maintains. Trees in private gardens, on institutional grounds, in railway corridors, on undeveloped land, and in informal settlements are usually absent. In many cities the majority of canopy sits on private land, so an inventory-based figure can understate the real total substantially.

Volunteer maps have the opposite bias. They contain individually mapped trees where a contributor took an interest, producing dense clusters of records in a few neighbourhoods and nothing elsewhere. Reading tree density from such a map measures mapping effort, not vegetation.

So imagery-derived canopy and map-derived tree records will disagree, and the disagreement is not an error to be reconciled. Each measures something real and different. Imagery measures observed canopy area. An inventory measures managed tree assets. Their ratio is itself informative, since a low ratio of inventoried trees to observed canopy indicates canopy concentrated on land the municipality does not manage, which bears directly on whether a cooling policy can be delivered.

The mistake is to treat one as validation for the other. An inventory is not ground truth for canopy cover, and canopy cover is not a check on inventory completeness, because the populations they describe only partially overlap.

Reporting canopy without claiming a count

The output of a canopy pipeline should make it obvious what was observed and what was inferred.

  • Report cover as an area or fraction with the denominator stated. Percentage of what is the first question anyone should be able to answer from the record alone.
  • State the capture date and phenological state, not the processing date.
  • State the minimum mapping unit. A product that cannot resolve crowns under a few metres across misses young street trees systematically, and that omission is a property of the method, not of the city.
  • State the height threshold and its data source, or state that no height data was used.
  • Do not convert area to a tree count by dividing by an assumed crown size. That number has no error bound and will be quoted as though it were an inventory. If a count is required, produce it by detection, restrict it to the density regime where detection works, and report the area over which counting was attempted separately.
  • Where individual trees are detected, report the detection, not a species or age unless there is a basis for it. Species from overhead imagery is a weak inference in most conditions, and a confident species label will be read as an identification.

The honest limit

Canopy mapping produces one thing reliably, which is a measurement of how much of a defined area was under woody vegetation on a particular day, at the resolution the imagery supports, under a height rule that somebody chose.

Everything beyond that is inference: how many trees, what species, whether the canopy is healthy, whether last year's difference is loss or leaf timing, whether the tree is on public or private land. Each of those inferences can be made and each carries an error that the underlying measurement does not.

The product that gets into trouble is the one that publishes a tree count. It is the most requested figure, the most quotable, and the least supportable, and once it appears in a target or a report it acquires a permanence that the method behind it never earned.