使用网球场尺寸的相机校准

如何解决使用网球场尺寸的相机校准

我正在制作 tennis project,目前正在尝试在球场上找到球接触球场的位置。
目前我有:

  • x,y 球的坐标来自这些 video(PS x,y 坐标在以下 format 中)。
points = [None,None,[985,325],[978,345],[904,613],[895,644],[886,649],[877,654],[870,658],[861,664],[853,672],[846,679],[837,688],[827,695],[821,707],[812,716],[803,729],[1051,313],[786,755],[782,769],746],730],[793,700],[800,677],656],[807,640],[814,620],[819,593],579],[825,562],[831,546],[834,532],[833,805],[865,427],[867,418],[871,409],[872,400],392],385],[883,377],369],[887,366],[890,358],357],[892,352],[894,346],[897,340],[898,336],[900,332],[902,329],[905,322],[908,320],[910,316],[912,315],[914,314],[916,310],[919,308],306],[920,305],[924,[922,[926,[928,307],[930,[932,[933,[935,[936,[937,[938,[940,[942,319],[943,323],[945,324],[946,298],291],[947,284],278],[950,272],[949,273],266],[951,261],255],251],245],[953,241],[952,237],236],[939,240],239],[934,242],244],250],[917,252],[911,256],263],[899,267],[896,274],286],[878,293],[873,300],[869,309],[863,318],[858,[851,338],349],[840,359],[835,371],[830,384],397],[818,410],424],[774,535],[773,537],[768,550],[761,572],[754,592],[750,615],[748,624],[739,652],[733,674],[728,698],[727,718],[718,733],[714,732],[709,[705,728],[702,[694,[696,[692,[688,[684,[678,731],[675,734],[673,737],[667,741],[664,743],[659,749],[653,[650,759],[647,765],[642,774],[636,780],[633,786],787],[630,796],[625,804],[629,[634,[640,697],[644,657],[649,[651,616],[655,[654,591],578],[656,560],544],[662,525],[668,482],448],[677,419],404],[679,394],[682,380],[683,374],370],367],364],[685,361],[686,356],[687,353],350],339],[681,283],[689,268],270],243],238],[690,231],228],[691,226],227],[699,[758,234],[762,[769,[775,[780,246],[787,253],[806,[820,[826,271],[832,279],[845,289],[852,296],[866,299],[874,[879,312],[888,[893,330],344],360],378],[967,402],[974,411],[980,421],[989,428],[1054,518],[1061,533],[1066,543],[1076,557],[1077,558],[1087,569],[1093,585],[1101,601],[1110,614],[1119,629],[1128,642],[1136,662],[1211,723],[1216,[1220,719],[1226,[1227,[1232,[1238,[1243,721],[1252,[1256,[1262,725],[1268,[1273,[1280,[1286,[1293,742],[1298,[1305,[1299,691],[1295,668],[1288,623],[1285,597],571],[1277,552],[1254,430],[1249,417],[1246,[1242,399],[1239,[1237,[1234,379],[1231,373],[1230,[1225,[1222,[1219,[1214,[1212,[1209,[1207,351],[1206,[1204,[1202,335],[1200,[1198,[1194,292],[1195,281],[1191,247],[1190,[1189,221],[1188,216],[1186,213],[1187,212],[1184,209],[1183,205],[1182,200],[1181,195],[906,222],[901,235],249],276],303],[876,321],[857,673],365],[859,[855,398],[849,412],413],[841,414],415],[828,416],[817,[816,[813,425],[809,423],[805,405],[804,[799,[838,625],[791,259],[788,248],[783,224],214],[781,204],[856,617],[860,[808,210],[824,260],[836,275],[839,334],[868,[875,383],[880,[885,[975,[991,561],[997,[1017,577],[1028,565],433],[944,420],407],[948,401],391],[954,381],375],[955,372],[956,368],[960,[959,363],[961,[963,[962,[965,[966,[968,[969,388],[972,[971,[973,437],403],396],389],[957,[941,[929,[889,422],[882,436],[743,536],[738,[732,545],[734,[701,583],[766,[770,[776,354],[794,[802,331],304],295],288],285],280],[842,269],[848,265],262],[1081,594],[1091,586],[1103,573],[1113,564],[1126,553],[1140,542],[1150,[1163,523],None]

video 上的这些点。

  • 场角4分,网下2分
    upperLeft = (577,303)
    upperRight = (1333,303)
    bottomLeft = (366,857)
    bottomRight = (1562,857)
    netLeft = (495,517)
    netRight = (1422,517)

asd

  • 球场尺寸为 23.7 x 10.97 米。

我被告知这些信息是不够的,因此,我必须找到球的 3D 轨迹。使用此 paper 作为我的主要指南,我尝试这样做。
但是,我在相机校准方面卡住了(第 2.1 节)我不知道如何才能像这张图片一样获得球场的 3D 投影/模型

enter image description here

我希望我清楚地描述了问题和手头的信息。任何指针、建议或问题表示赞赏。

解决方法

有两个单独的问题可以回答:

  1. 给定球弹跳位置的像素位置以及球场上 6 个已知点,您能否估计球弹跳位置的 3D 位置?回答:是的。这是因为球场(如果是标准球场)具有已知的尺寸,这决定了球场平面和图像之间的单应性比例。最简单的方法是使用张的相机校准算法的 1 图像最小版本(在 OpenCv 中实现)来估计焦距以及相机相对于 6 个场上点的位置和方向。一旦相机被校准,你所要做的就是将球反弹点的 3d 射线与 Z=0 的平面相交
  2. 根据对球轨迹的观察,您能否估计弹跳的像素位置(如果存在)?答:视情况而定。这纯粹是一个图像处理问题,归结为在观察到的球的速度向量中随时间寻找不连续性。速度估计是出了名的嘈杂,并且部分取决于相机相对于球轨迹的方向。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res