ptrees | R Documentation |
This function is made to be used in find_trees or segment_trees. It implements the PTrees algorithm for tree detection and tree segmentation based Vega et al. (2014) (see references). When used in the function find_trees it runs only the fisrt part of the method i.e. the detection of the trees. When used in segment_trees it performs the whole segmentation (see details).
ptrees(k, hmin = 2, nmax = 7L)
k |
integer vector. A serie of k-nearest neighbors to use. In this original paper a k refers to a 'scale' of analyse (see reference). |
hmin |
scalar. This is an addition from the original paper to limit oversegmentation.
Point below this threshold cannot initiate new trees or increase a hull (see details). Set to |
nmax |
integer. This is an addition from the original paper to protect against uncomputable
cases (see details). Set to |
This function has been written by the lidR
authors from the original article. We made our
best to implement as far as possible exactly what is written in the original paper but we cannot
states that it is the exact original algorithm. Also, minor variations were introduced to fix some
issues that were not adressed in the original paper:
Addition of the parameter hmin
: to reduce oversegmentation we introduced a minium height
threshold. Points below this thresold cannot initiate new trees during the tree detection and cannot
incrase a crown hull during the segmentation.
Addition of the parameter nmax
: in the original article page 103 figures 5, the number
of possible combination is 2^n-n-1. This exponential number of combinations lead, in some cases
to an infinite computation time. During the developpement we got cases where the number of combinations
to consider was beyond a billion. If the number of tree to consider between two scales is greater
than nmax
(i.e. the number of combination is greater than 2^nmax-nmax-1) then the "TreeSegment"
from the biggest scale is retained anyway, the smallest scale is considered as dummy.
Notice that to use the PTree strictly as originally described, the point cloud should
not be normalized (see reference). In that case the parameter 'hmin
' is miningless and can
be set to -Inf
for example.
Jasmin Siefert and Jean-Romain Roussel
Vega, C., Hamrouni, a., El Mokhtari, S., Morel, J., Bock, J., Renaud, J.-P., … Durrieu, S. (2014). PTrees: A point-based approach to forest tree extraction from lidar data. International Journal of Applied Earth Observation and Geoinformation, 33, 98–108. https://doi.org/10.1016/j.jag.2014.05.001
Other individual tree segmentation algorithms:
hamraz2016()
Other individual tree detection algorithms:
LayerStacking()
,
lmfauto()
,
multichm()
Other point-cloud based tree segmentation algorithms:
hamraz2016()
LASfile <- system.file("extdata", "MixedConifer.laz", package="lidR") las = readLAS(LASfile, select = "xyz") k = c(30,15) ttops = find_trees(las, ptrees(k)) las = segment_trees(las, ptrees(k))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.