【问题标题】:Measuring height of a playing card deck in an image测量图像中扑克牌的高度
【发布时间】:2019-12-20 12:27:40
【问题描述】:

我正在为赌场监控软件编写一个模块。

一点上下文:

我从不同时间提取的视频中提取了几张图像。我有一个参考甲板,总是在一个我知道大小的固定位置。假设畸变、相机焦距和距离未知(这将是商业销售的软件包,因此这些参数未知)。

目前工作:

我已经应用了精巧的边缘检测和轮廓线来获得两个甲板的像素高度。前面甲板所有角的坐标也是已知的,因为它始终处于相同方向的固定位置。

当参考平台与我尝试测量的平台距离不同但更靠近相机时,问题就开始了。在这种情况下,由于其中一副牌更靠近相机,两副牌可能看起来具有相同的像素高度,尽管后面的那张包含更多卡片。

这是一个视觉示例:

实际上,两副牌都有 52 张卡片,但靠近相机的那张尺寸为 83 像素,而后面的那张尺寸为 63 像素。

如何规范化我在后台参考牌组的值?我发现了一个问题,它在图像内移动时计算大小,但这使用了我不熟悉的 openGL (How do I reverse-project 2D points into 3D?)。我正在尝试在 Python 中使用计算机视觉/图像处理库(我目前使用 ImageMagick 来处理精明的边缘和霍夫线)来实现这一点(如果您认为 python 不合适,我愿意接受有关使用另一种编程语言的建议)。

编辑:

总结我想要实现的目标:我想知道这两个对象如何比较高度。我如何将后面的那个缩放为与前面那个相邻的大小,以便我可以比较两者?

【问题讨论】:

  • 很可能,您想使用变换进行缩放。因此,如果您知道卡片的背面并且可以找到转乘飞机的路线,您就可以估计到相机的距离。将距离作为归一化因子。对于仿射变换和自动拟合,请查看例如卢卡斯-卡纳德。
  • @Dschoni 谢谢您的回复。您能否详细说明如何找到到 plave 的转移并估计到相机的距离?

标签: python math image-processing computer-vision photogrammetry


【解决方案1】:

我不熟悉 ImageMagick,因此无法为您编写代码,但我解释了您要做什么:

有一点我们可以确定:每张卡片的真实尺寸!你知道所有卡片都有相同的宽度和高度(在现实世界中),所以你唯一需要做的就是找到图像中第一叠和第二叠上卡片的宽度。由于这两个数字是相互关联的,现在您可以得到甲板 1 和甲板 2 周围的尺寸比率。

使用这些比率,您可以标准化甲板的高度并将这些数字相互比较。

例如,假设每张卡片的宽度(红色箭头)为 5 厘米,图像中第一副牌的宽度为 80 像素,第二副牌的宽度为 40 像素。所以比率是 2。现在比较那些黑线,只需将第二行的长度乘以 2,然后将结果数与第一行的长度进行比较。

您有很多方法可以估算每个卡片组的宽度。提取宽度可能很难,所以我建议比较模式的宽度(黄色箭头),为此,我会这样做:

1- 在图像上做一个精明的(因为卡片上的图画,你会 卡片表面有很多线条)

2- 进行膨胀以将所有这些绘图线粘贴在表面上 卡片并制作一个单位对象

3- 做一个腐蚀来缩小那个对象,然后抓住 该对象的宽度(这将是一个很好的估计宽度 卡片)

【讨论】:

  • 感谢您的回复。一些赌场订购定制的扑克牌,因此卡片的尺寸可能不是标准的。在这种情况下可以做什么?你能更详细地解释第2步和第3步吗?也许有一些例子?
  • @PU2014 我编辑了答案。您不需要知道所有赌场中所有牌的真实宽度。您唯一需要做的就是确保该赌场中的所有牌都具有相同的尺寸。第2步是在卡片上制作一个单位对象,当你做第1步时,你就会明白我为什么建议这样做了。
  • 这是一个聪明的解决方案,但不幸的是也不正确。两个甲板相对于相机的角度不同,因此甲板的高度、宽度和长度的相对大小没有可比性。您需要首先校正投影失真,这涉及校准安装在桌面上的相机。而且,如果您仍然进行了校准,则不再需要按照此处的建议进行比较。
  • @CrisLuengo 谢谢你的好点。当然,正如我提到的,这是一个“估计”,它并不完全精确,但它有帮助。此外,我们知道卡片的真实形状是纯“矩形”,因此无需任何校准即可轻松补偿投影(也可以借助水平尺寸)。 (一切都是估计,即使经过校准也无法找到图像中 3D 维度的准确值)
  • @Meisam 能否给出一个伪代码或解释如何在不进行任何校准的情况下实现投影补偿?
【解决方案2】:

我认为,您应该将参考牌组的面积与目标牌组的面积进行比较。
但首先您应该计算参考甲板和目标甲板的距离。
如果您的数据集有标签,或者您的问题是监督问题。
我认为,如果你使用神经网络,你可以将两个甲板的距离设置为偏差值。
另外,我认为,您应该将两个甲板的两个最近像素的距离计算为两个甲板的距离。

【讨论】:

  • 嗨@Mehdi,我纠正了你答案的语法,但是,我认为最后一句话不清楚(至少对我来说不是)。也许你可以更好地解释最后一点?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多