| Type: | Package |
| Title: | Estimate Crown Scorch from Terrestrial LiDAR Scans |
| Version: | 0.1.0 |
| Description: | Estimates tree crown scorch from terrestrial lidar scans collected with a RIEGL vz400i. The methods follow those described in Cannon et al. (2025, Fire Ecology 21:71, <doi:10.1186/s42408-025-00420-0>). |
| License: | GPL-3 |
| Encoding: | UTF-8 |
| URL: | https://github.com/jbcannon/CrownScorchTLS |
| BugReports: | https://github.com/jbcannon/CrownScorchTLS/issues |
| RoxygenNote: | 7.3.3 |
| Imports: | lidR, randomForest, tidyr, Rcpp |
| LinkingTo: | Rcpp, RcppArmadillo,RcppEigen, BH |
| Suggests: | knitr, rmarkdown, dplyr, Boruta |
| VignetteBuilder: | knitr |
| NeedsCompilation: | yes |
| Packaged: | 2025-12-09 06:28:45 UTC; Jeffery.Cannon |
| Author: | Jeffery Cannon [aut, cre], Andrew Whelan [ctb] |
| Maintainer: | Jeffery Cannon <Jeffery.Cannon@jonesctr.org> |
| Repository: | CRAN |
| Date/Publication: | 2025-12-14 17:20:15 UTC |
Add Reflectance column to LAS if it is missing for RIEGL vz400i
Description
Function to provide relative Reflectance for RIEGL vz400i. Lidar prediction of crown scorch is based on relative range-corrected reflectance relative to a white reference object orthonormal to scanner. Raw range-corrected amplitudes from RIEGL vz400i are linearly correlated to relative intensity which usually ranges from -20 dB to 0 dB
Usage
add_reflectance(las)
Arguments
las |
'LAS' object from 'lidR' package representing an individually segmented tree containing an 'Intensity' column representing 16-bit range- corrected amplitude from RIEGL vz400i Terrestrial Lidar Scanner |
Value
modified LAS object with Reflectance column
Examples
library(lidR)
library(CrownScorchTLS)
#download external data from github repo
url <- paste0(
"https://raw.githubusercontent.com/jbcannon/CrownScorchTLS-data/main/data/manual-clip-trees/",
"M-04-15549_post.laz")
las_file = tempfile(fileext = paste0(".", tools::file_ext(url)))
download.file(url, las_file, mode = "wb", quiet = TRUE)
las <- readLAS(las_file)
# or load your own data
#las <- readLAS('C:/path/to/your/file.laz')
las = add_reflectance(las)
colnames(las@data)
Generate histogram of Reflectance for prediction with random forests
Description
Generates a histogram of Reflectance intensities for prediction with Random Forests. Histogram breaks can be defined.
Usage
get_histogram(las, breaks = seq(-20, 0, by = 0.2))
Arguments
las |
'LAS' object from 'lidR' package representing an individually segmented tree containing a 'Reflectance' column representing relative reflectance from from RIEGL vz400i Terrestrial Lidar Scanner. See 'add_reflectance()' |
breaks |
sequence of breaks for histograms, default from Cannon et al. 2025. |
Value
data.frame with columns intensity and density
Examples
library(lidR)
library(CrownScorchTLS)
#download external data from github repo
url <- paste0(
"https://raw.githubusercontent.com/jbcannon/CrownScorchTLS-data/main/data/manual-clip-trees/",
"M-04-15549_post.laz")
las_file = tempfile(fileext = paste0(".", tools::file_ext(url)))
download.file(url, las_file, mode = "wb", quiet = TRUE)
las <- readLAS(las_file)
# or load your own data
#las <- readLAS('C:/path/to/your/file.laz')
las = add_reflectance(las)
histogram = get_histogram(las)
plot(density ~ intensity, data=histogram, xlab='Reflectance (dB)', type='l')
Predict canopy scorch from 'LAS' tree object following Cannon et al. 2025
Description
This function follows methods in Cannon et al. 2025 to predict crown scorch of a 'LAS' object representing an individual tree collected using a RIEGL vz400i Terrestrial Lidar system. The function uses the 'relative reflectance' (in decibels) and predicts crown scorch using 'randomForests' following Cannon et al. 2025
Usage
predict_scorch(las, model = NULL, plot = FALSE)
Arguments
las |
'LAS' object from 'lidR' package representing an individually segmented tree collected from RIEGL vz400i Terrestrial Lidar Scanner |
model |
'randomForests' model object containing histogram data generated from 'get_histogram' function. if 'model' is 'NULL', then default model from Cannon et al. 2025 is used. But custom model may be generated. |
plot |
Boolean indicating whether reflectance histogram should be plotted |
Value
predicted scorch as numeric vector
Examples
library(lidR)
library(CrownScorchTLS)
#download external data from github repo
url <- paste0(
"https://raw.githubusercontent.com/jbcannon/CrownScorchTLS-data/main/data/manual-clip-trees/",
"M-04-15549_post.laz")
las_file = tempfile(fileext = paste0(".", tools::file_ext(url)))
download.file(url, las_file, mode = "wb", quiet = TRUE)
las <- readLAS(las_file)
# or load your own data
#las <- readLAS('C:/path/to/your/file.laz')
predict_scorch(las) #using default model from Cannon et al. 2025
Remove tree bole from 'LAS'
Description
This function identifies and removes tree boles using the 'TreeLS' package available at https://github.com/tiagodc/TreeLS
Usage
remove_stem(las)
Arguments
las |
'LAS' object from 'lidR' package representing an individually segmented tree |
Value
LAS object with stem removed
Examples
library(lidR)
library(CrownScorchTLS)
#' #download external data from github repo
url <- paste0(
"https://raw.githubusercontent.com/jbcannon/CrownScorchTLS-data/main/data/manual-clip-trees/",
"M-04-15549_post.laz")
las_file = tempfile(fileext = paste0(".", tools::file_ext(url)))
download.file(url, las_file, mode = "wb", quiet = TRUE)
las <- readLAS(las_file)
# or load your own data
#las <- readLAS('C:/path/to/your/file.laz')
#plot(las)
crown_only = remove_stem(las)
#plot(crown_only)
Stem points classification
Description
Classify stem points of all trees in a normalized
point cloud. Stem denoising methods are prefixed by stm.
This file includes code derived from the TreeLS package by Tiago de Conto
Original source: https://github.com/tiagodc/TreeLS
License: GPL-3
The code below is copied and adapted from TreeLS::stemPoints for the purpose
of maintaining CRAN compatibility. All modifications are clearly documented.
Usage
stemPoints(las, method = stm.hough())
Arguments
las |
|
method |
Function to classify stems. Default: |
Value
LAS object.
Note
This function includes code derived from TreeLS::stemPoints (GPL-3 license). See source for details.
References
Carvalho, T. (2017). TreeLS: Tools for Terrestrial LiDAR in R. GitHub: https://github.com/tiagodc/TreeLS
Stem denoising algorithm: Hough Transform
Description
This function is meant to be used inside stemPoints. It applies an adapted version of the Hough Transform for circle search. Mode details are given in the sections below.
This file includes code derived from the TreeLS package by Tiago de Conto
Original source: https://github.com/tiagodc/TreeLS
License: GPL-3
The code below is copied and adapted from TreeLS::stemPoints for the purpose
of maintaining CRAN compatibility. All modifications are clearly documented.
Usage
stm.hough(
h_step = 0.5,
max_d = 0.5,
h_base = c(1, 2.5),
pixel_size = 0.025,
min_density = 0.1,
min_votes = 3
)
Arguments
h_step |
|
max_d |
|
h_base |
|
pixel_size |
|
min_density |
|
min_votes |
|
Value
LAS object.
LAS@data Special Fields
Meaninful new fields in the output:
-
Stem:TRUEfor stem points -
Segment: stem segment number (from bottom to top and nested with TreeID) -
Radius: approximate radius of the point's stem segment estimated by the Hough Transform - always a multiple of thepixel_size -
Votes: votes received by the stem segment's center through the Hough Transform
#'
Adapted Hough Transform
The Hough Transform circle search algorithm used in TreeLS applies a constrained circle search on discretized point cloud layers. Tree-wise, the circle search is recursive, in which the search for circle parameters of a stem section is constrained to the feature space of the stem section underneath it. Initial estimates of the stem's feature space are performed on a baselise stem segment - i.e. a low height interval where a tree's bole is expected to be clearly visible in the point cloud. The algorithm is described in detail by Conto et al. (2017).
This adapted version of the algorithm is very robust against outliers, but not against forked or leaning stems.
Note
This function includes code derived from TreeLS::stemPoints (GPL-3 license). See source for details.
References
Carvalho, T. (2017). TreeLS: Tools for Terrestrial LiDAR in R. GitHub: https://github.com/tiagodc/TreeLS
Olofsson, K., Holmgren, J. & Olsson, H., 2014. Tree stem and height measurements using terrestrial laser scanning and the RANSAC algorithm. Remote Sensing, 6(5), pp.4323–4344.
Conto, T. et al., 2017. Performance of stem denoising and stem modelling algorithms on single tree point clouds from terrestrial laser scanning. Computers and Electronics in Agriculture, v. 143, p. 165-176.