6

我编写了一个程序,它使用来自 Kinect 的深度数据,并进行斑点检测以找到用户的手。但是,当用户用手控制鼠标时,它会变得非常生涩,这可能是因为人们不太擅长完全静止地握住身体部位。

我已经尝试根据最后十个位置对位置进行平均,但这只会导致延迟时间,而实际上并没有防止抖动。到目前为止,我使用的最佳解决方案是,如果两个方向的像素变化小于 10(即,任一方向的 10 像素变化都会导致移动),则不要移动光标。这没关系,但它仍然有点生涩,并导致界面笨拙,因为您没有很好的精度。

我怎样才能弥补人形缺乏稳定性,使鼠标不那么生涩?

4

3 回答 3

2

无论如何,这将是滞后和稳定性之间的权衡。

检查您的数据。您可能会发现抖动是因为 Kinect 中的低分辨率。如果是这样,抖动距离将取决于您与 Kinect 摄像头的距离。当您离得太远时,相机分辨率太低,并且会在一个或两个像素(立体摄像头)之间不断跳动。

通过计算平均值并设置移动阈值​​,您正在朝着正确的方向思考。你说你计算了最后 10 个位置的平均值,分辨率为 30 fps 会导致 0,33 秒延迟。

您可能只想平均最后 5 个(实验),而不是平均计算平均值。

只是一个想法; 运动很少单独出现,因此您可以设置一个阈值,用于减少用于平均/均值的样本数量。

于 2011-01-28T20:20:35.437 回答
1

在进行斑点检测之前,您是否尝试将中值滤波器应用于深度图?我在手指跟踪演示中使用了它,它极大地提高了稳定性。

3 到 5 之间的带宽给了我最好的结果(5 杀死了一点 fps,但它真的很流畅)。

于 2011-01-28T23:04:04.350 回答
1

你的采样率是多少?10 个位置可能只是百分之一秒。您可能希望平均最后 10 秒或 3 秒。

于 2011-01-28T20:04:28.440 回答