2013-11-14 143 views
0

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

  1. 跟踪手
  2. 的轮廓采用凸包或k曲率算法中

这是正确的找到指尖? 如果是有人可以提供关于如何跟踪轮廓的教程,因为我无法找到任何好的轮廓。

有没有其他的方式来跟踪手和手指?


编辑

后的一些工作,我能够检测使用Sobel边缘检测图像中的手的边缘。但是正在减少我的fps。有什么方法可以提高其性能? 以及如何从检测到的边缘获取轮廓以执行手指检测?它可以直接在边缘完成吗?

对不起这么多的问题,但我是新来的这一切的东西

回答

0

一个非常简单的方法来做到这一点,这是我在安装成功实施,是简单地寻找最接近的像素到Kinect的,并假设这是指向手指。 (1)将X和Y裁剪到特定的感兴趣区域,在那里您不希望任何外来物体进入场景(家具,墙壁,地板等)。 (2)排除掉落在特定深度范围之外的所有像素(没有太近,没有超出您想要关注的跟踪区域,用户将站在哪里) (3)选择当前最近(最亮)像素深度图,并将其设置为阈值。从该阈值向后(远离传感器)工作,直到一定的距离范围(可能是几厘米)。 (4)检查产生的斑点的大小。如果太小,可能只是噪音。如果它太大,比手指或手大,所以它可能是整个身体(手没有伸向传感器),所以忽略它。 (5)假设blob通过了以上所有,请跟踪它。

+0

请问你能解释一些关于消除噪音?目前我正在做的是找到最近的像素,并允许距离它10厘米的所有像素,但它不断拾取一些随机噪声。我如何删除它? – vaibhav

+0

噪音是否影响您的跟踪点或您最近像素的阈值?无论哪种方式,您都需要实现一个检查指定帧数的系统(3-5应该足够了),并试图忽略预期范围之外的值。这有帮助吗? – Anselan

0

手指跟踪是一个巨大的话题。 Anselan为您提供了轻松的解决方案,可以跟踪来自kinect的最接近手指的指尖,但这就是它 - 没有冒犯的意思。如果Kinect设置在一个不好的角度,所以它会在你的手指之前看到你的手掌,如果手指直接指向Kinect(深度图将是黑色的,那么它不会工作)

Candescent NUI是一个.NET/KinectSDK项目的手指追踪“安静”。我不是.NET专家,但我可能会看一下它,因为我找不到任何可以完成这项工作的C/C++,请让我知道,如果你发现了什么。顺便说一句,还有一个(封闭源代码)英特尔的项目,它看起来更有前途,但它只适用于创意相机出于市场营销的原因