1

I have a set of 3D points that represent a sewer. Those points were generated by laser recognition. What I want to achieve is given that set of points, detect the hole on the sewer (one wall of the sewer is supposed to have a hole). And once that hole is found, decide whether is clean or not (A hole is said to be clean when it is almost circular (see images below) ).

The first image represents the set of points of the sewer from an aerial view

enter image description here

The second image shows a lateral view, where the hole can be partially seen

enter image description here

Finally, I attach and image showing how holes are supposed to be (circular or one or more sides not circular)

enter image description here

I thought of calculating the angle of every pair of consecutive points (the angle of the line they produce). In that case, I can determine the four walls of the sewer and delete the corners as they are useless. Once done that, project every set of points of every wall to a plane and use the largest empty circle algorithm. In the hole wall it would detect the maximum radius and therefore I would know in which wall the hole is.

This is just an idea and might not work. I would really appreciate some ideas on how to focus this problem and any kind of information will be really helpful.

I am using Visual Studio and PCL in case that would help.

I'm not searching for an algorithm to obtain those points that are furthest from the others. I want any solution that could solve my problem.

Thank you, Alex.

avm_69
  • 183
  • 2
  • 11
  • 1
    Possible duplicate of [Detect group of points further to the rest](http://stackoverflow.com/questions/36062299/detect-group-of-points-further-to-the-rest) –  Mar 29 '16 at 12:02
  • 2
    well you selected this answer as accepted solution: http://stackoverflow.com/questions/36062299/detect-group-of-points-further-to-the-rest Then you go on repeating the question. Your behavior shows unpredictable; no one understands your problem and no one will answer it – gpasch Mar 29 '16 at 17:41
  • Those are two different problems. The first one is to find the points that are further from the rest of the set of points. This post is about hole detection in 3D space. I know that the approach might seem identical, but one post is more general than the other, which is only seeking to find these distant points. Sorry for the inconvenience, I'm quite newbie in this community. – avm_69 Mar 30 '16 at 11:12

1 Answers1

0

It looks like you are working with a point cloud directly. It will probably be easier if you triangulate it first to create a surface. You may need to clean first to remove outliers and do some local filtering. You can then compute the boundaries quite easily - edges that are only connected to one triangle. This should help you determine potential holes as these will be surrounded by boundary edges.

You can detect "clean" holes by computing a circularity metric. For example for a closed curve you can compute the maximum diameter D = distance between furthest pair of points and the area A - use this formula. Then the ratio (pi D^2)/(4 A) should be close to 1.

Ivan
  • 191
  • 1
  • 6