Terrestrial LiDAR Point Clouds
How tall are these trees? What's the precise elevation of this landslide scarp? LiDAR (Light Detection and Ranging) uses laser pulses to measure distances, creating dense 3D point clouds. This model derives time-of-flight ranging, implements ground point classification, calculates canopy height models, and extracts topographic derivatives from high-resolution LiDAR data.
Prerequisites: laser ranging, time of flight, point cloud processing, surface extraction
1. The Question
What’s the forest canopy height and how does ground elevation vary beneath it?
LiDAR (Light Detection and Ranging) measures distance by timing laser pulse returns.
How it works:
- Emit laser pulse (typically 905 or 1064 nm)
- Pulse reflects off surface
- Measure round-trip time
- Calculate distance: $d = ct/2$
- Combine with position (GPS) and orientation (IMU) to get 3D coordinates
Key advantages:
- Active sensor (day/night operation)
- Penetrates vegetation canopy (multiple returns)
- Centimeter-level vertical accuracy
- Dense sampling (1-100 points/m²)
Platforms:
- Airborne (aircraft, helicopter): Large area mapping
- UAV/drone: Flexible, lower cost
- Mobile (vehicle-mounted): Corridor mapping
- Terrestrial (tripod): Ultra-high density, limited extent
Applications:
- High-resolution DEMs (bare earth topography)
- Forest structure (canopy height, biomass)
- Urban 3D models (buildings, infrastructure)
- Archaeology (detect subtle features under vegetation)
- Coastal mapping (beaches, dunes)
- Powerline corridor management
2. The Conceptual Model
Time-of-Flight Ranging
Basic principle:
\[d = \frac{c t}{2}\]Where:
- $d$ = distance to target (m)
- $c$ = speed of light (3 × 10⁸ m/s)
- $t$ = round-trip time (s)
- Factor of 2: Light travels to target and back
Example:
Target 100 m away:
\[t = \frac{2d}{c} = \frac{200}{3 \times 10^8} = 6.67 \times 10^{-7} \text{ s} = 667 \text{ ns}\]Requires nanosecond timing precision.
Multiple Returns
Laser pulse encounters multiple surfaces:
Example - forest:
- Top of canopy (first return)
- Mid-canopy branches (intermediate returns)
- Ground (last return)
Discrete return systems:
Record up to 4-7 returns per pulse.
Full-waveform systems:
Record entire return signal, extract arbitrary number of returns.
Use:
- First return → canopy height map (DSM - Digital Surface Model)
- Last return → ground elevation (DTM - Digital Terrain Model)
- All returns → vegetation structure
Point Cloud Structure
Each point has:
- X, Y, Z coordinates (3D position)
- Intensity (return signal strength)
- Return number (1st, 2nd, …, last)
- Classification (ground, vegetation, building, …)
- RGB color (if fused with imagery)
Typical dataset:
1 km² at 10 points/m² = 10 million points
File formats:
- LAS/LAZ (binary, compressed)
- ASCII (text, large files)
Canopy Height Model (CHM)
Definition:
\[\text{CHM} = \text{DSM} - \text{DTM}\]Where:
- DSM = Digital Surface Model (top surface, first returns)
- DTM = Digital Terrain Model (bare ground, last returns)
Result: Height above ground for each location.
Applications:
- Forest inventory (tree height, volume, biomass)
- Habitat mapping
- Fire fuel load estimation
3. Building the Mathematical Model
Coordinate Transformation
Sensor-centric coordinates → ground coordinates
Range and angles:
- $r$ = measured range
- $\theta$ = scan angle
- $\phi$ = roll angle
Sensor frame to ground frame:
\[\begin{bmatrix} X \\ Y \\ Z \end{bmatrix} = \begin{bmatrix} X_0 \\ Y_0 \\ Z_0 \end{bmatrix} + \mathbf{R} \begin{bmatrix} r\sin\theta\cos\phi \\ r\sin\theta\sin\phi \\ r\cos\theta \end{bmatrix}\]Where:
- $(X_0, Y_0, Z_0)$ = GPS position of sensor
- $\mathbf{R}$ = rotation matrix from IMU (orientation)
Errors propagate:
GPS error (~5 cm vertical), IMU error (~0.01°), range error (~1 cm) combine.
Total vertical accuracy: Typically 5-15 cm (airborne), 1-5 cm (terrestrial).
Ground Point Classification
Challenge: Identify which points are ground vs. vegetation/buildings.
Progressive morphological filter:
Algorithm:
- Create initial grid at coarse resolution
- Find minimum elevation in each cell (likely ground)
- Fit surface to minima
- Calculate residuals for all points
- Points within threshold of surface → ground
- Repeat at finer resolutions
Threshold selection:
\[t = s \times w + z_{threshold}\]Where:
- $s$ = slope-dependent factor
- $w$ = window size
- $z_{threshold}$ = base threshold (~0.15 m)
Steep terrain: Larger threshold needed.
Cloth Simulation Filter (CSF):
Alternative method:
- Invert point cloud (flip upside down)
- Simulate cloth falling onto inverted surface
- Points contacting cloth = ground
Advantages: Robust in complex terrain.
Canopy Metrics from Point Clouds
Height percentiles:
For all points in area (e.g., 20m plot):
- Sort by height above ground
- Extract percentiles (25th, 50th, 75th, 95th)
Example:
- 25th percentile = 5 m (understory)
- 50th percentile = 12 m (mid-canopy)
- 95th percentile = 25 m (canopy top)
Canopy cover:
\[\text{Cover} = \frac{N_{\text{veg}}}{N_{\text{total}}} \times 100\%\]Where:
- $N_{\text{veg}}$ = returns above threshold (e.g., 2m)
- $N_{\text{total}}$ = all returns
Leaf Area Index (LAI) proxy:
Related to return density and penetration ratio.
\[\text{LAI} \approx -\ln\left(\frac{N_{\text{ground}}}{N_{\text{total}}}\right)\]Tree segmentation:
- Create CHM
- Apply local maxima filter → tree tops
- Watershed segmentation → individual tree crowns
- Extract per-tree metrics (height, crown area, volume)
4. Worked Example by Hand
Problem: Calculate canopy height from LiDAR returns.
Point cloud data (simplified, 10 returns):
| Point | X (m) | Y (m) | Z (m) | Return |
|---|---|---|---|---|
| 1 | 100 | 200 | 345.2 | 1st |
| 2 | 100.5 | 200 | 342.8 | 2nd |
| 3 | 100 | 200 | 338.5 | Last |
| 4 | 101 | 201 | 344.9 | 1st |
| 5 | 101 | 201 | 338.7 | Last |
| 6 | 102 | 202 | 346.5 | 1st |
| 7 | 102.5 | 202 | 343.1 | 2nd |
| 8 | 102 | 202 | 339.2 | Last |
| 9 | 103 | 203 | 338.9 | 1st |
| 10 | 103 | 203 | 338.8 | Last |
Note: Points 9-10 are ground returns (no canopy).
Calculate ground elevation, canopy height, and metrics.
Solution
Step 1: Identify ground points
Last returns typically hit ground (if penetration occurs).
Ground elevations (last returns):
- Point 3: 338.5 m
- Point 5: 338.7 m
- Point 8: 339.2 m
- Point 10: 338.8 m
Also point 9 (first return = last return → open area).
Step 2: Estimate ground surface
Average ground elevation:
\[Z_{\text{ground}} = \frac{338.5 + 338.7 + 339.2 + 338.8 + 338.9}{5} = 338.8 \text{ m}\](In practice, would interpolate spatially)
Step 3: Calculate canopy heights
Height above ground = Z - Z_ground:
- Point 1 (canopy top): 345.2 - 338.8 = 6.4 m
- Point 2 (mid-canopy): 342.8 - 338.8 = 4.0 m
- Point 4 (canopy top): 344.9 - 338.8 = 6.1 m
- Point 6 (canopy top): 346.5 - 338.8 = 7.7 m
- Point 7 (mid-canopy): 343.1 - 338.8 = 4.3 m
Step 4: Summary statistics
Canopy heights: 6.4, 4.0, 6.1, 7.7, 4.3 m
- Minimum: 4.0 m
- Maximum: 7.7 m
- Mean: 5.7 m
- Median: 6.1 m
Step 5: Canopy cover
Vegetation points (height > 2m): 5 points
Total points: 10
Summary:
- Ground elevation: ~338.8 m
- Canopy height range: 4-7.7 m
- Mean canopy height: 5.7 m
- Canopy cover: 50%
Interpretation: Moderate canopy (6-8 m typical for small trees/shrubs), 50% open.
5. Computational Implementation
Below is an interactive LiDAR point cloud analyzer.
Total points: --
Ground points: -- (--%)
Mean ground elev: -- m
Max canopy height: -- m
Canopy cover: --%
Observations:
- Green points show canopy/building tops (first returns)
- Light green shows intermediate vegetation returns
- Brown points show ground surface (last returns)
- Forest scenarios show clear vertical stratification
- Urban buildings show flat tops and sharp transitions
- Point density affects detail captured
- Bare ground shows all returns at surface
- Multiple returns enable seeing through vegetation to ground
Key insights:
- LiDAR penetrates canopy to measure ground beneath forest
- Multiple returns reveal 3D vegetation structure
- Dense point clouds enable centimeter-scale terrain mapping
- Classification separates ground from non-ground features
- Combination of first and last returns produces DSM and DTM
6. Interpretation
Forestry Applications
Plot-level inventory:
Traditional field measurement: Labor-intensive, sample-based.
LiDAR approach:
- 100% coverage
- Tree-level metrics automatically
- Consistent, objective
Biomass estimation:
Allometric relationships:
\[\text{Biomass} = a \times H^b \times \text{Crown Area}^c\]Where parameters calibrated with field plots.
Accuracy: ±10-15% for plot-level biomass.
Commercial value:
Timber volume estimation without expensive field crews.
Geomorphology
High-resolution DEMs reveal subtle features:
Landslides:
- Scarps (elevation discontinuities)
- Hummocky deposits
- Lateral margins
Active faults:
- Offset streams
- Scarps
- Deformation patterns
Glacial features:
- Moraines
- Drumlins
- Meltwater channels
Example - Puget Lowland, Washington:
Airborne LiDAR through forest canopy reveals:
- Unmapped faults
- Thousands of landslides
- Seismic hazard reassessment
Archaeological Applications
Jungle-covered sites:
Traditional surveys miss features under dense vegetation.
LiDAR penetrates canopy:
Example - Angkor, Cambodia:
- Massive urban complex revealed
- Irrigation networks
- Previously unknown temples
Example - Maya cities, Central America:
- Pyramids, platforms, causeways
- Agricultural terraces
- Entire city layouts
Non-invasive: No excavation required for mapping.
Flood modelling
High-resolution DTMs improve hydraulic modelling:
Bare earth elevation essential for:
- Flow direction
- Inundation extent
- Flood depth
1m LiDAR DTM vs 30m SRTM:
Order of magnitude better accuracy in flood prediction.
Critical infrastructure:
Levee heights measured to ±5cm enables failure risk assessment.
7. What Could Go Wrong?
Water Absorption
Near-infrared laser (905, 1064 nm) absorbed by water.
Problem:
No returns from water surface (appears as data gaps).
Impact:
- Rivers/lakes unmapped
- Intertidal zones missing
- Flooded areas invisible
Solution:
- Bathymetric LiDAR (green laser, 532 nm penetrates water)
- Combine with other data sources
- Mark as “no data” rather than incorrect elevation
Dense Vegetation
Some canopies too dense for penetration:
- Bamboo
- Dense tropical forest
- Agricultural crops (mature corn)
Result: Ground points sparse or absent.
Impact: DTM interpolation errors.
Solution:
- Higher pulse density
- Multiple flight lines (different angles)
- Acknowledge limitation in data gaps
Scan Angle Effects
Off-nadir points have:
- Lower point density
- Reduced penetration
- Geometric distortion
Typical maximum scan angle: ±15-20° from nadir
Solution:
- Flight planning (adequate overlap)
- Angle-dependent filtering
Classification Errors
Automated ground classification fails at:
- Steep slopes
- Sharp terrain breaks
- Low vegetation (difficult to distinguish from ground)
- Cars, boulders (classified as ground incorrectly)
Impact:
- DTM artifacts
- Bridges included in terrain (should be excluded)
Solution:
- Manual editing for critical areas
- Multiple classification algorithms
- Validation against field data
8. Extension: Full-Waveform LiDAR
Discrete return systems: Record peak locations only.
Full-waveform: Records entire return signal.
Advantages:
More information:
- Weak returns detectable (undergrowth)
- Return width (target roughness)
- Multiple returns per object
Canopy density:
Waveform integral proportional to leaf area encountered.
Ground in dense canopy:
Gaussian decomposition extracts ground return from composite signal.
Challenge: Data volume (100× larger than discrete).
Research applications:
- Detailed forest structure
- Biomass estimation
- Snow depth (dual-wavelength)
9. Math Refresher: 3D Coordinate Systems
Cartesian Coordinates
Position vector:
\[\mathbf{p} = \begin{bmatrix} x \\ y \\ z \end{bmatrix}\]Distance between points:
\[d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2 + (z_2 - z_1)^2}\]Spherical Coordinates
Alternative representation:
\[\begin{align} x &= r \sin\theta \cos\phi \\ y &= r \sin\theta \sin\phi \\ z &= r \cos\theta \end{align}\]Where:
- $r$ = radial distance (range)
- $\theta$ = zenith angle (from vertical)
- $\phi$ = azimuth angle
LiDAR measures $(r, \theta, \phi)$ then converts to $(x,y,z)$.
Rotation Matrices
Orientation from IMU:
\[\mathbf{R} = \mathbf{R}_z(\psi) \mathbf{R}_y(\theta) \mathbf{R}_x(\phi)\]Where $\psi, \theta, \phi$ = yaw, pitch, roll.
Transform point:
\[\mathbf{p}_{\text{ground}} = \mathbf{R} \mathbf{p}_{\text{sensor}} + \mathbf{t}\]Where $\mathbf{t}$ = translation (GPS position).
Summary
- LiDAR measures distance via laser pulse time-of-flight enabling 3D point cloud generation
- Multiple returns per pulse penetrate vegetation revealing ground beneath canopy
- Ground point classification separates terrain from vegetation and buildings
- Canopy Height Model derived as difference between surface and terrain models
- Point cloud densities of 1-100 pts/m² enable centimeter-scale elevation mapping
- Applications span forestry biomass, geomorphology, archaeology, and flood modelling
- Forestry metrics include tree height, canopy cover, and structure from automated analysis
- Challenges include water absorption, dense vegetation, and classification errors
- Full-waveform systems capture complete return signal for enhanced information extraction
- Critical tool for high-resolution 3D mapping and vegetation structure analysis