Asphalt-edge notches: vegetation, real damage, or detector artifacts?
Percentages
Note on "detector artifact": the adjudication taxonomy had five classes (vegetation / real notch / object / dropout / unclear). All 25 "unclear" verdicts turned out to be the same phenomenon, stated independently by each judge: continuous flat asphalt across the whole notch with the true edge metres further out — the detector latched onto a lane marking, scan-strip seam, intensity boundary, or gore-area paint. These are shown as their own class above (raw taxonomy counts: unclear 25 · vegetation_overhang 16 · real_notch 12 · object_on_edge 8 · dropout 4).
Per dataset
| Unit | n | Detector | Vegetation | Real | Object | Data | Unclear | |
|---|---|---|---|---|---|---|---|---|
| A1 branch 000 | 20 | 9 | 6 | 3 | 2 | 0 | 0 | |
| A1 branch 001 | 8 | 3 | 1 | 2 | 2 | 0 | 0 | |
| A2 | 11 | 5 | 4 | 0 | 0 | 2 | 0 | |
| A3 | 11 | 4 | 4 | 0 | 3 | 0 | 0 | |
| A4/5 | 15 | 4 | 1 | 7 | 1 | 2 | 0 |
Per sampling stratum
| Stratum | n | Detector | Vegetation | Real | Object | Data | Unclear | |
|---|---|---|---|---|---|---|---|---|
| Deepest-20 (depth-ranked) | 20 | 15 | 0 | 0 | 4 | 1 | 0 | |
| Random (≥0.4 m depth) | 35 | 5 | 12 | 11 | 4 | 3 | 0 | |
| A1-central supplement | 10 | 5 | 4 | 1 | 0 | 0 | 0 |
The deepest notches are overwhelmingly detector artifacts — a >2 m "bite" almost never has a physical cause. Random-stratum notches (0.4–1 m deep) are where real vegetation and edge damage live.
Pavement visible under/behind the notch?
| pavement_under_canopy | n | % |
|---|---|---|
| yes | 46 | 71% |
| no | 12 | 18% |
| no_data | 7 | 11% |
Combination verdicts (primary + secondary)
| combination | n |
|---|---|
vegetation_overhang + real_notch | 5 |
vegetation_overhang + dropout | 3 |
real_notch + vegetation_overhang | 3 |
unclear + dropout | 3 |
object_on_edge + dropout | 3 |
real_notch + object_on_edge | 1 |
object_on_edge + vegetation_overhang | 1 |
vegetation_overhang + unclear | 1 |
object_on_edge + unclear | 1 |
How to read the evidence (worked example)
Candidate a1_b000_s001_L_027.25 — a vegetation + dropout combination, the exact
"both at once" mode the experiment was designed to detect:





Reading: grey road, then a thin dark-green vegetation band exactly where the detected edge spikes inward, then magenta (zero returns) behind it. The canopy-stripped view shows no pavement-height returns under the green — LiDAR could not see under this particular canopy — and the cross-sections show the road plane with a curtain of vegetation points above the edge. Verdict: vegetation overhang with occlusion dropout behind it.
Gallery — notable candidates by verdict
Vegetation overhang — 16 of 65 (25%)
a3_s243_L_010.25depth 0.71 m · len 2.25 m · conf 0.75persp_cam005_s242_zoom_depth.png is decisive: a continuous yellow (~0.6 m) guardrail line marks the true outboard limit, and between it and the red-notch crosshair the surface is grey (road-plane height) speckled with orange 0.2-0.4 m returns, i.e. low weeds/grass sitting on top of pavement that continues outboard of the detected edge. The RGB zooms (cam005/cam004) confirm a dark olive band of grass/weeds along the guardrail encroaching over the light-grey shoulder exactly where the red edge jogs inboard of the cyan trend, and topdown_zrange shows the tall/bright band bulging inward at the same station. Only rasters+perspective are available for A3 (no point-cloud renders), hence moderate confidence.


a1_b001_s002_R_102.00depth 0.54 m · len 2.50 m · conf 0.70topdown_pc_dz shows a raised band (dz 0.2-0.8 m) hugging the verge whose tongue pushes onto the pavement exactly at the notch apex, and the detected red edge bends inward to wrap that tongue; pc_stats confirms it is vegetation-like (bite_low_green_med 0.046 vs ref 0.0067, low-point density 714 vs 2467). xsec_along_NN at +1.0 and +2.0 m shows a cyan canopy cluster ~0.7 m above the surface just outboard of the red dashed edge with the flat surface line continuing underneath out to about -1.5/-2.5 m, and topdown_pc_low still has pavement-level (non-magenta) cells 1-1.5 m outboard under that band. Secondary dropout: the large magenta/black wedge in topdown_pc_low, topdown_intensity and the perspective views is the occlusion shadow behind the same vegetation, which removes the returns the detector would have needed further out.




a2_s020_R_037.75depth 0.48 m · len 2.50 m · conf 0.62topdown_intensity shows a smooth, uniform bright pavement return continuing ~50 px (px-sampled mean ~160-170 at x=270-300 on every notch row) outboard of the detected edge, which drops from x~307 above the notch to x~252 through it — i.e. the pavement surface does not end at the notch. topdown_zrange shows the tall/rough boundary sitting at x~253-270 exactly where the red line dives in, so the detector followed low vegetation encroaching over the asphalt rather than the pavement edge; persp_cam001/002_zoom_depth confirm a 0.2-0.6 m (tan/yellow) grass verge band immediately outboard with road-plane grey continuing under it, and no green/white tall canopy or data hole.




Real notch / irregular edge — 12 of 65 (18%)
a1_b000_s045_L_047.75depth 0.49 m · len 0.75 m · conf 0.78xsec_along_NN (all three panels) shows the flat asphalt surface ending at lateral ~0 with the point cloud rising immediately into a 1+ m vegetated bank — no flat pavement-level returns continue outboard of the detected edge. topdown_pc_low confirms it: with the canopy stripped, the band outboard of the red edge is olive ground-vegetation and then magenta, never grey pavement, so the pavement genuinely stops at the hedge. The 0.49 m "notch" is measured against a smooth trend that is itself pulled outboard at along-edge +1.5 to +2.5, where the edge bulges into a locally flat low-vegetation patch (visible as the dark/purple intrusion inside the yellow band in topdown_zrange) — i.e. the candidate sits on the true edge and the neighbours are wrong.




a4_5_s070_R_012.25depth 2.07 m · len 6.25 m · conf 0.72No vegetation or object is involved: topdown_pc_dz is flat (~0 m above the asphalt plane) everywhere near the edge, pc_low keeps 97% of points and is essentially identical to topdown_pc_rgb, and xsec shows no canopy above the surface and no data hole in the notch. The in-notch cross-sections (xsec_along_NN, +0.0/-1.0/+1.0 m) show the detected edge sitting exactly on a genuine break of slope, with a brighter, steeply falling gravel shoulder/drainage swale outboard — pavement really stops there. The apparent notch is largely because the OUTSIDE-notch sections (-3.9 m) have the edge placed ~2.5 m too far outboard, down in the ditch bottom, while the true asphalt step there is at +1.15 m; so the geometry is real but the surrounding edge is the misplaced part (topdown_intensity_wide also shows blocky staircase steps along this stretch).




a4_5_s023_L_034.50depth 0.61 m · len 0.50 m · conf 0.70All three panels of xsec_along_NN.png show a sharp, repeatable material break at lateral x=0: dark low-intensity asphalt inboard, a ~4-5 cm step/berm and higher-intensity (green) flat gravel/soil shoulder outboard — i.e. the asphalt genuinely ends where the notch line sits, and the notch apex is actually the correct edge while the neighbouring polyline at x≈-0.7 overshoots onto the shoulder. topdown_pc_low.png and topdown_pc_dz.png show that outboard band fully populated with dz≈0 (no canopy stripped, no second surface beneath), and topdown_zrange.png is flat/dark over the notch, with the only tall returns being the continuous guardrail band ~0.8-1.2 m outboard, which runs the whole 10 m and therefore cannot explain a local notch. No dropout (cells have points), no local object; the sparse elevated spray at x=-1.1..-1.6 m in the centre slab is vegetation at the guardrail, too far outboard to drive a 0.5 m notch.




Object on edge — 8 of 65 (12%)
a3_s156_L_002.75depth 7.42 m · len 2.00 m · conf 0.78Both perspective zooms (persp_cam003/004_s155_zoom.png) show a roadworks zone: a "Krombacher" billboard hoarding, green temporary fence panels and mesh barrier standing on the paved left shoulder, with no vegetation anywhere near the crosshair (trees are far off-scene). The depth views (persp_cam00{3,4}_s155_zoom_depth.png) confirm the candidate crosshair sits on grey road-plane pavement while the detected polyline (magenta/cyan dots) has been dragged outboard onto the tall billboard/fence line and then hooks back, producing the notch; grey pavement clearly continues under and behind the barrier. topdown_zrange.png shows a bright tall-object band exactly along that edge stretch, consistent with a man-made barrier rather than canopy.


a1_b000_s022_L_025.75depth 6.18 m · len 1.25 m · conf 0.70The detected edge leaves the true grass boundary at y=-6.3 and jumps ~6 m into the carriageway (topdown_pc_low / topdown_pc_dz), yet the pavement there is fully intact: xsec_along_NN shows one continuous flat asphalt surface from x=-6 to +3 with no break, and dz is uniformly ~0 across the whole notch, so this is neither a real notch, vegetation nor dropout. The trigger is a small raised yellow object lying on the road at along-edge -1..+0.5 (bright V in topdown_zrange, yellow smear at the crosshair in persp_cam000/001_zoom, ~15 cm high yellow specks above the surface in the central xsec panel), whose high-zrange cells the detector latched onto together with the dark longitudinal seam at y=0 in topdown_pc_int.




a3_s262_R_011.75depth 7.40 m · len 2.75 m · conf 0.68Both perspective zooms (persp_cam000_zoom.png, persp_cam004_s261_zoom.png) put the red notch crosshair squarely on continuous asphalt several metres inside the roadway — the notch tip is ~7.4 m off the expected edge (persp_meta.json) — and the occluder is not vegetation but a road overpass: cam000_zoom shows dark horizontal bands of bridge-deck points laid over the carriageway, which persp_cam000_zoom_depth.png renders as saturated white (far above the fitted road plane), and topdown_zrange.png shows the notch tip sitting exactly on the boundary of the large high-z-range (yellow) bridge footprint. Pavement is plainly visible under the structure in RGB, so this is an overhead-object artifact, aggravated by a band of grey no-data / very-low-intensity cells outboard of the edge in topdown_zrange.png and topdown_intensity.png. Not vegetation and not a real edge; A3 has no point-cloud renders so confidence is held moderate.




Data dropout — 4 of 65 (6%)
a2_s248_R_001.75depth 2.30 m · len 4.75 m · conf 0.82In topdown_intensity/topdown_zrange the notch is a razor-straight, near-vertical no-data cut (black in BOTH rasters, ~10 m deep, running the full crop height) and the detected red edge simply traces that boundary — a scan/tile coverage boundary, not a physical feature. The zrange cells immediately adjacent to the hole are flat grey with no bright (tall) rim, so no canopy or object is occluding it; topdown_intensity_wide shows the surrounding shoulder texture continuing uniformly right up to the cut. Perspective persp_cam003/004_zoom_depth show the crosshair sitting on flat road-plane-height ground with no green (vegetation) or raised blob nearby, confirming no vegetation/object cause.


a2_s138_R_002.50depth 5.33 m · len 6.50 m · conf 0.78In topdown_intensity/_wide the red polyline kinks exactly on the corner of a black zero-return wedge in the raster — the notch traces the scan-coverage hole, not any physical feature, and topdown_zrange is uniformly flat dark (no tall stuff anywhere near the candidate; the only bright vegetation is far off in the bottom-right corner). The cam003/cam004 depth zooms confirm continuous grey height=0 asphalt on both sides of and well outboard of the cyan edge polyline at the crosshair, with the yellow/green canopy only in the far background. So the detector fell into a data hole on open pavement.


a4_5_s123_R_022.75depth 1.15 m · len 1.75 m · conf 0.78xsec_along_NN shows the flat asphalt surface running unbroken through all three in-notch slabs out to lateral -1.1 m with nothing above it except a continuous guardrail/kerb feature that is present in the OUTSIDE slabs too, so no canopy or object sits over the bitten area; topdown_pc_dz confirms the whole notch is uniform dz~0 pavement plane. topdown_pc_rgb/_low show the bite filled with normal asphalt-intensity cells but peppered with an unusually dense magenta (zero-point) speckle, and pc_stats gives bite_low_density 5598 vs ref 15285 pts/m2 at matching intensity (27218 vs 26170) — i.e. real pavement with ~1/3 the return density. The detector fell into a thin-return/scan-shadow hole, not a physical edge feature.




Detector artifact — 25 of 65 (38%)
a4_5_s025_L_037.00depth 5.97 m · len 0.75 m · conf 0.85The "notch" is a 0.75 m wide, 6 m deep needle-thin spike of the detected polyline shooting across intact asphalt: xsec_along_NN at +0.0 m puts the red dashed edge at lateral -2.9 m in the middle of a perfectly continuous flat surface, while the true pavement break (step down to soil) sits at -6.0 m exactly where the ±1 m sections place it. topdown_pc_low and topdown_pc_dz show uniform pavement-level returns and dz ~0 over the whole spike — no canopy, no magenta dropout, no raised blob — and topdown_intensity shows the spike tracing a thin dark crack/joint line in the asphalt. So this is a detector false positive following an intensity seam, not any of vegetation/object/dropout/real irregularity; none of the physical categories fits, hence unclear.




a1_b000_s052_R_089.00depth 2.94 m · len 5.75 m · conf 0.85None of the physical causes apply: xsec_along_NN shows one continuous, unbroken flat asphalt profile across all five slabs with no step, no canopy points above and no gap at the detected edge, and topdown_pc_low/topdown_pc_rgb show fully populated grey asphalt with lane markings on both sides of the red polyline (zero magenta), while topdown_pc_dz is uniformly ~0 m (no vegetation or object relief). persp_cam007_ctx places the candidate mid-carriageway in a motorway gore/exit area, with the true grass boundary several metres further outboard, and persp_cam008_zoom shows the polyline hugging a painted line / shadow boundary rather than any physical edge. This is a detector artifact on continuous pavement (intensity/marking-driven edge wander), so it fits neither vegetation_overhang, real_notch, object_on_edge, nor dropout.




a1_b000_s080_L_019.50depth 3.92 m · len 1.50 m · conf 0.85xsec_along_NN (+0.0 m panel) shows the asphalt surface running unbroken from lateral -4 m out to +3 m with the detected edge planted at 0 m, i.e. ~4 m inside the true pavement boundary; topdown_pc_rgb/_low and persp_cam000_zoom confirm the notch sits on open grey asphalt right at the painted white edge line, with the real grass/vegetation boundary a full 4 m outboard. No canopy, object, or magenta dropout in the notch area, so none of the physical causes apply — this is a detector artifact snapping the edge onto the road marking, hence unclear rather than vegetation_overhang or real_notch.




CloudCompare click-through (battlebox)
Three of the deepest A4/5 candidates were exported as 15×15 m RGB PLY crops and inspected interactively in CloudCompare by a computer-use agent (top view → oblique → grazing side view → under-canopy close-up).
a4_5_s025_L_037.00




a4_5_s027_L_012.25





a4_5_s135_R_005.75





Session recording (cropped to the CloudCompare window, 24 min): cloudcompare_session.mp4 (10 MB).
Method & caveats
- Mining: notch = contiguous run where lateral edge offset falls ≥ 0.30 m below a Gaussian-smoothed trend of the same polyline, run length ≥ 0.5 m. Population: 2825 notches across A1 b000/b001, A2, A3, A4/5.
- Sampling: 65 candidates = 20 deepest + 35 random (depth ≥ 0.4 m, unit quotas) + 10 supplemental from A1 b000 central segments 40–90 (best RGB, densest multi-pass coverage; corrupted segs 65–67 excluded). Depth-stratified, i.e. not a uniform sample of all notches — overall percentages are indicative, strata rows are the honest view.
- Evidence per candidate: top-down rasters (intensity / z-range / RGB) with the detected edge overlaid, RGB perspective renders (verified camera projection), and for A1/A4-5 true point-cloud evidence: RGB top-down, canopy-stripped top-down (≤15 cm above road surface), RGB cross-sections, oblique 3D view. A2/A3 have no point clouds (perspective + raster only, judged with lower confidence); A2 RGB renders are white → depth views used.
- Adjudication: one vision judge (Claude Opus) per candidate, constrained by a written guide with no straight-edge prior; verdict + secondary + pavement-under-canopy + confidence. Mean confidence 0.68. Single-judge verdicts — borderline vegetation/dropout calls could flip with a second judge.
- Caveats: LiDAR often sees under overhangs (multiple passes, grazing angles), so absence of under-canopy returns does not prove absence of pavement; the notch definition is self-referential (measured on the detector's own polyline), which is exactly why the dominant failure mode turned out to be the detector itself; deepest-20 stratum oversamples pathological cases by design.
Data paths
- Sample manifest + verdicts:
output/vegnotch/candidates.json,verdicts_batch1.json,verdicts_batch2.json,verdicts_all.json - Population:
output/vegnotch/population.json(2825 notches, per-unit + depth histogram) - Evidence bundles:
output/vegnotch/cand_<id>/(65 dirs) - Battlebox:
/mnt/d/ai3d-aml/vegnotch/(renders, PLY crops inply/) - Adjudication guide:
output/vegnotch/ADJUDICATION_GUIDE.md