Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌲 Forest Inventory from 360° Video — SfM Pipeline & DBH Validation

Can a €500 consumer 360° camera replace a €40,000 terrestrial laser scanner for forest inventory? This project builds the full pipeline to find out — and gets within ~1cm of TLS accuracy on tree diameter.

Developed for SLU (Swedish University of Agricultural Sciences), as part of Project Course in Machine Vision (VT26), Umeå University.

📸 Preview

Sparse Point Cloud Dense Point Cloud segmentation

🧭 What this is

Forest inventory today relies heavily on manual field measurement and expensive Terrestrial Laser Scanning (TLS). This project explores whether a cheap consumer 360° camera (Insta360 X4), combined with open-source Structure-from-Motion, can produce forest measurements — tree position, diameter at breast height (DBH) — accurate enough to be useful.

Short answer: yes, with the right calibration. The raw reconstruction overestimated tree diameter by ~33% on average. After a simple scale-correction step (using one or a few manually measured reference trees), that error dropped to ~10%, landing within a few centimetres of professional TLS results.

🛠️ My contribution

This was a 10-person, 6-week Scrum project split into sub-teams. I worked on data-preparation and 3D reconstruction, the part of the pipeline responsible for turning raw 360° footage into a geo-registered point cloud ready for measurement.

Other sub-teams worked on 3D segmentation/DBH extraction, 2D image analysis (species classification), and variable extraction — see credits below for the full breakdown.

🔬 Pipeline

Insta360 X4 video (.insv)
        │
        ▼
Frame extraction (FFmpeg, 2 FPS)
        │
        ▼
Equirectangular → 6× cubemap perspective views (custom Python)
        │
        ▼
GPS sync: GPX trajectory → local ENU coordinates
        │
        ▼
COLMAP rig-aware SfM (sequential + cross-direction matching)
        │
        ▼
Geo-registered sparse point cloud ──► model_aligner (GPS scale/orientation)
        │
        ▼
Dense reconstruction (MVS) ──► 3DFin segmentation ──► DBH extraction

Stack: Python 3.12 · COLMAP 4.0.3 (CUDA) · FFmpeg · NumPy/OpenCV · pyproj/gpxpy · CloudCompare · 3DFin · Gaussian Splatting (Brush)

📊 Results

Diameter-at-breast-height (DBH) accuracy against manually measured ground truth, n=9 trees:

Method MAE (cm) RMSE (cm) MAPE (%)
TLS (reference) 0.84 1.14 3.75
360° — raw 6.46 7.01 33.48
360° — scale-corrected (5 trees) 1.68 1.91 10.57
360° — scale-corrected (1 tree) 1.68 2.20 12.07

Key finding: most of the error in the raw 360° reconstruction came from a systematic global scale bias (likely from inaccurate consumer GPS), not from the reconstruction quality itself. A single calibration tree recovers most of the accuracy — a 5-tree calibration is only marginally more robust. Remaining errors concentrate on the smallest stems (<15cm DBH), where segmentation becomes harder regardless of method.

We also ran systematic experiments across camera settings — FOV (90° vs 120°), frame rate (2 vs 5 FPS), matching strategy (sequential vs exhaustive), and view configuration (4-way vs 6-way cubemap) — to characterize what actually improves reconstruction quality.


Course: Project course in Machine Vision (VT26) · Umeå University, in partnership with SLU

About

SfM pipeline turning consumer 360° camera footage into forest inventory measurements (tree DBH) - validated against TLS ground truth. Developed with SLU (Swedish University of Agricultural Sciences).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages