robotology / find-superquadric

Fit a partial point cloud with a superquadric
BSD 3-Clause "New" or "Revised" License
19 stars 4 forks source link

DBSCAN-based outliers removal #2

Closed pattacini closed 6 years ago

pattacini commented 6 years ago

DBSCAN is a valid alternative to the classical spatial-density based outliers removal in that it allows for pruning secondary clusters that are as dense as the largest one, at the cost of a significantly higher computation time.

pattacini commented 6 years ago

Tests done with excellent results (see below).

find-superq-dbscan

I have to better investigate if we can gain the speed I've observed with the original C implementation.

Btw, the C++ implementation is now in icub-main/devel.

cc @lornat75 @fbottarel @giuliavezzani @vtikha

fbottarel commented 6 years ago

Nice! Do you have some comparative results between the two methods?

giuliavezzani commented 6 years ago

Woow! This looks very promising :tada:

pattacini commented 6 years ago

@fbottarel I didn't come up with a thorough analysis yet but bear in mind that the two methods serve different goals. One is only for a binary classification, whereas DBSCAN is an unsupervised multiclass clustering; therefore, the former by no means can do what DBSCAN does. I've seen DBSCAN in action and can polish objects marvelously 😉

Of course, DBSCAN doesn't run as fast as the first removal approach; anyway, on average we're under 1 second of processing, which is acceptable since we go for one shot acquisitions. At any rate, the overall grasping pipeline is pretty reliable and now quite swift (I've trimmed ARE too). The limits I've got so far are around a couple of seconds for big objects with >7000 points. Again, fairly acceptable.

Finally, as anticipated above, the C++ version is not performing as its C counterpart (much less than expected) and I'd need some more time to look into this.