3

我以前问过类似的问题,但觉得我的问题没有得到真正的回答。我正在使用 Circle Hough 变换来检测和跟踪球。但是,我现在需要进行额外检查,以确定检测到的圆圈是否实际上是一个球。

我一直在考虑使用神经网络、Haar 分类器、SVM 之类的东西(即 AI)。但是,它需要非常强大,而且由于我是这些 AI 技术的新手,我不确定哪一种是最好和最强大的技术,可以将我的时间投入到学习中。

我正在使用灰度高速相机来捕捉图像,我希望能够使用任何颜色/图案的足球。球也可能被部分遮挡。

如果您认为这些技术不合适,我愿意接受任何关于如何实现这一点的想法/建议。

我提前感谢大家的帮助,非常感谢!

4

2 回答 2

1

请注意,这尚未经过测试。

一旦你提取了球的位置,你就可以得到它的轮廓。我的建议仅适用于具有较浅色块和较暗色块(即五边形)的足球。

确定良好的二进制阈值以同时获取白色和黑色补丁。做一些图像处理,如腐蚀或扩张,以消除缝合补丁之间的裂缝。在球周围画一个白色圆圈,以确保没有任何黑色斑块被视为“球中的洞”,并且您已准备好抓住球内的轮廓。主要轮廓是由白色斑块组成的白色轮廓,所有黑色轮廓都是深色斑块。

弱点:脏球可能存在二进制阈值问题,也许使用自适应阈值?

1. 使用查找表/数学公式(?)来计算黑色块的大小和距离

黑斑的大小取决于到球中心的距离。向算法提供关于距中心的黑色斑块距离及其大小(两个值都相对于球的大小)的学习数据。

例如:

Ball in recorded frame has bounding box of 200x200 px and area of 30000px
Found 6 black patches inside:
patch 1 is in the middle (distance 0px from center) and has area of 600px
patch 2 is on the side (distance 50px from center) and has area of 150px
patch 3... patch 4... and so on

因此,您可以为查找表提供数据:

distance = 0% -> area = 2%
distance = 25% -> area = 0.5%
distance = ... -> area = ...
and so on

现在,当您检查您检测到的东西是否是一个球时,请检查它们的黑色斑块大小。如果它们的大部分尺寸和距球中心的距离都在可接受的范围内,则检测到的物体是一个球。

2.检查轮廓形状

您可以使用 检查每个轮廓cvApproxPoly。如果大多数黑色轮廓是五边形 - 它是一个球。

于 2013-10-18T15:14:38.003 回答
0

使用 OpenCV 构建您自己的分类器。方法如下:http: //johnallen.github.io/opencv-object-detection-tutorial/

困难的部分是为足球的任何颜色/图案获得一套完整的正图像。

于 2018-04-18T09:09:00.307 回答