平滑鼠标移动

5

我正在开发一款软件,根据从Kinect深度图像中获取的某些坐标移动鼠标。但是我有30帧/秒(每秒图像数),这些坐标会随着每一帧而改变,因此鼠标会不断移动。我的问题是,是否有一种方法可以平滑鼠标的移动?


1
你能提供更多的信息吗?抖动运动有多大(大/小)?如果是小的 - 一些简单的时间滤波可以帮助解决。如果很大,那么可能指向您的数据/算法存在问题,需要重新思考问题才能平滑处理。 - Ani
正如@ananthonline所说 - 我们需要更多的上下文信息,而且毫无疑问需要一些示例代码。听起来很有趣 - 我喜欢这样的问题,快写些代码吧。 - user1017882
抖动很小,但我想要平滑移动,就像鼠标从一个位置到另一个位置时一样。它表现出了一些不连续性。我想找到一种方法来使它像普通鼠标一样移动(我知道普通鼠标的频率要高得多,但是否有办法让我的光标类似地移动?) - Makram Bg
2个回答

5

是的,您可以使用一些参数开始跟踪,从而使移动更加平滑。
以下是一个示例代码:

        var parameters = new TransformSmoothParameters
        {
            Smoothing = 0.2f,
            Correction = 0.0f,
            Prediction = 0.0f,
            JitterRadius = 1.0f,
            MaxDeviationRadius = 0.5f
        };

        this._sensor.SkeletonStream.Enable(parameters);

您可以将 SmoothingCorrectionPredictionJitterRadiusMaxDeviationRadius 更改为任何数字。


1
Fixus,这只适用于OP正在跟踪骨架的情况下-而不是直接使用深度图像来计算鼠标位置。 - Ani
1
@ananthonline 确实如此。我应该写那个。但是合并两个流并不难,所以我认为这是一个好主意去写 :) - Fixus
1
谢谢您的回答,我不太确定,但有没有一种方法可以将深度坐标映射到骨架点并跟踪那个点?如果可以,请提供一个示例代码。先行致谢。 - Makram Bg

3

由于您想了解"将深度坐标映射到骨架点", 您可以使用 DepthImageFrameMapToSkeletonPoint() 方法,它接受深度数据的X和Y值,然后创建一个SkeletonPoint。 示例:

 SkeletonPoint point = depthFrame.MapToSkeletonPoint(x, y);

希望这可以帮到你!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接