0

作为我项目的一部分,我必须使用 kinect 实现手和手指跟踪。从我目前所读到的基本方法是:

  1. 追踪手的轮廓
  2. 使用凸包或 k 曲率算法查找指尖

这个对吗?如果有人可以提供有关如何跟踪轮廓的教程,因为我找不到任何好的。

或者

有没有其他方法可以追踪手和手指?


编辑

经过一些工作,我能够使用 sobel 边缘检测来检测图像中手的边缘。但正在降低我的fps。有什么办法可以提高它的性能??然后如何从检测到的边缘获取轮廓以执行手指检测?可以直接在边缘完成吗?

抱歉有这么多问题,但我对所有这些东西都很陌生

4

2 回答 2

0

手指追踪是一个巨大的话题。Anselan 为您提供了从 kinect 跟踪最近手指的指尖的简单解决方案,但仅此而已 - 没有冒犯的意思。如果 Kinect 设置的角度不好,因此它会在您的手指之前看到您的手掌,如果手指直接指向 Kinect 也不行(深度图将是黑色的)

Candescent NUI 是一个 .NET/KinectSDK 项目,可以“安静地”进行手指跟踪。我不是 .NET 专家,但我可能会看看它,因为我在 C/C++ 中找不到任何可以完成这项工作的东西,如果你找到了,请告诉我。顺便说一句,它还有一个(封闭源代码)英特尔项目,看起来很有希望,但出于营销原因,它仅适用于 Creative 相机

于 2013-12-17T12:43:12.910 回答
0

一个非常简单的方法,我已经在安装中成功实现,就是简单地寻找最接近 Kinect 的像素,并假设这是手指。

我的算法是这样工作的:(1) 将 X 和 Y 裁剪到特定的感兴趣区域,您没有预料到会有任何无关的物体进入场景(家具、墙壁、地板等)。 (2) 排除所有像素落在特定深度范围之外(不要太近,也不要超出您想要关注的跟踪区域,用户会站在哪里)(3)选择深度图中当前最接近(最亮)的像素,并将其设置为门槛。从该阈值向后(远离传感器)工作,直到某个距离范围(可能是几厘米)。(4) 检查生成的 blob 的大小。如果它太小,它可能只是噪音。如果它太大,它比手指或手大,所以它可能是整个身体(手没有伸向传感器),所以忽略它。

于 2013-11-27T14:20:12.153 回答