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
The second image shows a lateral view, where the hole can be partially seen
Finally, I attach and image showing how holes are supposed to be (circular or one or more sides not circular)
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.