Open Mavericky-j opened 2 years ago
I have answered a similar question on the ZhiHu blog (original in Chinese) and post a picture illustrating it in one of the comments. To summary, the reason DBSCAN being robust to noise lies in the concept of "core-points". When we apply DBSCAN, we usually set proper parameters to make sure that noise points are "non-core points". According the the description of DBSCAN, 1. it will not give a wrong cluster with only "non-core points", 2. it will not link different clusters by error using only "non-core points", since two clusters cannot be "Density-connected" with only "non-core points" in between. Thus, makes DBSCAN robust to noise. Alternatively, if you insist on using pcl::EuclideanClusterExtraction, you can still handle noise points problem by adding a de-noise process, such as pcl::RadiusOutlierRemoval. However, this procedure will do twice of building the kdtree and twice of iterating all points, which is double of what dbscan_kdtree takes.
I saw your explaination on ZhiHu was that your method is more robust to noisy, but I can not understand how that happen