足球虚拟越位线技术FIFA OT(一)

此系列文章用于记录和回顾开发越位线系统的过程,平时工作较忙,有空时更新。

越位线技术

越位技术已被用于图形化分析足球中潜在的越位情况。

自 2018 年将视频助理裁判 (VAR) 引入比赛规则以来,人们越来越关注准确确定越位并根据这些越位做出自信决定的能力。国际足联在 2016 年至 2019 年间进行的研究表明,此类虚拟线最常见的误差来源是场地的地形(尤其是场地外倾角)、摄像机角度失真、球员遮挡和跟踪单个身体部位的问题。

虚拟越位线技术归属于裁判技术,另外两项裁判技术是视频助理裁判技术和球门线技术。

下面的视频是FIFA的越位线技术介绍,我在实际开发越位线技术的过程中研究了该视频内容的细节无数次。。

FIFA认证

虚拟越位线技术要想在比赛中使用首先要获得FIFA认证,认证流程如下

这是2023年发布的标准中的认证流程,右边分为Standard和SAOT,SAOT是引入了骨骼跟踪的半自动越位线技术,在23年的测试中SAOT属于可选项,取得Standard认证即可在赛事中使用,实际在现场真正参加SAOT测试的也只有Hawk一家。

那这两个有什么区别呢?看下面两张图,区别就在左上角的图标上,一个是FIFA QUALITY,一个是FIFA QUALITY PRO。

遗憾的事,这项技术曾经也是被国外垄断的,其实基本也就是一家公司-英国鹰眼(Hawk-eye),该公司2011年被索尼收购,现在业内基本都都喊他索尼。

我们从20年启动到23年拿到认证用了3年时间,共参加了3次测试,2次远程(疫情出不去),1次现场,第三次也就是23年在德国现场测试的时候拿到了Standard认证。从23年开始,认证周期也改成了4年一次,也就是说下次认证在27年。

FIFA越位线认证测试内容

项目启动对于技术人来说,最重要的还是要搞清楚认证测试内容,才能开展后续的软件设计开发工作。

简单点说,在一个球场内需要测试20个场景,也就是说需要绘制20次越位线。其中2D场景10次,3D场景10次。那么如何判断绘制越位线的准确度呢,官方会预先使用全站仪在场地中测量出越位线的位置,然后在两侧放置marker标记。如下图所示

评分通过marker标记(直径10cm)评估,越位线经过marker靠内侧区域扣1分、外侧区域2分、超出marker 3分,扣分总分超过10分即考试失败,只要有一次越位线超出marker也是考试失败。

什么是2D测试和3D测试呢,测试中也称为block1和block2。block1视频画面范围较大,越位线长度贯穿整个球场68米,绘制参考是球员踩在地上的脚,不存在找地面投影点的问题,marker内边缘间距50cm。block2视频画面范围相对较小,越位线长度不低于20米,绘制参考是一个悬空的球鞋,marker间距40cm。

block1和block2单独计分。每个block绘制10个场景,20张图像,每个场景绘制两张。如下图,场地至少3个越位线相机,分别是左16米相机、主相机、右16米相机,当球员在左半场时,需要在左16米相机和主相机绘制,在右半场同理。

这里分析一下,block1-2D场景越位线绘制68米,这样的话上下边线都在画面中,画面分辨率为1080p,那么画面高度1080个像素至少拍摄了68米的范围,换算一下平均像素精度低于6.3cm,距离相机较远的上半场精度将更低(尤其是主相机、球员在左上角),超过10cm。两个marker之间的距离是50公分,则误差允许范围是正负25cm,允许误差在1-2个像素,操作绘制时用鼠标选球员脚尖位置。这时放大后选择脚尖,图像可能是糊的。

这里还有一个线宽的问题,需要交代,由于是提交的是包含越位线的图像,线是由像素点组成的,验收结果时以线前缘为准(靠近球门线的方向)。

block2-3D场景绘制范围较小,大于20米,允许误差正负20cm,困难的是,画面内容少,球鞋悬空,找到球鞋前端的地面投影点比较有挑战,另外相机画面内容少,给相机参数求解带来困难。

相机由摄影师控制跟随比赛移动,对应到CV上代表内参、外参、畸变系数均在实时变化,而能拿到的信息只有过来的视频流,需要在这种条件下完成相机的参数求解工作。这时可参考的信息只有球场的先验参数,比如场地的尺寸,白线的位置。FIFA球场尺寸的标准并非固定数据而是范围,另外球场不平,为了排水会设计坡度,这些也给求解带来的较大的困难。

蓝色未考虑坡度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/38201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

完美世界|单机版合集(共22个版本)

前言 我是研究单机的老罗,今天给大家带来的是完美世界的单机版合集,一共22个版本。本人亲自测试了一个版本,运行视频如下: 完美世界|单机版合集 先看所有的版本的文件,文件比较大,准备好空间,差…

Transformer详解encoder

目录 1. Input Embedding 2. Positional Encoding 3. Multi-Head Attention 4. Add & Norm 5. Feedforward Add & Norm 6.代码展示 (1)layer_norm (2)encoder_layer1 最近刚好梳理了下transformer,今…

【VScode】常用配置

1.indenticator 增加白色竖条,显示方法范围 2.Git Graph 给git变换分支增添颜色区分 3.Vue 系列 vue 系列:给纯白色代码添加 颜色区分 3.eslint eslint警告,比如{ } 只写了半个会标红提示错误 等错误信息提示 需要配置js等页面 非下…

1.linux操作系统CPU负载

目录 概述CPU平均负载查看平均负载结束 概述 CPU 使用率 和CPU 平均使用率。 CPU平均负载 单位时间内系统处于 [可运行状态] 和 [不可中断状态] 的平均进程数,就是平均活跃进程数,和CPU使用率并没有直接关系 可运行状态 正在使用CPU或者正等待CPU的进…

【Elasticsearch】linux使用supervisor常驻Elasticsearch,centos6.10安装 supervisor

背景: linux服务器,CentOS 6操作系统,默认版本python2.6.6,避免安装过多的依赖不升级python 在网上查的资料python2.6.6兼容supervisor版本 3.1.3 安装supervisor 手动在python官网下载supervisor,并上传到服务器 下…

Linux_动、静态库

目录 一、静态库 1、静态库的概念 2、制作静态库的指令 3、制作静态库 4、链接静态库 二、动态库 1、动态库的概念 2、制作动态库的指令 3、制作动态库 4、链接动态库 5、动态库的加载 三、静态库与动态库的区别 结语 前言: 在Linux下大部分程序进…

【JavaEE】多线程代码案例(1)

🎏🎏🎏个人主页🎏🎏🎏 🎏🎏🎏JavaEE专栏🎏🎏🎏 🎏🎏🎏上一篇文章:多线程(2…

Android Studio环境搭建(4.03)和报错解决记录

1.本地SDK包导入 安装好IDE以及下好SDK包后,先不要管IDE的引导配置,直接新建一个新工程,进到开发界面。 SDK路径配置:File---->>Other Settings---->>Default Project Structure 拷贝你SDK解压的路径来这,…

ros笔记01--初次体验ros2

ros笔记01--初次体验ros2 介绍安装ros2测试验证ros2说明 介绍 机器人操作系统(ROS)是一组用于构建机器人应用程序的软件库和工具。从驱动程序和最先进的算法到强大的开发者工具,ROS拥有我们下一个机器人项目所需的开源工具。 当前ros已经应用到各类机器人项目开发中…

操作符详解(下) (C语言)

操作符详解下 操作符的属性1.优先级2.结合级 表达式求值1.整型提升2.如何进行整形提升呢?3.算术转换4.问题表达式解析 操作符的属性 C语言的操作符有2个重要的属性:优先级、结合性,这两个属性决定了表达式求值的计算顺序。 1.优先级 优先级…

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

RabbitMQ 进程内流控(Flow Control) 源码解析

1. 概述 1.1 为什么要流控? 流控主要是为了防止生产者生产消息速度过快,超过 Broker 可以处理的速度。这时需要暂时限制生产者的生产速度,让 Broker 的处理能够跟上生产速度。 Erlang进程之间不共享内存,每个进程都有自己的进程邮…

42.HOOK引擎核心代码

上一个内容:41.HOOK引擎设计原理 以 40.设计HOOK引擎的好处 它的代码为基础进行修改 主要做的是读写寄存器 效果图 添加一个类 htdHook.h文件中的实现 #pragma once class htdHook { public:htdHook(); };htdHook.cpp文件中的实现: #include "…

独辟蹊径:我是如何用Java自创一套工作流引擎的(下)

作者:后端小肥肠 创作不易,未经允许严禁转载。 姊妹篇:独辟蹊径:我是如何用Java自创一套工作流引擎的(上)_java工作流引擎-CSDN博客 1. 前言 在上一篇博客中,我们详细介绍了如何利用Java语言从…

LC437.路径总和Ⅲ、LC207.课程表

给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点&am…

【每日刷题】Day77

【每日刷题】Day77 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. LCR 159. 库存管理 III - 力扣(LeetCode) 2. LCR 075. 数组的相对排序 - 力…

Linux——passwd文件,grep,cut

/etc/passwd文件含义 作用 - 记录用户账户信息:共分为7段,使用冒号分割 含义 - 文件内容意义:账户名:密码代号x:UID:GID:注释:家目录:SHELL - 第7列/sbin/nologin&#x…

c++(三)

1. STL 1.1. 迭代器 迭代器是访问容器中元素的通用方法。如果使用迭代器,不同的容器,访问元素的方法是相同的;迭代器支持的基本操作:赋值()、解引用(*)、比较(和!&…

隐私计算实训营第二期第11讲组件介绍与自定义开发

首先给大家推荐一个博主的笔记:隐语课程学习笔记11- 组件介绍与自定义开发-CSDN博客 官方文档:隐语开放标准介绍 | 开放标准 v1.0.dev240328 | 隐语 SecretFlow 01 隐语开放标准 隐语开放标准是为隐私保护应用设计的协议栈。 目前,隐语开…

mysql8.0-学习

文章目录 mysql8.0基础知识-学习安装mysql_8.0登录mysql8.0的体系结构与管理体系结构图连接mysqlmysql8.0的 “新姿势” mysql的日常管理用户安全权限练习查看用户的权限回收:revoke角色 mysql的多种连接方式socket显示系统中当前运行的所有线程 tcp/ip客户端工具基于SSL的安全…