2014-02-24 272 views
0

我试图检测图像内部的弧线。我一直对我的信息是弧的半径。我可以尝试,也许会得到我想要识别的圆弧的中心。从图像轮廓或边缘检测弧线

是否有打开CV任何算法,可以告诉我们检测到的轮廓(或边缘从精明的边缘为弧形或圆弧的近似值),这是如何将有可能在OpenCV中与

任何帮助Python或甚至是一般的做法是非常有帮助的

感谢

回答

1

如果你认为不会有在形状的任何变化(我的意思是电弧不会变线或像这样),那么你可以有一看Generalized Hough Transform (GHT)它可以检测到任何沙你想要。

缺点:

  • 没有直接有功能的OpenCV库为GHT但你可以在网上得到一些源代码。

  • 它有时很慢,但如果您正确设置参数可以变快。

  • 它将无法检测到形状是否改变。例如,我试图用GHT检测正方形,得到了很好的结果,但是当正方形不是完美的正方形(即矩形或类似的东西)时,它没有检测到。

+0

好的,我会尝试一下 我以前看过它,但一直担心尝试它,因为我正在制作一个视频,我试图找出椭圆形物体,亮度和位置不断变化 –

+0

好的,如果你的图像来源是网络摄像机,那么我认为GHT不是一个好的选择,因为规模/尺寸/方向不会是一个问题,但形状肯定会。 – skm

+0

它是一个高清视频录制,我与 雅,形状和方向不断改变整个视频 –

0

你可以这样来做:

  1. 将图像转换到使用精明的过滤器的边缘。
  2. 使用阈值函数使图像二进制文件有一个用于常规阈值otsu或自适应的选项。
  3. 找到与足够的长度(findContours功能)
  4. 迭代所有轮廓的轮廓,并尝试以适应椭圆(fitEllipse功能)
  5. 验证装配椭圆由半径。
  6. 检查检测到的椭圆是否合适 - 检查检测到的椭圆上有多少轮廓像素。 选择最棒的一个。

您可以尝试使用RANSAC每次从二值化图像中选择6个点并尝试拟合以提高速度。

+0

感谢您的方法, 我已经尝试过这样做,它返回给我太多的省略号 我会探索RANSAC,对它没有太多的想法 –