漏洞检测算法

问题描述 投票:0回答:1

我有一组代表下水道的3D点。这些点是通过激光识别生成的。我要实现的目标是给定点数,检测下水道上的孔(下水道的一堵墙应该有一个孔)。找到该孔后,确定是否干净(当孔几乎是圆形时,据说该孔是干净的(请参见下图))。

第一张图片代表下水道的鸟瞰图

enter image description here

第二张图片为侧视图,可以部分看到孔

enter image description here

最后附上一张图像,显示孔应该如何(圆形或一侧或多侧非圆形)

enter image description here

我想到了计算每对连续点的角度(它们产生的线的角度)。在那种情况下,我可以确定下水道的四堵墙并删除角落,因为它们无用。完成后,将每面墙的每个点集投影到一个平面上,并使用最大的空圆算法。在孔壁中,它将检测到最大半径,因此,我将知道该孔在哪个壁中。

这只是一个想法,可能无法正常工作。我非常感谢您提供一些有关如何解决此问题的想法,任何信息都将非常有帮助。

我正在使用Visual Studio和PCL,以防万一。

我不是在寻找一种算法来获得那些距离其他人最远的点。我需要任何可以解决我的问题的解决方案。

谢谢你,Alex。

image-processing graphics geometry computational-geometry image-recognition
1个回答
0
投票

似乎您正在直接使用点云。如果首先对其进行三角剖分以创建曲面,则可能会更容易。您可能需要先进行清理以除去异常值并进行一些本地过滤。然后,您可以非常轻松地计算边界-仅连接到一个三角形的边。这将有助于您确定潜在的孔,因为这些孔将被边界边缘包围。

您可以通过计算圆度度量来检测“干净”的孔。例如,对于闭合曲线,您可以计算最大直径D =最远点对与区域A之间的距离-使用此formula。然后比率(pi D ^ 2)/(4 A)应该接近1。

© www.soinside.com 2019 - 2024. All rights reserved.