Classify points using the Cloth Simulation Filter by Zhang et al. (2016) (see references) that relies on the authors' original source code. If the point cloud already has ground points, the classification of the original ground point is set to zero. This stage modifies the point cloud in the pipeline but does not produce any output.
Usage
classify_with_csf(
slope_smooth = FALSE,
class_threshold = 0.5,
cloth_resolution = 0.5,
rigidness = 1L,
iterations = 500L,
time_step = 0.65,
...,
class = 2L,
filter = ""
)
Arguments
- slope_smooth
logical. When steep slopes exist, set this parameter to TRUE to reduce errors during post-processing.
- class_threshold
scalar. The distance to the simulated cloth to classify a point cloud into ground and non-ground. The default is 0.5.
- cloth_resolution
scalar. The distance between particles in the cloth. This is usually set to the average distance of the points in the point cloud. The default value is 0.5.
- rigidness
integer. The rigidness of the cloth. 1 stands for very soft (to fit rugged terrain), 2 stands for medium, and 3 stands for hard cloth (for flat terrain). The default is 1.
- iterations
integer. Maximum iterations for simulating cloth. The default value is 500. Usually, there is no need to change this value.
- time_step
scalar. Time step when simulating the cloth under gravity. The default value is 0.65. Usually, there is no need to change this value. It is suitable for most cases.
- ...
Unused
- class
integer. The classification to attribute to the points. Usually 2 for ground points.
- filter
the 'filter' argument allows filtering of the point-cloud to work with points of interest. For a given stage when a filter is applied, only the points that meet the criteria are processed. The most common strings are
Classification == 2"
,"Z > 2"
,"Intensity < 100"
. For more details see filters.
References
W. Zhang, J. Qi*, P. Wan, H. Wang, D. Xie, X. Wang, and G. Yan, “An Easy-to-Use Airborne LiDAR Data Filtering Method Based on Cloth Simulation,” Remote Sens., vol. 8, no. 6, p. 501, 2016. (http://www.mdpi.com/2072-4292/8/6/501/htm)
Examples
f <- system.file("extdata", "Topography.las", package="lasR")
pipeline = classify_with_csf(TRUE, 1 ,1, time_step = 1) + write_las()
ans = exec(pipeline, on = f, progress = TRUE)
#> Read files headers: [==========] 100% (1 threads)
Overall: [ ] 0% (1 threads) | : no progress
Overall: [ ] 0% (1 threads) | read_las: [ ] 0% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [ ] 1% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [ ] 2% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [ ] 3% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [ ] 4% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [ ] 5% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [ ] 6% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [ ] 7% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [ ] 8% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [ ] 9% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [= ] 10% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [= ] 11% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [= ] 12% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [= ] 13% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [= ] 14% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [= ] 15% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [= ] 16% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [= ] 17% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [= ] 18% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [= ] 19% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [== ] 20% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [== ] 21% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [== ] 22% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [== ] 23% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [== ] 24% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [== ] 25% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [== ] 26% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [== ] 27% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [== ] 28% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [== ] 29% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [=== ] 30% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [=== ] 31% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [=== ] 32% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [=== ] 33% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [=== ] 34% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [=== ] 35% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [=== ] 36% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [=== ] 37% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [=== ] 38% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [=== ] 39% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [==== ] 40% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [==== ] 41% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [==== ] 42% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [==== ] 43% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [==== ] 44% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [==== ] 45% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [==== ] 46% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [==== ] 47% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [==== ] 48% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [==== ] 49% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [===== ] 50% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [===== ] 51% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [===== ] 52% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [===== ] 53% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [===== ] 54% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [===== ] 55% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [===== ] 56% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [===== ] 57% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [===== ] 58% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [===== ] 59% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [====== ] 60% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [====== ] 61% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [====== ] 62% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [====== ] 63% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [====== ] 64% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [====== ] 65% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [====== ] 66% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [====== ] 67% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [====== ] 68% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [====== ] 69% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======= ] 70% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======= ] 71% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======= ] 72% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======= ] 73% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======= ] 74% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======= ] 75% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======= ] 76% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======= ] 77% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======= ] 78% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======= ] 79% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======== ] 80% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======== ] 81% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======== ] 82% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======== ] 83% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======== ] 84% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======== ] 85% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======== ] 86% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======== ] 87% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======== ] 88% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [======== ] 89% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [========= ] 90% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [========= ] 91% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [========= ] 92% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [========= ] 93% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [========= ] 94% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [========= ] 95% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [========= ] 96% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [========= ] 97% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [========= ] 98% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [========= ] 99% (1 threads)
Overall: [ ] 0% (1 threads) | read_las: [==========] 100% (1 threads)
Overall: [ ] 0% (1 threads) | CSF: no progress
Overall: [ ] 0% (1 threads) | Write LAS: [ ] 0% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [ ] 1% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [ ] 2% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [ ] 3% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [ ] 4% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [ ] 5% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [ ] 6% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [ ] 7% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [ ] 8% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [ ] 9% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [= ] 10% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [= ] 11% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [= ] 12% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [= ] 13% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [= ] 14% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [= ] 15% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [= ] 16% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [= ] 17% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [= ] 18% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [= ] 19% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [== ] 20% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [== ] 21% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [== ] 22% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [== ] 23% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [== ] 24% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [== ] 25% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [== ] 26% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [== ] 27% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [== ] 28% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [== ] 29% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [=== ] 30% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [=== ] 31% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [=== ] 32% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [=== ] 33% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [=== ] 34% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [=== ] 35% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [=== ] 36% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [=== ] 37% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [=== ] 38% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [=== ] 39% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [==== ] 40% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [==== ] 41% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [==== ] 42% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [==== ] 43% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [==== ] 44% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [==== ] 45% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [==== ] 46% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [==== ] 47% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [==== ] 48% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [==== ] 49% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [===== ] 50% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [===== ] 51% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [===== ] 52% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [===== ] 53% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [===== ] 54% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [===== ] 55% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [===== ] 56% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [===== ] 57% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [===== ] 58% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [===== ] 59% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [====== ] 60% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [====== ] 61% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [====== ] 62% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [====== ] 63% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [====== ] 64% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [====== ] 65% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [====== ] 66% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [====== ] 67% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [====== ] 68% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [====== ] 69% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======= ] 70% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======= ] 71% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======= ] 72% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======= ] 73% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======= ] 74% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======= ] 75% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======= ] 76% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======= ] 77% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======= ] 78% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======= ] 79% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======== ] 80% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======== ] 81% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======== ] 82% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======== ] 83% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======== ] 84% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======== ] 85% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======== ] 86% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======== ] 87% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======== ] 88% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [======== ] 89% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [========= ] 90% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [========= ] 91% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [========= ] 92% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [========= ] 93% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [========= ] 94% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [========= ] 95% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [========= ] 96% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [========= ] 97% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [========= ] 98% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [========= ] 99% (1 threads)
Overall: [ ] 0% (1 threads) | Write LAS: [==========] 100% (1 threads)
Overall: [==========] 100% (1 threads) |
Overall: [==========] 100% (1 threads)