【问题标题】:Get diameter of circle in bitmap获取位图中圆的直径
【发布时间】:2014-02-28 11:03:45
【问题描述】:

我的问题如下。我需要精确测量位图中圆圈的直径。 我有几个圆圈的位图。其中一些是同心的。我需要它们的直径值。 我尝试了 OpenCV 和 EmguCV 以及他们的方法 HoughCircles。但是这种方法在没有圆圈的地方找到圆圈(我尝试了很多输入参数的组合)。广告如果找到它们,则没有任何情况,当它发现与位图中完全相同的圆圈时。它们的中心和直径与原始图片上的圆圈不同。所以这种方法只适用于某种游戏。不是为了我的目的(工业精确测量)。

你知道一些方法或算法如何做到这一点吗? (我更喜欢 C#,但如果是伪代码或其他语言,我会重写它)

提前致谢。

【问题讨论】:

  • 你能发一张示例图片吗?
  • 什么颜色格式(24位,灰度?)
  • 如果你能在一个圆上找到 3 个不同的点,你就可以计算出这个圆的直径和它的中心。如果您有超过 3 个点,您可以将点组合为 3,并检查直径/中心是否相同。
  • 关于图像处理的任何问题,请至少发布一张示例图像。我们中的许多人都有在工业应用的图像中寻找圆圈的经验。任何图像处理应用程序的第一条规则:显示图像。
  • 嗨,Maerorek,您提到了工业精确测量,但您需要首先提供很多信息。您说您尝试过 HoughCircles,但您是否进行了背景减法以最大程度地减少误报。通过使用轮廓分析,轮廓检测方法可能会更合适。codeproject.com/Articles/196168/…光照条件会改变吗?您需要什么精度,您的硬件是否能够提供您需要的精度?干杯

标签: c# opencv image-processing pattern-matching emgucv


【解决方案1】:

如果你能检测到圆圈,你可能会受益于opencv functionfindContours(),以便将所有圆圈作为轮廓,然后你将能够轻松计算their areas

然后,使用这个公式Area = pi*r^2 来计算r。

直径 = 2*r

【讨论】:

  • 作为替代方案,轮廓边界框的宽度和高度应等于直径。
【解决方案2】:

您正在寻求一个非常困难的问题的答案。霍夫算法不是一个玩具解决方案,但它并不适用于所有机器视觉圆检测情况。人眼非常擅长这种事情(如果有点不精确)。您基本上需要更多地了解您的数据才能找到可靠的解决方案。

查看this dicussion about Hough Circle detection 以及本文Hough Circle Transform 以更深入地了解限制

您可能还想查看ant system 上的这篇论文,了解有关不同方法的想法。

您可能还想阅读 Morpological thinning 作为 Houghton 之前可能的预处理步骤

祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 2015-04-02
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多