Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SuperVoxel Clustering min threshold bug #622

Closed
phil0stine opened this issue Apr 7, 2014 · 4 comments · Fixed by #1804
Closed

SuperVoxel Clustering min threshold bug #622

phil0stine opened this issue Apr 7, 2014 · 4 comments · Fixed by #1804

Comments

@phil0stine
Copy link

I could do a pull request, but I figure this is so simple I can just explain it here.

From the VCCS paper, filtering of sparse seed points is achieved by

establishing a small search radius around each seed, and deleting seeds which do not have at least as many voxels as would be occupied by a planar surface intersecting with half of the search volume

In supervoxel_clustering.hpp, lines 402-405, min_points is being set to be 1/20th of the intersecting area, not 1/2, by the 0.05f factor:

  float search_radius = 0.5f*seed_resolution_;
  // This is number of voxels which fit in a planar slice through search volume
  // Area of planar slice / area of voxel side
  float min_points = 0.05f * (search_radius)*(search_radius) * 3.1415926536f / (resolution_*resolution_);

The last line should instead read :

float min_points = 0.5f * (search_radius)*(search_radius) * 3.1415926536f / (resolution_*resolution_);
@jpapon
Copy link
Contributor

jpapon commented Apr 8, 2014

Yes, this actually makes it so only seeds in very sparse areas are deleted. I know it doesn't exactly match the version from the paper, but at some point I decided that it was better to keep most supervoxel seeds, as it tended to work better for many scenes. The version in PCL also doesn't use CieLab color space, but this was also intentional - the conversion added to runtime while giving very little performance increase.

The seeding strategy should probably be completely revised at some point - here it just divides the space and removes isolated areas. It would be better to avoid placing seeds on edges.

@phil0stine
Copy link
Author

at some point I decided that it was better to keep most supervoxel seeds, as it tended to work better for many scenes.

Fair enough, it just looked suspiciously like an extra zero might have been accidentally inserted. It might make sense to give the user some control over this factor as a parameter.

Thanks for the heads up on the color space, I noticed that the PCL version doesn't make use of the FPFH, which presumably was left out for the same reason.

I think the strategy of dividing the space evenly for seeding makes sense, but perhaps adding small set of additional filters would be sufficient.

Also, I wonder if "bad seeds" could be determined by the resulting supervoxels they produce. ie, if a seed hasnt grown much (or at all), it shouldn't still be used to represent a supervoxel.

@jpapon
Copy link
Contributor

jpapon commented Apr 9, 2014

Thanks for the heads up on the color space, I noticed that the PCL version doesn't make use of the FPFH, which presumably was left out for the same reason.

Yeah, sorry I forgot to mention that as well.

Also, I wonder if "bad seeds" could be determined by the resulting supervoxels they produce. ie, if a seed hasnt grown much (or at all), it shouldn't still be used to represent a supervoxel.

This is a great idea! A seed pruning step would definitely be useful. I'll play around with it this afternoon.

@jspricke
Copy link
Member

jspricke commented Apr 9, 2014

I would propose to add a comment to the line in question.

Chungzuwalla pushed a commit to Chungzuwalla/pcl that referenced this issue Mar 31, 2017
The original paper describes to "delete seeds which do not have at least as many voxels as would be occupied by a planar surface intersecting with *half* of the search volume", but it was later "decided that it was better to keep most supervoxel seeds, as it tended to work better for many scenes".

References and fixes PointCloudLibrary#622
UnaNancyOwen pushed a commit to UnaNancyOwen/pcl that referenced this issue Nov 24, 2017
The original paper describes to "delete seeds which do not have at least as many voxels as would be occupied by a planar surface intersecting with *half* of the search volume", but it was later "decided that it was better to keep most supervoxel seeds, as it tended to work better for many scenes".

References and fixes PointCloudLibrary#622
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants