在低分辨率图像中检测快速移动的球

时间:2019-03-07 00:21:26

标签: c# opencv image-processing feature-detection

我正在为手机和家庭录制的视频开发自动网球视频编辑器,并且目前我一直试图在低分辨率图像中检测快速移动的球。

我尝试了很多方法:

  1. 我计算当前帧和前一帧之间的时间增量,然后选择当前帧中与时间增量图像(当前帧-前一帧)相交的轮廓。这给我留下了球员身体部位和球的轮廓。

  2. 我按大小过滤轮廓,所以我只得到了可能属于球(或球员的头部或鞋尖等)的轮廓

  3. 我无法真正按颜色过滤,因为照明不良的球会变成灰色,并且有各种颜色的球场(灰色,蓝色,红色),并且球的颜色最终接近球的颜色。球场或球员的头部,在许多情况下

  4. 无法按圆度过滤,因为球员和球拍也具有不被过滤的圆角部分(模糊的球有时看起来不圆)

  5. 使用低分辨率图像进行特征提取似乎很困难,但由于在该领域我没有太多知识,我可能对此应用不佳。我在图像的灰度版本上尝试了SURF和SIFT

  6. 我知道球(如果存在的话)将位于图像的中心,并被其他物体包围(简单的情况是纯色,但有时会越过球场线或球员的球拍)

  7. 我已经尝试从特征向量或原始图像本身的样本中训练分类器,而我得到的最大结果是95%的精度,这对于我的应用程序来说仍然很低(我会说我得到了通过自己按邻域颜色过滤点来提高精度)

所以我现在有点困惑,想知道我还可以使用什么其他技术来消除误报。最成功的技术是检查球的周围是否与球的颜色不同,但是问题是这不能过滤掉假阳性(在球场后方的一名球员头顶大约是球场前的球的大小,并且颜色与其周围的颜色不同,因此被检测为假阳性)

我无法将图像嵌入该主题,但是我的所有示例图像都可以在以下位置找到: https://www.dropbox.com/sh/s9m6xq50g4ehdw1/AABXnqkBYlhYeNXOwpZuKBD6a?dl=0

0 个答案:

没有答案