Algorithms for shape detection of the local point neighborhood
These functions are made to be used in segment_shapes. They implement algorithms for local neighborhood shape estimation.
shp_plane(th1 = 25, th2 = 6, k = 8) shp_hplane(th1 = 25, th2 = 6, th3 = 0.98, k = 8) shp_line(th1 = 10, k = 8)
th1, th2, th3 |
numeric. Threshold values (see details) |
k |
integer. Number of neighbours used to estimate the neighborhood. |
In the following, a1, a2, a3 denote the eigenvalues of the covariance matrix of the neighbouring
points in ascending order. th1, th2, th3 denote a set of threshold values. Points are labelled
TRUE
if they meet the following criteria. FALSE
otherwise.
Detection of plans based on criteria defined by Limberger & Oliveira (2015) (see references). A point is labelled TRUE if the neighborhood is approximately planar, that is:
a2 > (th1*a1) and (th2*a2) > a3
The same as 'plane' but with an extra test on the orientation of the Z vector of the principal components to test the horizontality of the surface.
a2 > (th1*a1) and (th2*a2) > a3 and |Z| > th3
In theory |Z| should be exactly equal to 1. In practice 0.98 or 0.99 should be fine
Detection of lines inspired by the Limberger & Oliveira (2015) criterion. A point is labelled TRUE if the neighborhood is approximately linear, that is:
th1*a2 < a3 and th1*a1 < a3
Limberger, F. A., & Oliveira, M. M. (2015). Real-time detection of planar regions in unorganized
point clouds. Pattern Recognition, 48(6), 2043–2053. https://doi.org/10.1016/j.patcog.2014.12.020
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.