骨架平滑无法正常工作

时间:2015-05-22 15:15:16

标签: c++ filter kinect

我必须在骨架关节上应用平滑。我使用了this link提出的联合过滤,但没有给出正确的结果。是否有任何其他过滤器或任何其他方法将平滑应用于骨架?

例如:我已将所有Kinect Joints传递给Update函数 KinectJointFilter.cpp(我从上面的链接获得)。但是同样的数据 即将作为输出。我觉得骨架平滑没有任何变化。

请告诉我我的实施是否正确。

1 个答案:

答案 0 :(得分:0)

在初始化之后,您可能需要使用不同的平滑参数调用Init()方法。

FilterDoubleExponential fde = new FilterDoubleExponential();

FLOAT fSmoothing = 0.7f;
FLOAT fCorrection = 0.3f;
FLOAT fPrediction = 1.0f;
FLOAT fJitterRadius = 1.0f;
FLOAT fMaxDeviationRadius = 1.0f;

// The above parameters provide very smoothed joints,
// but also an high latency.
// Change them as you prefer

// Set transform parameters.
fde.Init(fSmoothing, fCorrection, fPrediction, fJitterRadius, fMaxDeviationRadius);

现在,每当你有一个新的骨架时,将其传递给Update()方法并使用GetFilteredJoints()以获得平滑的关节。

我没有尝试过上面的代码,但应该可以使用。

您可以在this page中找到一些有用的参数组合(它指的是SDK 1.8,但在这种情况下示例中的参数也很好)。