手检测会导致光标抖动

Mal*_*ist 6 c# kinect

我编写了一个使用Kinect深度数据的程序,并进行blob检测以找到用户的手.然而,当使用用户的手来控制鼠标时,它变得非常生涩,可能是因为人们不太擅长完全保持身体部位.

我已经尝试根据最后十个定位来平均位置,但这只会导致滞后时间而不会实际阻止急动.到目前为止,我使用的最佳解决方案是,如果两个方向上的像素变化小于10,则不移动光标(即,任一方向上的10个像素变化导致移动).这没关系,但它仍然有点生涩,导致笨重的界面,因为你没有很好的精度.

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

Ted*_*sen 2

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

检查你的数据。您可能会发现抖动是因为 Kinect 分辨率低造成的。如果是这样,抖动距离将根据您与 Kinect 摄像头的距离来确定。当您距离太远时,相机分辨率太低,它会在一两个像素(立体相机)之间不断跳动。

通过计算平均值并设定移动阈值,您的思考方向是正确的。您说您已经计算了最后 10 个位置的平均值,分辨率为 30 fps 会导致 0.33 秒的延迟。

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

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