我应该使用什么 device/instrument/technology 来检测位于给定表面上的物体?

What device/instrument/technology should I use for detecting object’s lying on a given surface?

首先:感谢您花时间帮助我解决问题。非常感谢:)

我正在构建一个自然用户界面。我希望界面能够检测到位于其上的多个(最多 40 个)物体。界面应该检测对象是否在其上移动 canvas。表面上的实际物体是什么并不重要

e.x。 “瓶子”

或者它有什么颜色——只有物体的形状和位置是感兴趣的

e.x。 “圆圈” .

到目前为止,我正在使用连接到我的计算机的 网络摄像头 Processing 的 blob 功能来检测表面上的物体接口(见图1)。这对我要实现的目标有一些主要缺点:

  1. 我不希望用户看到相机或任何替代设备,因为这会分散用户的注意力。实际上表面应该是完全黑暗的。

  2. 每当我伸手去重新排列界面上的对象时,斑点检测就会变得非常繁忙,并且正在识别没有直接接触 canvas 的对象(我的手) .使用 Kinect 很难解决这个问题,因为深度功能无法通过 glass/acrylic 玻璃工作 - 如果我错了请纠正我。

  3. 最好在由 Arduino 控制的 canvas 上安装几个 LED。不幸的是,LED 的光会干扰斑点检测。
  4. 由于相机的焦距,table 需要不必要地高(60 厘米/23 英寸)。

您是否有任何替代方法 device/technology 来检测对象?如果该设备可以与 Processing 和 Arduino 配合使用,那就太好了。

提前致谢! :)

一种可能:

  • 使用具有红外功能的网络摄像头(例如具有内置红外照明的安全摄像头)。显然一些普通的网络摄像头可以通过删除过滤器转换为 IR 使用,我不知道这有多普遍。
  • 用一些 material 制成红外透明但对可见光不透明或几乎不透明的顶部 table。 (以大多数红外遥控器上的镜头为例。)

不幸的是,这对#2 帮助不大。或许你可以对你认为是你的对象的 size/shape 斑点更挑剔一些?

如果#3 只需要几个不同的照明点,您可以将激光二极管放在 table 下方,远离相机的路径 - 这应该会在顶部形成一个可见点,如果tabletop material 并非完全不透明。如果您需要任意定位灯光 - 也许是天花板上的投影仪,指向下方?

查看 OpenCV。这是一个开源计算机视觉项目。

可能性:

  • 使用反光有色玻璃,使表面变暗或反光
  • 用红外 LED 阵列照亮放置网络摄像头的区域。
  • 我会建议基于颜色的对象检测和轮廓绘制。
  • 如果您使用基于颜色的检测,请将​​帧转换为 HSV 和 CrCb 颜色 space。在使用基于颜色的检测时,这些对于所需区域的分割要好得多。
  • 我建议您查看 https://github.com/atduskgreg/opencv-processing。这将 Open-CV 与处理连接起来,您将在处理中获得 Open-CV 的许多功能。

除了现有的想法(很棒)之外,我还建议尝试 TUIO Processing

一旦你设置了相机(根据你的身体限制,view/lens/etc 的正确字段)你可能会在 [=23] 的底部粘贴 TUIO 标记=].

软件会自动检测标记,您可以通过ID区分objects,也可以获得position/rotation/etc。你的手不会参与其中。