PRISM-3D
PRISM-3D
A forest segmentation workflow inspired by the principles of biological flow and human vision
PRISM-3D is a collaborative initiative between SPECLab GatorEye and CSER, supported by funding from ARRI, SPECLab GatorEye, and additional sources.
Principal Investigators: Broadbent, E., Almeyda Zambrano, A.M., Medley, P., and Drake, J.
PRISM-3D represents a top-tier system for unsupervised point cloud segmentation in forest environments. The framework integrates biologically inspired flow dynamics and principles of human visual perception to improve structural delineation within complex forest point clouds.
Project webpage: https://www.speclab.org/prism-3d
Web application (beta): https://prism-3d.fly.dev/
Beta Access Notice
All workflows are currently under active development and ongoing integration with additional forest types and varying point cloud acquisition parameters, including density and structural variability.
Citation
Broadbent, E., Almeyda Zambrano, A.M., Medley, P., and Drake, J. PRISM-3D: Web-based forest segmentation workflows inspired by the principles of biological flow and human vision. Accessed [Version] at https://www.speclab.org/prism-3d on [Date].
License
Beta preview use only. Commercial use is not permitted. Duplication, redistribution, or reverse engineering of the system is prohibited.
FLOW - outputs (LAS fields)
Versions
v15.1 - 03/01/26 - Improvements to web app interface processing capabilities.
v3.1 - 02/25/26 - Initial beta release of web app.
v1.0 - 08/15/25 - Initial framework (C++).
v15.1 - 03/01/26 - Improvements to web app interface processing capabilities.
v3.1 - 02/25/26 - Initial beta release of web app.
v1.0 - 08/15/25 - Initial framework (C++).
Methods (detailed):
PRISM 3D segments individual trees from Lidar-derived point clouds using principles and inspiration of biotic flow mimicry and human vision — simulating how water and nutrients move through tree structure to identify trunks, branches, and crowns. No training data required. Works across forest types from open woodland to dense multi-layer canopy.
Multiple Independent Workflows
Flow
Voxel-based biotic flow mimicry — simulates downward/upward biological flow through 3D voxel space, then Dijkstra expansion from detected seeds. Primary segmentation workflow.
Vision V3
Vision-based workflow for standalone automated point cloud 3D profiling and segmentation. Supportive secondary workflow.
Connectivity
Full per-point tree segmentation via downward flow paths — every point flows to ground via the cheapest KNN path; ground terminals are clustered into trees; every point receives a tree ID. Developed to enhance segmentation of small under-mid story trees. Supportive secondary workflow.
Each workflow runs independently on an input point cloud to predict tree segments. Flow is the primary production workflow (78% accuracy, 0.70 F1 on TEST). Vision V3 is the recommended standalone vision alternative (71.5% accuracy, 0.64 F1 on TEST. Connectivity is a full per-point tree segmentation workflow that traces downward flow paths to the ground.
Key Features
FLOW - detailed methods
DEM + Voxelization
│
DENSITY PROFILING (vertical + horizontal) ──> 7 adaptive weights
│
Phase 1a Phase 1b Phase 2
DOWNWARD FLOW ──> UPWARD FLOW ──> TREE DETECTION
(trunk finding) (treetop finding) (seed identification)
│ │ │
│ HYBRID TRUNK │ │
│ DETECT ──────┤── concurrent ───────┘
│ (point-scale KNN) │ │
└─────────────────────┴─────────────────────┘
│
v
Phase 3 Phase 4 Phase 5
CORE BUILDING ──> CROWN ASSIGNMENT ──> CROWN SEPARATION
(trunk + branches) (canopy expansion) (boundary refinement)
│
v
POST-PROCESSING
(smoothing, merging,
metrics, classification)
Dynamic Voxel Resolution (preprocessing)Before voxelization, horizontal point density (pts/m²) is estimated from the input cloud’s bounding box. Voxel size is then computed via log-linear interpolation: dense clouds (≥ 10 pts/m²) use the finest resolution (0.35 m), sparse clouds (≤ 1 pt/m²) use a coarser resolution (up to 1.0 m), and intermediate densities interpolate on a logarithmic scale. All resolution-dependent pipeline parameters (search radii, gap-fill distances, grid spacings) scale automatically with the chosen voxel size.
Density Profiling (pre-Phase 1)
Two complementary analyses characterize data quality before processing begins:
Vertical density profiling divides the point cloud into 10 equal-height strata and measures point density in each layer. The vertical profile is classified into one of four categories:
Horizontal density variability measures how evenly points are distributed across the XY plane by computing the coefficient of variation of per-column point counts, the gap fraction (empty cells in the bounding box), and the interquartile range ratio. Two additional weights are produced:
Phase 1a: Downward Flow
Every occupied voxel flows downward through 3D space with momentum tracking, following directional priorities (down > diagonal-down > horizontal > up). Where many independent flows converge at ground level = tree trunk. This mimics how water flows down through branches to the trunk.
Phase 1b: Upward Flow
The inverse process: flow upward from ground to find treetops. Provides supplemental seed candidates and tree height estimates.
Phase 2: Tree Detection + Hybrid Trunk Detection
Multi-scale 2D peak detection on the downward convergence map identifies ground-level seed positions (trunk bases) for each tree. Height-layer connected component analysis separates overstory from understory. Upward flow treetops and CHM (Canopy Height Model) tips supplement seed detection.
Additionally, the hybrid (point-scale) trunk detection algorithm (understory_trunks.py) runs concurrently with the Flow phases. It combines two complementary detectors: (1) two-pass convergence clustering (narrow + wide search radius) finds trunk clusters from point density patterns, and (2) ground-up chain growing traces nearest-neighbor chains upward from ground-level LiDAR points. Results are unioned via adaptive NMS (non-maximum suppression). This detects understory and midstory trunks that the voxel convergence may miss, achieving 99%+ trunk detection rate across all forest types.
For canopy-dominant point clouds (sparse lower strata), a CHM-based canopy seeding step uses Dalponte-style region growing on a smoothed canopy height model to identify crown peaks, then projects them down to the lowest available voxel. This ensures tree detection even when trunks are barely visible. The injection rate is controlled by the vertical density profile weight.
Phase 3: Upward Core Building
Multi-source Dijkstra expansion from all ground seeds simultaneously. Seeds compete for voxels based on cost (distance, density gradient, upward weight). Builds tree cores (trunk + main branches). Includes density containment, horizontal drift limits, and fragment core merging via trunk proximity. When the vertical density profile indicates sparse mid-story or trunk strata, the upward weight increases (4.0→6.0) and the density floor relaxes, allowing cores to grow through low-density trunk zones.
Phase 4: Crown Assignment
Multi-source Dijkstra from core boundaries, with cost biased inward toward the trunk — downward movement toward the trunk is cheap (0.25× cost), upward movement away from the trunk is expensive (1 + 2·|Δz|). This matches the biotic mimicry of water/nutrient flow from crown toward trunk: each crown voxel is claimed by the tree whose core can reach it via the cheapest downward-flowing path. Also applies density cliff detection (hard stop at 75% density drop), angle-based perpendicular penalty, allometric crown radius limits, and tighter nearest-neighbor crown caps (height-scaled nn_factor 0.50–0.65). A depth-proportional CHM valley penalty creates soft "curtain" barriers between adjacent tree crowns: penalty increases with valley depth (min 1.0m below local mean) and decays with height below canopy surface, preventing crown bleed-over while leaving understory expansion unaffected. For sparse lower-strata clouds the vertical density profile reduces the density gradient penalty and cheapens downward bias further, allowing expansion through data gaps without touching the hard density cliff block.
Phase 5: Crown Separation
Projects 3D assignments to a 2D cumulative density raster and detects natural crown boundaries using combined slope + density valley analysis. Reassigns upper-canopy voxels (top 25% of each tree) to the dominant tree per cell, with guards:
Post-Processing
Accuracy
Benchmark assessments against global standard "FOR-instance: a UAV laser scanning benchmark dataset for semantic and instance segmentation of individual trees", available at: https://zenodo.org/records/8287792
Evaluated on held-out TEST datasets (not used during development):
Accuracy = fraction of tree points assigned to the correct tree (after optimal Hungarian matching). Large, well-separated trees are segmented near-perfectly; dense multi-layer canopy with overlapping crowns is the primary challenge.
Macro F1 = average per-tree F1, treating every tree equally regardless of size. Dragged down by small understory trees that are harder to detect.
FLOW - Biology-inspired (Standalone)
Dataset, Forest Type, Accuracy, Macro F1
CULS, Deciduous broadleaf, 91%, 0.8820
NIBIO, Boreal conifer, 81%, 0.6637
RMIT, Open eucalyptus woodland, 65%, 0.5464
SCION (31), Plantation conifer, 86%, 0.7925
SCION (61), Plantation conifer, 84%, 0.8118
TUWIEN, Dense mixed forest, 61%, 0.5035
Average, 78%, 0.70
Vision V3 — Profile-Guided (Standalone)Fully automatic standalone vision segmentation with automated point cloud profiling. No internet, no cloud API required.
Dataset, Forest Type, Accuracy, Macro F1
CULS, Deciduous broadleaf, 85.8%, 0.894
NIBIO, Boreal conifer, 80.6%, 0.517
RMIT, Open eucalyptus, 59.5%, 0.511
SCION (31), Plantation conifer, 77.8%, 0.741
SCION (61), Plantation conifer, 78.9%, 0.807
TUWIEN, Dense mixed, 46.7%, 0.396
Average, 71.5%, 0.644
PRISM 3D segments individual trees from Lidar-derived point clouds using principles and inspiration of biotic flow mimicry and human vision — simulating how water and nutrients move through tree structure to identify trunks, branches, and crowns. No training data required. Works across forest types from open woodland to dense multi-layer canopy.
Multiple Independent Workflows
Flow
Voxel-based biotic flow mimicry — simulates downward/upward biological flow through 3D voxel space, then Dijkstra expansion from detected seeds. Primary segmentation workflow.
Vision V3
Vision-based workflow for standalone automated point cloud 3D profiling and segmentation. Supportive secondary workflow.
Connectivity
Full per-point tree segmentation via downward flow paths — every point flows to ground via the cheapest KNN path; ground terminals are clustered into trees; every point receives a tree ID. Developed to enhance segmentation of small under-mid story trees. Supportive secondary workflow.
Each workflow runs independently on an input point cloud to predict tree segments. Flow is the primary production workflow (78% accuracy, 0.70 F1 on TEST). Vision V3 is the recommended standalone vision alternative (71.5% accuracy, 0.64 F1 on TEST. Connectivity is a full per-point tree segmentation workflow that traces downward flow paths to the ground.
Key Features
- Online web app for processing of LAS clouds up to 500 MB (beta access available)
- Fully automatic — drop in a .las file, get segmented trees out
- Dynamic voxel resolution — voxel size adapts to input point density (0.35 m for dense clouds ≥ 10 pts/m², up to 1.0 m for sparse clouds ≤ 1 pt/m²) via log-linear interpolation; all resolution-dependent parameters scale automatically
- Adaptive density profiling — vertical profiling characterizes point distribution across height strata; horizontal variability profiling measures spatial uniformity across the XY plane. Together, they produce 7 adaptive weights that steer the pipeline for point clouds with sparse strata or patchy coverage
- Hybrid trunk detection — voxel-based flow convergence + point-scale two-pass convergence & chain union for 99%+ trunk detection
- Flow workflow — simulates downward/upward biolotical flows through 3D voxel space
- Multi-phase pipeline — 5 phases (flow, detection, core building, crown assignment, crown separation) plus hierarchical post-processing
- Per-tree metrics — DBH, tree height, crown width, crown base height, live crown ratio (*beta dev)
- Structural classification — every point labeled as ground, trunk, branch, or crown
- Multi-core parallel — embarrassingly-parallel phases (point assignment, smoothing) and per-column flow processing distributed across all CPU cores via ProcessPoolExecutor; hybrid trunk detection runs concurrently in a background thread; correctness-critical Dijkstra phases (core building, crown assignment) stay sequential; --verify-parallel proves byte-identical output
FLOW - detailed methods
DEM + Voxelization
│
DENSITY PROFILING (vertical + horizontal) ──> 7 adaptive weights
│
Phase 1a Phase 1b Phase 2
DOWNWARD FLOW ──> UPWARD FLOW ──> TREE DETECTION
(trunk finding) (treetop finding) (seed identification)
│ │ │
│ HYBRID TRUNK │ │
│ DETECT ──────┤── concurrent ───────┘
│ (point-scale KNN) │ │
└─────────────────────┴─────────────────────┘
│
v
Phase 3 Phase 4 Phase 5
CORE BUILDING ──> CROWN ASSIGNMENT ──> CROWN SEPARATION
(trunk + branches) (canopy expansion) (boundary refinement)
│
v
POST-PROCESSING
(smoothing, merging,
metrics, classification)
Dynamic Voxel Resolution (preprocessing)Before voxelization, horizontal point density (pts/m²) is estimated from the input cloud’s bounding box. Voxel size is then computed via log-linear interpolation: dense clouds (≥ 10 pts/m²) use the finest resolution (0.35 m), sparse clouds (≤ 1 pt/m²) use a coarser resolution (up to 1.0 m), and intermediate densities interpolate on a logarithmic scale. All resolution-dependent pipeline parameters (search radii, gap-fill distances, grid spacings) scale automatically with the chosen voxel size.
Density Profiling (pre-Phase 1)
Two complementary analyses characterize data quality before processing begins:
Vertical density profiling divides the point cloud into 10 equal-height strata and measures point density in each layer. The vertical profile is classified into one of four categories:
- full_profile — good coverage in all strata (typical well-sampled ALS)
- canopy_dominant — most density in upper canopy, sparse below
- ground_trunk_sparse — mid-story and canopy present but ground/trunk weak
- mid_sparse — ground and canopy present but mid-story gap
Horizontal density variability measures how evenly points are distributed across the XY plane by computing the coefficient of variation of per-column point counts, the gap fraction (empty cells in the bounding box), and the interquartile range ratio. Two additional weights are produced:
- crown_boundary_tolerance — relaxes density gradient penalties in crown assignment so that patchy scan artifacts are not mistaken for tree boundaries
- neighbor_search_expansion — increases extension rounds and micro-fragment thresholds in post-processing so fragments in sparse zones reach their parent tree
Phase 1a: Downward Flow
Every occupied voxel flows downward through 3D space with momentum tracking, following directional priorities (down > diagonal-down > horizontal > up). Where many independent flows converge at ground level = tree trunk. This mimics how water flows down through branches to the trunk.
Phase 1b: Upward Flow
The inverse process: flow upward from ground to find treetops. Provides supplemental seed candidates and tree height estimates.
Phase 2: Tree Detection + Hybrid Trunk Detection
Multi-scale 2D peak detection on the downward convergence map identifies ground-level seed positions (trunk bases) for each tree. Height-layer connected component analysis separates overstory from understory. Upward flow treetops and CHM (Canopy Height Model) tips supplement seed detection.
Additionally, the hybrid (point-scale) trunk detection algorithm (understory_trunks.py) runs concurrently with the Flow phases. It combines two complementary detectors: (1) two-pass convergence clustering (narrow + wide search radius) finds trunk clusters from point density patterns, and (2) ground-up chain growing traces nearest-neighbor chains upward from ground-level LiDAR points. Results are unioned via adaptive NMS (non-maximum suppression). This detects understory and midstory trunks that the voxel convergence may miss, achieving 99%+ trunk detection rate across all forest types.
For canopy-dominant point clouds (sparse lower strata), a CHM-based canopy seeding step uses Dalponte-style region growing on a smoothed canopy height model to identify crown peaks, then projects them down to the lowest available voxel. This ensures tree detection even when trunks are barely visible. The injection rate is controlled by the vertical density profile weight.
Phase 3: Upward Core Building
Multi-source Dijkstra expansion from all ground seeds simultaneously. Seeds compete for voxels based on cost (distance, density gradient, upward weight). Builds tree cores (trunk + main branches). Includes density containment, horizontal drift limits, and fragment core merging via trunk proximity. When the vertical density profile indicates sparse mid-story or trunk strata, the upward weight increases (4.0→6.0) and the density floor relaxes, allowing cores to grow through low-density trunk zones.
Phase 4: Crown Assignment
Multi-source Dijkstra from core boundaries, with cost biased inward toward the trunk — downward movement toward the trunk is cheap (0.25× cost), upward movement away from the trunk is expensive (1 + 2·|Δz|). This matches the biotic mimicry of water/nutrient flow from crown toward trunk: each crown voxel is claimed by the tree whose core can reach it via the cheapest downward-flowing path. Also applies density cliff detection (hard stop at 75% density drop), angle-based perpendicular penalty, allometric crown radius limits, and tighter nearest-neighbor crown caps (height-scaled nn_factor 0.50–0.65). A depth-proportional CHM valley penalty creates soft "curtain" barriers between adjacent tree crowns: penalty increases with valley depth (min 1.0m below local mean) and decays with height below canopy surface, preventing crown bleed-over while leaving understory expansion unaffected. For sparse lower-strata clouds the vertical density profile reduces the density gradient penalty and cheapens downward bias further, allowing expansion through data gaps without touching the hard density cliff block.
Phase 5: Crown Separation
Projects 3D assignments to a 2D cumulative density raster and detects natural crown boundaries using combined slope + density valley analysis. Reassigns upper-canopy voxels (top 25% of each tree) to the dominant tree per cell, with guards:
- Boundary guard: cells at density valleys (low slope AND below-neighbor density) are protected
- Dominance guard: cells where no tree has >= 70% of the density are left unchanged
Post-Processing
- Connected component filtering: reassigns disconnected orphan fragments to the nearest tree
- CHM-dome consolidation: builds a smoothed canopy height model, detects dome peaks, and merges peakless segments into their peak-owning neighbor — corrects over-segmentation from bottom-up flow without affecting well-separated forests
- Canopy peak splitting: splits multi-peak segments using CHM saddle detection (depth >= 4.0m)
- Boundary smoothing: 26-neighbor majority voting cleans jagged voxel boundaries
- Sliver merging: thin boundary fragments absorbed by their largest neighbor
- Micro-fragment absorption: segments < 30 voxels merged into nearest neighbor
- Crown shape fallback: extends existing trees to adjacent orphan voxels; creates new trees for isolated orphan clusters
- Flow convergence classification: per-tree downward flow identifies trunk (>= 60% of max), branch (>= 15%), and crown (< 15%) voxels
Accuracy
Benchmark assessments against global standard "FOR-instance: a UAV laser scanning benchmark dataset for semantic and instance segmentation of individual trees", available at: https://zenodo.org/records/8287792
Evaluated on held-out TEST datasets (not used during development):
Accuracy = fraction of tree points assigned to the correct tree (after optimal Hungarian matching). Large, well-separated trees are segmented near-perfectly; dense multi-layer canopy with overlapping crowns is the primary challenge.
Macro F1 = average per-tree F1, treating every tree equally regardless of size. Dragged down by small understory trees that are harder to detect.
FLOW - Biology-inspired (Standalone)
Dataset, Forest Type, Accuracy, Macro F1
CULS, Deciduous broadleaf, 91%, 0.8820
NIBIO, Boreal conifer, 81%, 0.6637
RMIT, Open eucalyptus woodland, 65%, 0.5464
SCION (31), Plantation conifer, 86%, 0.7925
SCION (61), Plantation conifer, 84%, 0.8118
TUWIEN, Dense mixed forest, 61%, 0.5035
Average, 78%, 0.70
Vision V3 — Profile-Guided (Standalone)Fully automatic standalone vision segmentation with automated point cloud profiling. No internet, no cloud API required.
Dataset, Forest Type, Accuracy, Macro F1
CULS, Deciduous broadleaf, 85.8%, 0.894
NIBIO, Boreal conifer, 80.6%, 0.517
RMIT, Open eucalyptus, 59.5%, 0.511
SCION (31), Plantation conifer, 77.8%, 0.741
SCION (61), Plantation conifer, 78.9%, 0.807
TUWIEN, Dense mixed, 46.7%, 0.396
Average, 71.5%, 0.644