Grass-overhang close-ups at the asphalt rim
Why these exist. Since grass demonstrably overhangs the rim, top-down
rasterizations (incl. z-diff) cannot see the true pavement edge there — the highest return wins the cell and the
edge appears to retreat inward. These close-ups show the situation in 3D. Color code in the
class views: grey = pavement returns (±8 cm of fitted asphalt plane),
green→yellow = 0.08–0.45 m above plane (grass), and
RED = pavement returns that have a grass return directly above them in the same
3 cm column — i.e. literal, per-point proof of asphalt under grass.
s049 — the genuine overhang asphalt under grass, confirmed
a1_b000 seg 49, left side, station 90.25. Grass tongue reaches ~0.27 m over the rim; the pavement returns underneath are as bright as the clean road surface (brightness ratio 0.99) — real asphalt, not soil.
s032 — grazing fringe ~0.1–0.15 m, dark under-surface
a1_b000 seg 32, right side, station 32.75. Overhang exists but is shallower, and the returns under the blades are 2.5× darker than clean road — shadowed asphalt or edge detritus; RGB can't distinguish.
s062 — grazing fringe ~0.15 m, dark under-surface
a1_b000 seg 62, right side, station 58.50. Same pattern as s032: convincing green-over-grey in perspective, but the surface beneath the blades is dark (brightness ratio 0.32) — not provably clean asphalt.
Takeaway for the detector
Where grass overhangs (s049-style), a top-down raster puts the edge at the grass line,
not the pavement rim — the error equals the overhang width (0.1–0.3 m here). Recovering the true rim needs the
pavement-height slice (middle top-down panel) or per-column two-return logic (red cells): both are computable from
the same npz points that feed rasterization. Full stats per site in
output/vegnotch/cand_<id>/closeup_stats.json; renderer
output/vegnotch/scripts/pc_closeup.py.