sgt.ransac.cylinder: Stem segmentation algorithm: RANSAC cylinder fit

sgt.ransac.cylinderR Documentation

Stem segmentation algorithm: RANSAC cylinder fit

Description

This function is meant to be used inside stemSegmentation. It applies a least squares cylinder fit algorithm in a RANSAC fashion over stem segments. More details are given in the sections below.

Usage

sgt.ransac.cylinder(tol = 0.1, n = 10, conf = 0.95, inliers = 0.9)

Arguments

tol

numeric - tolerance offset between absolute radii estimates and hough transform estimates.

n

numeric - number of points selected on every RANSAC iteration.

conf

numeric - confidence level.

inliers

numeric - expected proportion of inliers among stem segments' point cloud chunks.

Random Sample Consensus (RANSAC) Algorithm

\loadmathjax

The RANdom SAmple Consensus algorithm is a method that relies on resampling a data set as many times as necessary to find a subset comprised of only inliers - e.g. observations belonging to a desired model. The RANSAC algorithm provides a way of estimating the necessary number of iterations necessary to fit a model using inliers only, at least once, as shown in the equation: \mjdeqnk = log(1 - p) / log(1 - w^n)k = log(1 - p) / log(1 - w^n) where:

  • k: number of iterations

  • p: confidence level, i.e. desired probability of success

  • w: proportion of inliers expected in the full dataset

  • n: number of observations sampled on every iteration

The models reiterated in TreeLS usually relate to circle or cylinder fitting over a set of 3D coordinates, selecting the best possible model through the RANSAC algorithm

For more information, checkout this wikipedia page.

Least Squares Cylinder Fit

\loadmathjax

The cylinder fit methods implemented in TreeLS estimate a 3D cylinder's axis direction and radius. The algorithm used internally to optimize the cylinder parameters is the Nelder-Mead simplex, which takes as objective function the model describing the distance from any point to a modelled cylinder's surface on a regular 3D cylinder point cloud:

\mjdeqn

D_p = |(p - q) \times a| - rDp = abs((p - q) x a) - r

where:

  • Dp: distance from a point to the model cylinder's surface

  • p: a point on the cylinder's surface

  • q: a point on the cylinder's axis

  • a: unit vector of cylinder's direction

  • r: cylinder's radius

The Nelder-Mead algorithm minimizes the sum of squared Dp from a set of points belonging to a stem segment - in the context of TreeLS.

The parameters returned by the cylinder fit methods are:

  • rho,theta,phi,alpha: 3D cylinder estimated axis parameters (Liang et al. 2012)

  • Radius: 3D cylinder radius, in point cloud units

  • Error: model cylinder error from the least squares fit

  • AvgHeight: average height of the stem segment's points

  • N: number of points belonging to the stem segment

  • PX,PY,PZ: absolute center positions of the stem segment points, in point cloud units (used for plotting)

References

Liang, X. et al., 2012. Automatic stem mapping using single-scan terrestrial laser scanning. IEEE Transactions on Geoscience and Remote Sensing, 50(2), pp.661–670.

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.


tiagodc/TreeLS documentation built on June 29, 2023, 7:40 p.m.