pcdenoise: some questions
4 views (last 30 days)
Man, for such a simple heuristic, pcdenoise does have some questions:
1) Are self-distances included in the k nearest neighbor distances?
2) Can the threshold parameter be negative or zero? As described in the reference, it seems that the threshold parameter shouldn't really be allowed to be negative or zero, but Matlab doesn't seem to mind - it only wants a scalar.
3) Even for a positive threshold, is the filtering really happening as described in Rusu's paper?
If I take my point cloud and calculate d50 (the distances to the 50 nearest neighbors), then find the global mean and std of that distribution, I do not get the same number of inliers and outliers that pcdenoise returns, for a threshold value of 0.1. I realize the threshold is actually a multiplier on the global_std, which then yields a number that is added to and subtracted from the global_mean in order to yield a range of dknn values; the inliers are those points whose dknn values are within that dknn range, and vice-versa for the outliers.
Thanks for any help
Vineet Joshi on 8 Dec 2021
As please refer to the reference section of pcdenoise for Question 1 and Question 3.
For Question 2, please find the explanation below.
The threshold is parameter is defined as follows as given in the documentation:
A point is considered to be an outlier if the average distance to its k-nearest neighbors is above the specified threshold.
Clearly if you put a negative threshold, no point will satify the above criteria and you will get an empty set.
This can be seen by running the code given in the function documentation and keeping the threshold as negative.
Hope this helps.