千家信息网

如何使用OpenCV和Tensorflow跟踪排球的轨迹

发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,小编给大家分享一下如何使用OpenCV和Tensorflow跟踪排球的轨迹,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!排球是一项复杂的运动,有许多不同的方面。所以我从一个很小但很重
千家信息网最后更新 2025年02月06日如何使用OpenCV和Tensorflow跟踪排球的轨迹

小编给大家分享一下如何使用OpenCV和Tensorflow跟踪排球的轨迹,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

排球是一项复杂的运动,有许多不同的方面。所以我从一个很小但很重要的部分开始--球。

跟踪球是一项非常著名的任务。谷歌提供了很多链接,但其中有许多只是一个简单的演示。显然,在摄像机前识别和跟踪一个彩色的大球是无法与真实的比赛用球检测相比较的,因为现实世界中的球很小,移动速度很快,而且融入了背景中。

最后,我们想得到这样的结果:

在开始之前,让我们注意一下视频数据集的一些细节:

  • 摄像机是静止的,位于球场后面

  • 打球的运动员技术水平没那么高,我们可以自由地看到球(专业人士击球太猛,如果没有电视回放几乎不可能看到球)

  • 球的颜色:蓝色和黄色,与地板的反差不大。这使得所有基于颜色的方法变得毫无意义

解决方案

到目前为止最明显的方法 -- 用颜色 -- 不起作用。我利用的是正在移动中的球。

让我们找到移动的物体并识别出它是球,听起来很简单。

OpenCV包含用于检测带有背景移除的移动对象的工具:

mask = backSub.apply(frame)     mask = cv.dilate(mask, None)     mask = cv.GaussianBlur(mask, (15, 15),0)     ret,mask = cv.threshold(mask,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU)

将这样的图片

转化成:

在这个例子中,球在上面,人脑和眼睛可以很容易地检测到它。我们是如何决定的?从图中可以推断出一些规律:

  • 这个球是团状的

  • 这是照片上最高的斑点

第二条规律不太管用。例如,在这张照片中,最高的斑点是裁判的肩膀。

但 highest-blob 方法提供了进一步的初始数据。

我们可以收集这些斑点并训练分类器来区分球。

此数据集如下所示:

在人工智能方面--这是一个二元分类的彩色图像,非常类似于Cats-vs-Dogs挑战。

  • Cats-vs-Dogs:https://www.kaggle.com/c/dogs-vs-cats

实现的方法有很多种,但最流行的方法是使用VGG神经网络。

  • VGG神经网络:https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

一个问题 -- 球的图片非常小,不适合用多个卷积层。所以我不得不将VGG简化为一个非常简单的架构:

model = Sequential([Convolution2D(32,(3,3), activation='relu',       input_shape=input_shape),         MaxPooling2D(),            Convolution2D(64,(3,3), activation='relu'),          MaxPooling2D(),         Flatten(),         Dense(64, activation='relu'),         Dropout(0.1),         Dense(2, activation='softmax')       ])model.compile(loss="categorical_crossentropy",   optimizer=SGD(lr=0.01), metrics=["accuracy"])

该模型简单,结果一般:大约20%的假阳性和30%的假阴性。

这总比什么都没有好,当然,这样还不够。

应用于游戏的模型会产生许多"假球":

实际上有两种假球:

  • 它们出现在随机时间的随机位置

  • 这个模型总是犯错误,把其他东西认作一个球

轨迹

下一步,有一个想法是这样:球不会随机移动,而是遵循抛物线或线性轨迹。

对这个几何体上的水滴运动进行验证将切断随机和一致的错误。

有一个记录一次打球的轨迹的例子:

其中有向路径为蓝色,静态路径为绿色,随机路径为灰色。

只有蓝色的轨迹才有用。它们至少由3个点组成,并且有一个方向。方向是非常重要的,因为有了方向就可以预测下一个点,以防它在实际流中丢失,并且没有检测到新的路径。

这个逻辑应用到片段中产生一个相当真实的跟踪:

看完了这篇文章,相信你对"如何使用OpenCV和Tensorflow跟踪排球的轨迹"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

轨迹 跟踪 方法 移动 路径 检测 排球 数据 斑点 方向 模型 蓝色 颜色 运动 最高 重要 例子 假球 图片 实际 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 长春华易软件开发公司 嘉定区网络技术服务联系方式 网浪网络技术有限公司苏州 c 调用数据库代码 mc阿喵的服务器被炸 江苏时间同步服务器云服务器 国资控股网络安全概念股票 邮件服务器的搭建以及抓包分析 软件开发六个w什么意思 铁路网络安全事件分为4级 南京运营软件开发咨询热线 服务器升级中请稍后使用 软件开发管理制度组成 大学网络安全周新闻稿 如何设计数据库j 5g网络技术的重要性 我的世界服务器多人生存java 女士学动漫设计还是软件开发 惠州市时代互联网科技有限公司 星辰影视怎么无网络或服务器异常 信息安全数据库 金三银四网络安全人才需求 新玩客网络技术有限公司 网络安全教育主持人开场白 国资控股网络安全概念股票 锡林郭勒盟网络安全会 储层地质数据库构建 samp现代都市服务器 35邮箱 服务器 苏州数字化智慧工地软件开发
0