This module implements a lightweight and easy-to-use Point-based method for individual tree delineation from 3D point cloud data using pure C/C++.
The source code files are included in folder [TreeSeparation], which consists of a project generated from Visual Studio 2015. The CLASS for tree separation is named "FoxTree" and can be found in the respect FoxTree.h and FoxTree.cpp files.
The input of this module is TREE Points only, as illustrated by the figures below.
The format of the tree points is *.xyz, such as:
x y z
623772.9200 4834465.5900 77.7409
... ... ...
Note that if the original data does not have color information, either initiate the last three columns with arbitrary integers or modify the code on data loading.
There are three parameters have to be initialized for optimal individualization results:
* Searching radius;
* Vertical resolution;
* Minimum number of points per cluster;
As demonstrated by the code snippet below (Note that the parameters are based on geo-referenced point cloud data.):
//Parameter settings
const double radius = 1.0;
//Searching Radius, 1.0 meter;
const double verticalResolution = 1.0;
//Vertical resolution of the layers, 1.0 meter;
const int miniPtsPerCluster = 5;
// Minimum number of points per cluster, 5 points;
Hints on Parameter Settings:
Radius should be in accordance with the average point density, i.e. to ensure there are a certain number of points within the radius.
VerticalResolution depends on the overall point density and fineness of results.
The output of this implementation is an ASCII format *.xyz file as well:
treeID x y z r g b
89 623942.8999 4833932.5500 77.8399 36 76 89
... ... ... ... ... ... ...
Notably, the first column is the index of tree of which this point is assigned. The last three columns are randomly designated color for the points of a same tree.
The individual tree delineation results are given as the figures below:
In this implementation
-
nanoflann is employed for KNN searching, which can be found from here link.
-
LASlib is employed for LAS file reading, which can be found from here link.
- Fixed some bugs that caused abnormal crashes.
- Added a new function to load the data from a LAS file.
Should you have any questions, comments, BUG(s) reporting, or IDEAS for further improvements? Please contact:
Jinhu Wang
jinhu.wang (at) hotmail.com
or
Roderik Lindenbergh
r.c.lindenbergh (at) tudelft.nl.
http://doris.tudelft.nl/~rlindenbergh/
Dec. 9, 2018
Copyright (C) 2018
or
Zhou Yang [email protected]