【发布时间】:2016-06-23 19:15:22
【问题描述】:
所以,我有一个任务:使用 Kruskal 算法的修改将图像分成多个区域,并识别其中哪些是圆形并打印它们的半径。
查找区域相对简单,我做到了。不过,寻找圈子比较棘手。我的想法是找到一个区域的所有边界点,找到平均点——这个圆的可能中心——并计算每个边界点与“中心”之间的距离。那么,如果它们相差不大,这确实是一个圆圈。
首先,这是否可行? 其次,这种方法也会将非常薄的环识别为圆圈,我不希望这样。我该如何解决这个问题?
UPD:我如何有效地找到边界点? BFS的最后一层?具有少于 6 个邻居的点(不过对我来说似乎是蛮力)?
【问题讨论】:
-
您还可以检查圆周点数是否接近
2*Pi*r,其中r是以像素为单位的半径(边界框大小的一半)...无需检查所有点的距离。 .. 区域也是如此... 也可以看看stackoverflow.com/a/37858301/2521214 -
边界框绝对不健壮,例如在区域中检测到细线会使边界框变得更大,并导致圆形检测失败。
标签: image geometry image-recognition region kruskals-algorithm