Learn R Programming

TreeLS (version 2.0.2)

map.hough: Tree mapping algorithm: Hough Transform

Description

This function is meant to be used inside treeMap. It applies an adapted version of the Hough Transform for circle search. Mode details are given in the sections below.

Usage

map.hough(
  min_h = 1,
  max_h = 3,
  h_step = 0.5,
  pixel_size = 0.025,
  max_d = 0.5,
  min_density = 0.1,
  min_votes = 3
)

Arguments

min_h, max_h

numeric - height thresholds applied to filter a point cloud before processing.

h_step

numeric - height interval to perform point filtering/assignment/classification.

pixel_size

numeric - pixel side length to discretize the point cloud layers while performing the Hough Transform circle search.

max_d

numeric - largest tree diameter expected in the point cloud.

min_density

numeric - between 0 and 1 - minimum point density within a pixel evaluated on the Hough Transform - i.e. only dense point clousters will undergo circle search.

min_votes

integer - Hough Transform parameter - minimum number of circle intersections over a pixel to assign it as a circle center candidate.

<code>LAS@data</code> Special Fields

Each point in the LAS object output represents a pixel center that is possibly also a stem cross-section center.

The variables describing each point in the output are:

  • Intensity: number of votes received by that point

  • PointSourceID: unique stem segment ID (among all trees)

  • Keypoint_flag: if TRUE, the point is the most likely circle center of its stem segment (PointSourceID)

  • Radii: approximate radius estimated by that point - always a multiple of the pixel_size

  • TreeID: unique tree ID of the point

  • TreePosition: if TRUE, the point represents the tree's position coordinate

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.

Tree Selection

An initial tree filter is used to select probable trees in the input point cloud. Parallel stacked layers, each one as thick as hstep, undergo the circle search within the hmin/hmax limits. On every layer, pixels above the min_votes criterion are clustered, forming probability zones. Probability zones vertically aligned on at least 3/4 of the stacked layers are assigned as tree occurrence regions and exported in the output map.

References

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.

Examples

Run this code
# NOT RUN {
file = system.file("extdata", "pine_plot.laz", package="TreeLS")
tls = readTLS(file) %>%
  tlsNormalize %>%
  tlsSample

x = plot(tls)

map = treeMap(tls, map.hough(h_step = 1, max_h = 4))
add_treeMap(x, map, color='red')

xymap = treeMap.positions(map)
# }

Run the code above in your browser using DataLab