如何使用OpenCV检测模糊圆的中心

5

我有以下图片:

enter image description here

图片上有曲线,我想找到包含曲线的圆的中心点。

我尝试使用OpenCV和霍夫圆变换,但没有结果。


1
可能更适合在DSP上提问。 - Maurits
1
看起来中心实际上在图像外面,这是正确的吗? - MSalters
是的,中心在外面,但是当我使用霍夫圆变换时,我会使用中间有这个的更大的图片。 - JingKe
3个回答

1

以下是我首先尝试的方法:

观察一下,如果你从圆的真正中心画出光线,图像强度沿着这些光线的局部最大值发生的间隔与光线方向无关。这些间隔是相邻圆的半径长度之差。

因此,固定一个光线方向数量,比如说16个等间距的在[0, pi]范围内,然后定义一个代价函数,该函数以圆心的(xc, yc)坐标和圆的半径ri为参数,代价函数可以是不同半径上最大值位置的方差。


1
自然的选择应该是cvHoughCircles。每条曲线的每个部分都为一个X/Y/R三元组添加了一个“投票”,以识别中心点。现在,您只有部分圆,因此投票数受限,精度降低,但您可能已经怀疑到这一点。

0
  • 对图像进行阈值处理
  • 腐蚀直到没有或很少噪声(小斑点)
  • 再进行膨胀
  • 找到最大的斑块。如果仍然存在一些小斑块,则选择最大面积。
  • 使用cv :: moments函数找到其质心

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接