Agent handoff 3 / 4 self-contained — no vault access needed

Implement tree & greenery detection — new repo

2026-07-10 · for a fresh implementation agent on a machine with repo + Nexus access, without the knowledge vault · all research findings inlined · the one class of four where (light) ML is justified

Continuation target: new repo implementing vegetation detection in highway MLS segments: ground normalization → multi-scale covariance ("eigen") features → Random Forest classifier → tree/shrub instances with positions & extents, exported as XML. Deep learning (PointMetaBase) is the fallback, not v1. PDAL provides every classic filter needed — do not reimplement them.

Project context (inlined)

Research findings (inlined — adversarially fact-checked 2026-07-07)

Confirmed:
Refuted claims — do NOT use: Every single-feature vegetation separator died in fact-checking. The multi-feature bundle is the method.
Open: label budget is the real constraint — RF needs little, start tiny and grow only if metrics demand; urban benchmarks → Autobahn transfer is unproven; seasonal leaf state of our scans vs training patches; ask Miro what the CAD deliverable for greenery is (tree points? crown circles? hedge polygons?) — it drives the export schema.

Artifacts to reuse

Nexus index: https://nexus.iolabs.ch/repository/pypi-private/simple (copy [tool.uv.sources] from 3dai.lanefinder). Flat naming: iolabs-point-cloud-* → import iolabs_point_cloud_*. Update: uv lock --upgrade-package … && uv sync.

ArtifactUse for
iolabs-point-cloud-segmentation-trajectory (Nexus)Segment clouds (input)
iolabs-point-cloud-filtering-surface (Nexus)Road surface; height-above-road inside the corridor
PDAL: filters.csf, filters.hag_delaunay, filters.covariancefeatures, filters.dbscanGround, HAG, eigen-features at multiple radii, clustering
iolabs-point-cloud-filtering-clusters (Nexus)Cluster post-processing / density filters
scikit-learn RandomForest + joblibThe classifier; version the training set in-repo
iolabs-point-cloud-modelling-export · iolabs-geometry-visualization · io_orchestrator.ray_stepXML out, QC overlays, pipeline step

Suggested repo/package: 3dai.iolabs.pointcloud.vegetation / iolabs-point-cloud-detection-vegetationconfirm remote/org with Miro.

Algorithm to implement

  1. Ground & height: CSF on the roadside strip → height-above-ground; keep HAG > ~0.3 m within a lateral corridor wider than the guardrail band (e.g. 0–20 m from axis).
  2. Features: covariance features at 2–3 radii (e.g. 0.25 / 0.5 / 1.0 m): the six shortlisted features + verticality, scattering, planarity. PDAL covariancefeatures emits these directly.
  3. Classify: RF on the bundle → vegetation / not-vegetation per point (or per small voxel for speed). Bootstrap labels with CANUPO in CloudCompare on the sample segments.
  4. Instances: DBSCAN on vegetation points → clusters; trees vs shrubs by vertical extent + trunk/canopy profile (thin vertical base + volume above = tree); merge overlapping canopies conservatively.
  5. Export: per-instance XML: axis station + offset, footprint extent, height, class, confidence (schema pending Miro's answer on the deliverable).
  6. Fallback only if RF underperforms: PointMetaBase binary vegetation segmentation, benchmarked on our data first.

Verification

References (inlined)

  1. Weinmann, Jutzi, Mallet & Weinmann (2017). Geometric Features and their Relevance for 3D Point Cloud Classification. ISPRS Annals IV-1/W1. DOI 10.5194/isprs-annals-IV-1-W1-157-2017
  2. Brodu & Lague (2011). 3D terrestrial lidar classification using a multi-scale dimensionality criterion (CANUPO). arXiv:1107.0550
  3. Aditya, Lohani, Aryal & Winter (2023). Benchmarking DL for Urban Vegetation MLS Segmentation. arXiv:2306.10274
  4. CSF: Zhang et al. cloth-simulation filter — github.com/jianboqi/CSF; PDAL filters.csf, filters.covariancefeaturespdal.io

Public research briefs: greenery & posts brief · all 30 sources.

Conventions