我的问题如下。我需要在位图中精确测量圆的直径。 我有几个圆圈的位图。其中一些是同心的。我需要它们的直径值。 我尝试了OpenCV和EmguCV及其方法HoughCircles。但是这种方法在没有圆圈的地方找到圆圈(我尝试了很多输入参数的组合)。广告,如果它找到它们没有案例,当它发现与位图中的圆圈相同时。它们的中心和直径与原始图片上的圆圈不同。所以这种方法只适用于某种游戏。不是为了我的目的(精确测量工业)。
您知道某种方式或算法怎么做? (我更喜欢C#,但是如果它是伪代码或不同的语言,我会重写它)
提前致谢。
答案 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作为可能的预处理步骤祝你好运