hamraz2016 | R Documentation |
This functions is made to be used in segment_trees. It implements an algorithms for tree segmentation based on paper written by Hamraz et al. (2016). See references and details.
hamraz2016( nps = 0.25, th = 5, MDCW = 1.5, epsilon = 5, CLc = 0.8, Oc = 2/3, CLs = 0.7, Os = 1/3, gap_sensitivity = 6L, R = 15.24, filter_profiles = TRUE )
nps |
numeric. Nominal point spacing (see reference page 533 section 2) |
th |
numeric. Minimal height. Point below this threshold are not condisered for the segmentation (see reference page 534 section 2) |
MDCW |
numeric. Minimum detectable crown width (page 534 section 2) |
epsilon |
numeric. Small deviation from vertical (page 535 section 2.2.2) |
CLc |
numeric. Crown ratio of a narrow cone-shaped crown (page 535 equation 3) |
Oc |
numeric. Crown radius reduction due to the overlap assuming the narrow cone-shaped tree is situated in a dense stand (page 535 equation 3) |
CLs |
numeric. Crown ratio of a sphere-shaped crown (page 535 equation 4) |
Os |
numeric. Crown radius reduction due to the overlap within a dense stand for the sphere-shaped tree (page 535 equation 4) |
gap_sensitivity |
integer. In the original article, page 535 section 2.2.1, gaps are detected using six times the interquartile range of square root distance between consecutive points. This paramter control this value. Default is 6. |
R |
numeric. Maximum horizontal distance of vertical profiles (page 535 sectioh 2.1). Any value greater than a crown is good because this parameter does not affect the result. However, it greatly affects the computation speed. The lower the value, the faster the method. |
filter_profiles |
logical. This is an addition to the original method to filter dummy profiles (see details) |
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
affirm that it is this exact original algorithm.
Also it is important to notice that we have never been able to segment tree properly with this
method. The important sensitivity to minor deviation as well as the great number of difficultly
parametrizable parameter lead us to a method that we are not able to use ourselves.
Also, minor variations were introduced to fix some issues that were not adressed in the original paper.
Because the methods described in section 2.2 of the original article appear extremely sensitive to
many minor deviations, we introduced an optionnal additionnal step to clean the profiles used to build
the convex hull. When filter_profiles = TRUE
, profiles that discribe a crown radius smaller than
2*nps
(basically radius that are close to 0) are removed and the convex hull is build considering
the profiles that describe a crown radius comprise between the 10th and the 90th of the radiuses found.
This enable to remove outliers and reduce dummy segmentation but anyway we were not able to segment
the tree properly with this method.
As a conclusion this algorithm might be considered as a free and open source code provided to be
improved by the community. One can check and study the sources and find potential improvement.
Also the current implementation is known to be slow.
Jasmin Siefert & Jean-Romain Roussel
Hamraz, H., Contreras, M. A., & Zhang, J. (2016). A robust approach for tree segmentation in deciduous forests using small-footprint airborne LiDAR data. International Journal of Applied Earth Observation and Geoinformation, 52, 532–541. https://doi.org/10.1016/j.cageo.2017.02.017
Other individual tree segmentation algorithms:
ptrees()
Other point-cloud based tree segmentation algorithms:
ptrees()
## Not run: LASfile <- system.file("extdata", "MixedConifer.laz", package="lidR") las <- readLAS(LASfile, select = "xyz", filter = "-drop_z_below 0") col <- pastel.colors(200) las <- segment_trees(las, hamraz2016()) plot(las, color = "treeID", colorPalette = pastel.colors(200)) ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.