AI3D-373 — vegetation split: pictures for the open questions

27 Aug 2026 · Miro · oblique renders of the delivered LAS, orthographic, 1 m scale bar + height ruler

Four delivered LAS variants of the AI3D-373 vegetation split, rendered as oblique close-ups so the shape and height of the green stuff is visible — a top-down raster cannot tell a 0.3 m grass strip from a 1.5 m box hedge. Every question below is a decision I cannot make from the numbers alone.

A = segment 085, from_ground=TRUE · B = segment 085, from_ground=FALSE (the current default) · C = segment 003, from_ground=TRUE · D = segment 060, from_ground=FALSE. A and B are the same point cloud with the same knobs (exg 0.10); the only difference is whether green "tablecloth" ground rows are allowed to become low_vegetation. Flip between the A and B picture of a pair and the only thing that moves is yellow-green vs brown.

How to read the renders

Class colours

low_vegetation 3medium_vegetation 4tree 5ground 2asphaltguardrailvehiclesolid_line

Q1 — hedge, wall, or trees?

Decision: across the three probe segments the verticalsigns hedge rule flipped exactly one cluster from tree to medium_vegetation: this one, 8.4 × 7.4 m on the ground, 4.6 m tall. Is that a hedge (rule right), a wall/noise (rule right for the wrong reason), or a group of small trees (rule wrong)? If it is the third, the whole hedge rule earns its keep on one false positive.
C003x/q1_hedge_or_wall_003_az225.png
seg 003 / C (from_ground=TRUE) / q1_hedge_or_wall_003 @ 691188.7, 5382641.4, R 8 m, az 225°, elev 12°, fat splats. Look at: the mint tree column standing 0→4.5 m against the ruler with dark-green medium_vegetation wrapped round its base — no flat face, no straight top line, so this reads as vegetation rather than a wall. Only 2,939 points in the whole 8 m disc (930 medium / 822 tree / 733 ground / 297 low) — this is a far, thin part of the scan, which is why the splats are enlarged here.
C003/q1_hedge_or_wall_003_az045.png
Same spot, opposite side (az 45°, elev 20°, normal splats). Look at: whether the mass is one continuous 4 m-tall body (hedge/tree) or two separate low blobs; and whether the RGB panel shows leaves or masonry.
C003/q1_hedge_or_wall_003_top.png
Same spot, plain top-down at 0.02 m/px. Look at: the footprint — a hedge is a ribbon, a tree group is round blobs. Here the mint cluster is a ~4 m round blob with medium (dark green) satellites, not a ribbon.
C003/q1_tree_neighbour_003_az045.png
seg 003 / C / q1_tree_neighbour_003 @ 691197.8, 5382686.0, R 8 m, az 45°. The detector tree cluster 45 m up the road that the hedge rule did not flip: 8.4 × 7.9 m footprint, 3.1 m crown. Look at: tree 5,249 / low 3,828 / medium 3,220 — a real broad crown sitting on a low-veg bank, with orange guardrail at the left edge for scale.
C003/q1_tree_neighbour_003_az225.png
Same neighbour, opposite side (az 225°). Look at: side-by-side with the flipped cluster above — is the flipped one really a different kind of object, or just a sparser scan of the same kind of roadside shrub-tree?

Q2 — keep the detector trees?

Decision: the tree detector keeps things the vegetation split would otherwise have banded as medium or low. Two cases: a 4.8 × 4.8 m, 4.5 m-tall "tree", and the verge behind the guardrail where the QC pass saw 1–2 m scrub labelled tree interleaved with medium and low. Keep them as trees, call them hedge, or call them grass?
A085/q2_short_tree_085_az045.png
seg 085 / A (from_ground=TRUE) / q2_short_tree_085 @ 696894.8, 5387624.7, R 8 m, az 45°. Look at: the centre column against the ruler — it is a genuine trunk-and-crown from ~0 to 4.5 m, not a bush. tree 16,568 / ground 4,575 / low 1,453 / medium 750.
B085/q2_short_tree_085_az045.png
Same spot, B (from_ground=FALSE), identical camera. Look at: the tree body is pixel-identical; only the floor changed — low 1,453→21 and medium 750→10, all of it back to ground 4,575→6,747. The tree decision is untouched by from_ground.
A085/q2_short_tree_085_az225.png
Same tree from the other side (seg 085 / A, az 225°). Look at: the crown outline against the 4 m tick — if this silhouette is acceptable as a tree, the detector’s 4.5 m floor is fine.
A085/q2_verge_scrub_085_az045.png
seg 085 / A / q2_verge_scrub_085 @ 696848.9, 5387605.9, R 10 m, az 45°. The verge behind the guardrail. Look at: the yellow-green low_vegetation carpet running up the bank, dark-green medium patches inside it, and mint tree blobs at the far edge that are only 1–3 m tall by the ruler. asphalt 365,751 / guardrail 50,997 / ground 33,715 / low 29,092 / tree 22,263 / medium 7,240.
B085/q2_verge_scrub_085_az045.png
Same spot, B (from_ground=FALSE), identical camera. Look at: the entire yellow-green carpet turns brown — low 29,092→4,827, ground 33,715→60,436, medium 7,240→4,828 — while the mint tree blobs stay at 22,263. This one pair is the clearest statement of what from_ground does.
A085/q2_verge_scrub_085_top.png
Same verge, plain top-down at 0.02 m/px (seg 085 / A). Look at: whether the mint tree patches form a continuous hedge-ribbon along the guardrail (then they are hedge, not trees) or scattered round crowns.

Q3 — is the 0.5 m low/medium cut right?

Decision: everything under low_max_m=0.5 is low_vegetation, everything from 0.5 to medium_max_m=2.0 is medium_vegetation. These are the two boundary spots the auto-picker chose on 085 (cells where both classes live within 1 m of each other), plus four auto-picked spots on a middle segment. Does the yellow-green/dark-green line fall where you would draw it by eye?

085 boundary spots, A vs B

A085/edge01_az045.png
seg 085 / A (from_ground=TRUE) / edge01 @ 696830.6, 5387635.1, R 8 m, az 45°. Look at: the dark-green medium clumps rise above the 0.5 m tick and the yellow-green low sits below it — check that the colour change tracks the ruler and not the brightness. ground 35,883 / low 6,912 / medium 4,646.
B085/edge01_az045.png
Same spot, B (from_ground=FALSE). Look at: low 6,912→2,057 and medium 4,646→1,966 — here from_ground takes away roughly two thirds of both vegetation classes, so this spot is mostly tablecloth ground with sparse growth on top.
A085/edge02_az045.png
seg 085 / A / edge02 @ 696834.1, 5387590.6, R 8 m, az 45°. The richest boundary spot: low 26,226 / medium 4,448 / ground 31,663. Look at: the dark-green fringe hugging the orange guardrail — is that really 0.5–2 m growth, or grass that happens to sit on a raised kerb?
B085/edge02_az045.png
Same spot, B (from_ground=FALSE). Look at: low 26,226→8,299, medium 4,448→3,141, ground 31,663→50,917. The medium fringe survives in both; only the carpet flips.

Segment 060 (D, from_ground=FALSE) — four auto-picked spots

D060/med01_az045.png
seg 060 / D / med01 @ 694810.6, 5386286.0, R 8 m, az 45° — the biggest medium blob on the segment (1,662 cells). Look at: a dark-green medium mat covering the embankment from 0 to ~2 m with essentially no low (medium 15,774 vs low 161). Hedge or just tall grass on a slope?
D060/med02_az045.png
seg 060 / D / med02 @ 694865.6, 5386275.5, R 8 m, az 45° — the second medium blob (218 cells). Look at: medium 2,201 vs low 5 inside a mostly brown window (ground 18,545): the 0.5 m cut is putting everything on one side here, which is either right (real bushes) or a sign the ground plane sits too low.
D060x/low01_az135.png
seg 060 / D / low01 @ 694817.1, 5386269.5, R 8 m, az 135° (re-shot across the road; at az 45° the guardrail was a wall). Look at: the "largest low patch" on this segment is a median strip almost entirely covered by guardrail 287,224 and vehicle 45,356 — only 234 low and 1,102 medium survive. The RGB panel shows obvious green scrub the class panel never sees.
D060x/edge01_az135.png
seg 060 / D / edge01 @ 694801.1, 5386258.5, R 8 m, az 135° (re-shot across the road). Look at: same story — medium 2,621 / low 323 against guardrail 283,279 and vehicle 36,322. On a middle segment the low/medium question in the median is drowned by the guardrail and the vehicle ribbon before it is ever asked.

Q4 — tablecloth ground → low vegetation, and the median

Decision: from_ground decides whether green rows that the ground fitter has already claimed (the "tablecloth") may be re-labelled low_vegetation. A (TRUE) paints the verges yellow-green; B (FALSE, current default) leaves them brown. Second half of the question: the median between the carriageways, where a grass ribbon sits between two guardrails and a false vehicle ribbon covers it — how far does the asphalt guard reach in there?

The median, seen from above the guardrail

A085y/q4_median_085_az135.png
seg 085 / A (from_ground=TRUE) / q4_median_085 @ 696863.9, 5387630.9, R 10 m, az 135°, elev 40° (looking down into the median; at elev 20° along the road the guardrail hides everything). Look at: the RGB panel shows an unbroken green ribbon between the two guardrails; the class panel paints that same ribbon orange guardrail + pink vehicle, with only a thin yellow-green fringe. asphalt 1,275,918 / guardrail 285,852 / ground 120,104 / vehicle 66,094 / low 13,340 / medium 812 / tree 0.
B085y/q4_median_085_az135.png
Same median, B (from_ground=FALSE), identical camera. Look at: low 13,340→8,517, medium 812→1,504, ground 120,104→124,443. Inside the median from_ground barely matters — the grass there is lost to guardrail/vehicle, not to ground. That is the asphalt-guard reach question, not the from_ground question.
A085x/q4_median_085_az135.png
Same median at eye level (seg 085 / A, az 135°, elev 20°). Look at: the pink vehicle ribbon running the full length of the median at 0–1 m — a moving-object artefact lying exactly where the grass is. Nothing in the median is ever offered to the vegetation stage.
A085/q4_median_085_top.png
Same median, plain top-down at 0.02 m/px (seg 085 / A). Look at: the width of the orange+pink band versus the green ribbon in the RGB half — that difference is how much median vegetation the guards are eating.

60 × 60 m overview of segment 085, A vs B

ovA/A1_b000_seg085_260827_crop_overview_side.png
seg 085 / A (from_ground=TRUE), top-down crop 696830–696890 × 5387580–5387640 at 0.05 m/px. Look at: the wide yellow-green low_vegetation apron between the guardrail and the tree line. ground 752,277 / tree 314,776 / low 112,637 / medium 24,317.
ovB/A1_b000_seg085_260827_crop_overview_side.png
seg 085 / B (from_ground=FALSE), same crop, same resolution. Look at: the apron is brown. ground 752,277→851,044, low 112,637→25,381, medium 24,317→13,050, tree unchanged at 314,776. So from_ground=TRUE moves ~99k points from ground to low and ~11k to medium in this one 60 × 60 m window — the RGB half is the tiebreaker on whether that apron is grass or bare shoulder.