Closed pattacini closed 6 years ago
Tests done with excellent results (see below).
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
Nice! Do you have some comparative results between the two methods?
Woow! This looks very promising :tada:
@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.
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.