如何检查某个区域是否为圆圈?

时间:2016-06-17 13:03:18

标签: image geometry image-recognition region kruskals-algorithm

所以,我有一个任务:使用Kruskal算法的修改将图像分成区域并识别哪些是圆形并打印它们的半径。

找到区域相对简单,我做到了。但是,寻找圈子比较棘手。我的想法是找到一个区域的所有边界点,找到该圆的平均点 - 可能的中心 - 并计算每个边界点和“中心”之间的距离。然后,如果它们没有太大差别,那确实是一个圆圈。

首先,这是否可行? 其次,这种方法也会将很薄的环识别为圆圈,我不希望这样。我该如何解决这个问题?

UPD:如何有效地找到边界点?最后一层BFS?少于6个邻居的点数(虽然对我来说看起来像暴力)?

1 个答案:

答案 0 :(得分:3)

通过平均边界点到中心的距离估算半径后,计算:

  • 区域与圆的交点的区域A1
  • 圆圈的区域A2
  • 该地区的区域A3

然后,如果这是一个磁盘,这些区域的比例应接近1。您可以定义一些公差。例如:

  • A1 / A2> 0.98
  • A1 / A3> 0.97

或者,可以在没有边界点的情况下估计半径。只计算每个区域点到中心的平均距离,然后乘以3/2。