首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在台球桌上检测球

在台球桌上检测球
EN

Stack Overflow用户
提问于 2016-11-21 10:09:44
回答 1查看 2.9K关注 0票数 5

我目前正在做一个项目,我需要能够非常可靠地获得球在台球桌上的位置。

我使用表上的Kinect v2作为源。

初始图像如下所示(通过丢弃不在表级别的像素将其从16位转换为8位):

然后,i从当前图像中减去带空表的参考图像。

经过阈值和均衡之后,它看起来如下:图像

在单个图像上检测单个球是相当容易的,问题是我必须不断地用30 easy来完成它。

困难:

  • 低分辨率图像(512*424),球直径约4-5像素。
  • Kinect深度图像在这个距离(2米)有很大的噪音。
  • 在深度图像上,球看起来不一样,例如,与其他的相比,黑色的球有点倒置。
  • 如果它们互相接触,它们就会成为图像上的一个斑点,如果我试图用深度阈值(仅使用球的顶部)将它们分开,那么一些球就会从图像中消失。
  • 真正重要的是,除了球以外的任何东西都不应该被发现,例如:球杆、手等。

我的过程,哪种工作,但不够可靠:

  • 16位至8位通过阈值处理
  • 用空表减去样本图像
  • 种植
  • 脱粒
  • 均衡化
  • 冲蚀
  • 扩容
  • 二元阈值
  • 轮廓测定仪
  • 关于输出坐标的进一步算法

问题是,一个球杆或手可以被检测为一个球,如果两个球接触,那么它可能会引起问题。也尝试了霍夫圈,但成功更少。(如果Kinect更接近,那么它就不能覆盖整个表)

任何线索都会很感激的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-27 19:20:17

扩大上述评论:

我建议尽可能改进IRL设置。大多数情况下,确保可靠的设置比尝试“修复”用户的计算机视觉要容易得多,甚至在检测/跟踪任何东西之前。

我的建议是:

  1. 把相机移近桌子。(你上传的图片可以大117%,还可以覆盖口袋)
  2. 对齐相机,使其完全垂直于桌子(并确保传感器架坚固且固定良好):处理一个完美的自上而下视图比稍微倾斜的视图更容易(这就是深度梯度所显示的)。(可以确定数据可以旋转,但当您只需保持传感器的直线时,为什么要浪费CPU周期)

有了更可靠的设置,您应该能够根据深度来确定阈值。您可以可能的门槛到球的中心,因为下面的信息无论如何都是被屏蔽的。球不会变形,所以半径减小得很快,球可能会掉进口袋里。

一个你有一个清晰的阈值图像,你可以findContours()minEnclosingCircle()。此外,您应该根据最小和最大半径值来扭曲结果,以避免视图中的其他对象(手、池提示等)。还可以查看瞬间()并确保阅读禤浩焯在OpenCV文章中的优秀球跟踪

它使用Python,但是您应该能够找到您使用的语言的OpenCV等效调用。

在跟踪方面,如果您使用OpenCV 2.4,您应该查看OpenCV 2.4的跟踪算法 (比如Lucas)。如果您已经使用了OpenCV 3.0,那么它有自己的贡献跟踪算法列表 (如TLD)。

我建议先从矩开始:首先使用最简单、计算成本最低的设置,在进入更复杂的算法之前先看看结果如何(这需要理解和正确获得参数才能得到预期的结果)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40717587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档