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

时间:2012-07-19 14:44:57

标签: c++ image-processing opencv

我有以下图片:

enter image description here

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

我尝试过opencv和hough circle转换但没有结果。

3 个答案:

答案 0 :(得分:1)

自然候选人将是cvHoughCircles。每条曲线的每个部分都为标识中心点的X/Y/R三元组添加“投票”。现在,你只有部分圈子,所以投票数量有限且准确度降低了,但你可能已经怀疑了。

答案 1 :(得分:1)

以下是我首先尝试的内容:

观察如果从圆的真实中心绘制光线,则沿着它们的图像强度的局部最大值以与光线方向无关的间隔出现。这些间隔是连续圆的半径长度之间的差异。

所以修正一个数字或射线方向,比如在[0,pi]中等距离16,并定义一个在中心的(xc,yc)坐标上参数化的成本函数,以及圆的ri半径,成本等于,例如,沿半径的最大位置的方差 在不同的半径之间。

答案 2 :(得分:0)

  • 阈值图像
  • 侵蚀它直到几乎没有噪音(小斑点)
  • 将它扩大回来
  • 找到大blob。如果仍有一些小斑点,请选择最大区域。
  • 使用cv :: moments找到它的质心