找到潜在的最大圈

时间:2016-04-06 11:39:05

标签: c++ image-processing geometry computational-geometry image-recognition

我有一组2D点,我想找到潜在的最大空圆圈。这样,我并不是要编写最大的空圆算法。

这是一张试图解释我的话的图片。

enter image description here

enter image description here

正如你所看到的那样,那个圆圈里面有一些点,所以我想要的是一个给出那组2D点的算法,可以计算出那个圆圈。

这组点代表一个包含洞的下水道的墙壁。问题是这个洞可能被塞住,可能在圆圈的一侧或多侧含有一些污垢。因此,当您激光检测到该部分时,您不会获得完美的圆形,而是一种半圆形。我想要找到的是原始洞,清洁洞,没有污垢。当我说潜力时,我的意思是原来的洞。在图像中,绿色圆圈是原始孔,圆圈内的点是某种污垢。这样做的最终目的是确定孔是干净还是脏(检测绿色圆圈内有多少点并确定它有多脏)

它应该如何在现实生活中的另一个例子:

enter image description here

在这里您可以看到孔底部有污垢(可能是孔的任何一侧),因此当您激光检测到它时,您不会获得圆圈,而是上半部分的一堆点圆圈为空。我想要的是从那组点,你只能看到圆圈的上半部分,重建原始洞,就像清洁时一样。

另外,我从两个不同的角度附上了两个点云的图像,这样你就可以知道我在做什么了。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

我会找到一个洞的边界,然后检查两侧。找到一个非线性但弯曲的,并将其设置为圆边框。然后只适合那边的圆圈。有关详细信息,请参阅:

答案 1 :(得分:1)

如果您可以缩放坐标以将该点绘制到图像中,这是一个解决方案:

  1. 将点绘制成图像
  2. 使用所有点作为源点计算距离图。
  3. 然后,每个像素将包含到壁橱点的距离。因此,具有最高值的像素将是最大圆的中心,并且像素值将是圆半径。
  4. 找到距离圆心最近的点。
  5. 找到通过所有这些点的圆圈(霍夫?)。解决方案可能不是唯一的。