Filtering of point clouds using different methods
filter(
  cloud,
  method,
  radius,
  min_neighbours,
  k,
  nSigma,
  edge_length,
  distance = "euclidean",
  threads = 1L,
  verbose = FALSE,
  progress = FALSE,
  ...
)A data.table contain three columns representing the *XYZ* coordinates.
A filtering method to use. It most be "SOR", "min_neighbors", or "min_neighbors".
A numeric vector representing the radius of the sphere to consider. This needs to be used if method = "voxel_center".
An integer representing the minimum number of neighbors to keep a given point. This needs to be used if method = "min_n".
An integer vector representing the number of neighbors to consider. This needs be used if method = "SOR".
A numeric vector representing the standard deviation multiplier. This needs to be used if method = "SOR".
A positive numeric vector with the voxel-edge length for the x, y, and z coordinates. This needs to be used if method = "voxel_center".
Type of distance to calculate. "euclidean" as default. Look hnsw_knn for more options.
An integer specifying the number of threads to use for parallel processing. Experiment to see what works best for your data on your hardware.
If TRUE, log messages to the console.
If TRUE, log a progress bar when verbose = TRUE. Tracking progress could cause a small overhead.
Arguments passed to hnsw_build and hnsw_search.
A data.table with the filtered points
# \donttest{
#Load data
data("pc_tree")
#Move pc_tree for comparison
pc_compare <- pc_tree
pc_compare$X <- pc_compare$X - 7
#SOR filter
r1 <- filter(pc_tree, method = "SOR", k = 30, nSigma = 1)
rgl::plot3d(r1, col = "red") #Filter
#> Warning: font family "sans" not found, using "bitmap"
rgl::points3d(pc_compare, col = "black") #Original
#min_neighbours filter
r2 <- filter(pc_tree, "min_neighbors", radius = 0.02, min_neighbours = 20)
rgl::plot3d(r2, col = "red") #Filter
rgl::points3d(pc_compare, col = "black") #Original
#voxel_center filter
r3 <- filter(pc_tree, method = "voxel_center", edge_length = 0.1)
rgl::plot3d(r3, col = "red") #Filter
rgl::points3d(pc_compare, col = "black") #Original
# }