How to extract different surfaces from a point cloud as separate point clouds

asked 2021-07-21 04:46:51 -0500

RoboDev gravatar image

Ok, so I am working on a project in which I need to extract surfaces from the point cloud and by surfaces I mean if I have a cube then all its faces are different surfaces, if a cylinder then the top, bottom and middle curved part are 3 surfaces. So, the final part is not a problem, that is storing into different point clouds. But, I have tried multiple methods like DoN, euclidean cluster, RANSAC ,Region growing and so on. I got a fast result with the built-in region growing by using both curvature and residuals. But the problem is that for detecting the whole object (under segmentation)(as I am getting surfaces which are 90 degrees to each other as single point clouds ) and there are some holes in between. Can anyone tell me a solution to this or atleast a hint as to what library should I use or algorithm for this purpose. And I don't want to use method like RANSAC as it is pretty slow for this. I basically want to use something which takes the normals intoconsideration and points with a similar normal orientation belong to a cluster which represent a surface.

I am attaching a photo of what output I am getting with the builtin region growing. https://drive.google.com/file/d/1QoAROqbFVTwxf9PDmVA9BACQ2AiI7k63/view?usp=sharing

edit retag flag offensive close merge delete