在位图中获取圆的直径

时间:2014-02-28 11:03:45

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

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

您知道某种方式或算法怎么做? (我更喜欢C#,但是如果它是伪代码或不同的语言,我会重写它)

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果您可以检测到圈子,那么您可以从此opencv function findContours()中受益,以便将所有圈子视为轮廓,然后您就可以轻松计算their areas

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

直径= 2 * r

答案 1 :(得分:1)

你要求回答一个非常棘手的问题。霍夫算法不是玩具解决方案,但它不适合所有机器视觉圈检测情况。人眼对这种事情非常擅长(如果有点不精确的话)。您基本上需要了解更多有关数据的信息才能获得强大的解决方案。

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

您可能还想在ant system上查看有关不同方法的想法的论文。

您还可以在{Houghton

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

祝你好运