小编k3X*_*3XX的帖子

检测台球桌上的球

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

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

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

台球桌顶视图kinect深度原始

然后,我从当前图像中减去具有空表的参考图像。

阈值和均衡之后,它看起来是这样的:图片

台球桌顶视图kinect深度处理

在单个图像上检测单个球是相当容易的,问题是我必须以30fps的速度不断进行检测。

难点:

  • 低分辨率图像(512 * 424),球的直径约为4-5像素
  • Kinect深度图像在此距离(2米)处有很多噪点
  • 球在深度图像上看起来不同,例如,黑球与其他球相比有点倒立
  • 如果它们彼此接触,则它们可以成为图像上的一个斑点,如果我尝试使用深度阈值将它们分开(仅使用球的顶部),那么某些球可能会从图像中消失
  • 重要的是不要检测到除球以外的任何东西,例如:提示,手等...

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

  • 通过阈值16位至8位
  • 用空表减去样本图像
  • 播种
  • 门槛
  • 均衡化
  • 腐蚀
  • 扩张
  • 二进制阈值
  • 轮廓查找器
  • 有关输出坐标的其他一些算法

问题在于撞球杆或手会被检测为球,而且如果两个球接触,也会引起问题。还尝试了霍夫圈,但成功率更低。(如果Kinect更近,效果很好,但它不能覆盖整个桌子)

任何线索将不胜感激。

opencv image-processing computer-vision

5
推荐指数
1
解决办法
1398
查看次数

标签 统计

computer-vision ×1

image-processing ×1

opencv ×1