检测图像中圆圈和十字架的位置

时间:2016-10-12 16:17:07

标签: c++ opencv computer-vision digitization

我是OpenCV的新手,并且想知道是否有人可以指导我使用最合适的算法来解决识别图像中圆圈和十字架位置的挑战,如下所示。 。

[enter image description here

有时会有连线。 。

[enter image description here enter image description here

他们甚至可能像这样手绘。 。

enter image description here

到目前为止,我已经查看了模板匹配示例,但它可能不是正确的方法,并且它不会将模板的大小扩展到图像。

所以给出以下观察结果。 。 。

  • 十字架和圆圈可能重叠。
  • 如果图表是彩色的, 十字架的颜色相同,圆圈的颜色相同。
  • 有时它们会被线条加入,有时则不会。
  • 图中可能还有其他形状符号
  • 它们的符号大小和形状相似,但可能不是计算机生成的,因此不一定相同。

我应该从哪里开始冒险?

3 个答案:

答案 0 :(得分:1)

不是一件容易的事。

对于彩色外壳,您应该首先分开颜色平面。你有可能将这些标记分开。

但对于b& w案例,没有逃脱,你必须更深入。

我会首先尝试检测网格线,例如使用霍夫线检测器,尽可能准确。然后删除那些行。

然后尝试找到十字架,它们是短的斜线段(大部分时间都被之前的操作所打破)。

可以使用小范围半径的霍夫圆检测器检测圆圈。

或者,可以使用rige或edge检测器来获得短段和短弧形弧。您可能必须添加一些过滤条件以避免连接线。

答案 1 :(得分:0)

如上所述,这不是一件容易的事。 一种可能的方法是机器学习。我认为级联分类器(又名Viola Jones方法)非常适合检测对象。使用openCV很容易实现,但需要了解它的工作原理和大量样本。

答案 2 :(得分:0)

您可以尝试使用以下几点:

1)FFT可以帮助删除网格。类似于this

2)标记(十字和圆)是具有渐变角度的对象,与直角不同。它可能有助于本地化。