将 3D 对象的位置映射到 2D 图像的计算机视觉算法

机器算法验证 机器学习 神经网络 参考 计算机视觉
2022-04-08 15:56:29

这是我想要实现的:输入是一个足球图像帧 在此处输入图像描述

然后,我希望我的模型返回具有以下信息的 2D 模型:

在此处输入图像描述

给出了球员在场上的位置;并且玩家的相对距离也得到了很好的保存。

这是我实现这一目标的计划:

首先,使用一些标准的 ML 算法进行玩家检测(大量资源可供研究)

然而,主要的挑战是,在给定输入图像的情况下,我如何计算出该玩家在 2D 模型中的对应位置?同时,非常重要的部分,让摄像机图像中的场部分在 2D 模型场中得到很好的表现(比例很好,可以很好地保持玩家之间的相对距离)

因为我的目的是基于转播视频对 2D 足球比赛进行建模(反映真实转播足球视频的 2D 模型。因此,广播摄像机的一系列事件可以从鸟瞰图建模为 2D)。广播视频正在从一侧移动到另一侧。(目前,我排除了录制观众的框架,或单人游戏的特写镜头)

输入图像中可用作参考的所有线条对于每一帧都不是固定的。很难确定玩家的位置。

(我正在寻找已发表的论文,以便我可以实现算法)

1个回答

我不知道这方面的出版物。

在我看来,这是一个计算机视觉问题,包括几个较小的问题。您需要一个球场模型,能够分割和跟踪球员,并跟踪摄像机的视线。

理想情况下,相机是经过校准的,所以你有一个从像素到米的映射。问题是识别摄像机覆盖的球场的哪一部分(需要地标检测),检测球员并将他们的位置投影到平面上,最后应用摄像机定义的投影变换,将球场校正为 2d 视图场(或顶部的 3D)。

那么问题来了:

  • 如何定义地标是什么,以及如何在图像中找到它们,
  • 如何检测和跟踪玩家。

对于第一个问题,有许多方法可以拟合椭圆和其他类型的基元。参见例如(来自平面目标的稳健姿态估计,Schweighofer 等人)。如有必要,这还将允许重新校准或重新调整您的系统。

您可以使用一些标准的角点检测方法来检测角点:Harris(以正确的比例)。有关详细信息,请参阅本讲座(https://ags.cs.uni-kl.de/fileadmin/inf_ags/opt-ss14/OPT_SS2014_lec02.pdf

对于第二个,我希望基于标准 HOG 的方法能够检测到玩家(请参阅Histograms of Oriented Gradients for Human Detection)。至少在您发布的那种图像中。

当他们相互重叠时,跟踪玩家会变得非常棘手。我不知道解决该跟踪问题的可靠方法。您可能会从 OpenCV ( https://www.learnopencv.com/object-tracking-using-opencv-cpp-python/ )中实现的一种方法中获得一些好的结果