我们正在努力为我们的大学项目开发用于板球的HawkEye系统。
HawkEye系统中使用的过程如下:
到目前为止,这是我们计划完成这个项目的目的:
我们将从腿部裁判的位置拍摄击球手的视频,然后在vlc播放器中以慢动作播放该视频,同时拍摄球的飞行的多个屏幕截图,我想这将照顾第1步
但是现在我们陷入了第2步,我们现在面临的问题是如何在特定情况下识别和找到球的(x,y)坐标(来自球的图像)从腿侧) 如果我们能找到球的(x,y)并且如果相机距某个参考点的距离已知,那么我们可以找到图像的深度,即z坐标,因此我们可以找到相应的(x ,y,z)坐标,然后我们可以使用OpenGL
在3D中对其进行建模我们正试图在C ++中实现它
任何帮助表示赞赏:)
快速编辑:
我发现真正的HawkEye System 6摄像机在板球场的圆周上进行了调整,所有摄像机都以60度的角度进行了分离,HawkEye只能使用4台摄像机完美地工作,但为了更好的精度,使用了2台额外的摄像机。
因为我们没有这么多相机,我想我们将使用保持在场的圆周上的3个相机分开120度并且为了降低复杂性我们将选择一个半径= 5m的小场,但是我们不确定在哪里放置相机以获得更准确的结果,可能是位置可能是:一个位于腿侧,一个位于偏侧,第三个位于前方但我仍不确定位置是什么选择
这种方法被称为多相机校准和球识别我认为我们应该选择OpenCV而非MATLAB,因为OpenCV可以更快速地进行图像处理
你们有什么要说的?
答案 0 :(得分:3)
关于步骤2,提取球的位置,有许多可能的方法和文献来源。我强烈建议研究机器人足球(Robocup)的工作,其中包含许多类似问题的例子。
在理想的世界中(比如白色背景上的黑色圆盘),起点可能是使用类似Hough Transform或轮廓追踪的东西,并使用合成轮廓的统计矩来提取位置。
这种方法的挑战在于,板球场绝对会具有难以移除的背景特征。通过一些反复试验,您可以使用常见的图像处理技术,例如背景减法,形态算子,边缘检测器,颜色过滤和阈值处理,以提高您持续查找球的能力。根据过去的经验,我强烈建议使用一组工具,使您可以快速原型化图像处理管道和技术,可能是MATLAB。
对于这个问题的一个更强有力的方法,可能会导致以下几个部分,如果你对球的位置有所了解,那么你可以合理地估计一下球后的位置。时间这是最佳估计领域,Kalman Filters。虽然来自一个非常不同的问题空间,但很好的介绍性文本是Thrun等人的Probabilistic Robotics。
答案 1 :(得分:2)
给你的球带来你在图像中不太可能找到的暗色,然后在每张图像中查找该颜色的像素。这是最简单的选择。 考虑到球可以在板球中移动的速度,而你只使用30 fps,大多数其他选项要困难得多。只是找到一个白球是非常困难的(正如你可能发现的那样),所以你最好的选择是在之前的帧中使用有关球运动的信息来帮助在新的帧中找到它。但是,低帧速率和高球速意味着你的球会在帧之间移动很多。对于高速碗,在142公里/小时的速度下,您正在观察帧之间超过一米的移动,这将导致后续帧之间的球图像之间存在相当大的间隙,这使得使用时间信息变得更加困难
作为奇怪颜色的替代品,您还可以使用在红外区域中具有高反射性的层来绘制球,并使用红外灯(人类无法看到)和红外敏感相机(您可以移除红外线滤镜)从相机你有这个)。
答案 2 :(得分:0)
我认为你需要两个摄像头才能确定从相机到球的距离。不管怎样,或者你必须使用一些解决方法,比如查看每个框架中的球的大小或球与其阴影的距离。但我怀疑这两种解决方法是否足够准确......
答案 3 :(得分:0)
如果你有投影/视图矩阵从图像空间到世界空间(有很多文件用于进行相机校准/坐标转换),一台相机就够了。这将为您提供从相机通过球指向的矢量。然后可以使用球的大小来确定与相机的距离。
猜猜找到球的最简单方法是引入一个阈值,从图像的其余部分“切割”球。或者使用运动检测来提取球和/或组合两种方法。