我必须在骨架关节上应用平滑。我使用了this link提出的联合过滤,但没有给出正确的结果。是否有任何其他过滤器或任何其他方法将平滑应用于骨架?
例如:我已将所有Kinect Joints传递给Update
函数
KinectJointFilter.cpp(我从上面的链接获得)。但是同样的数据
即将作为输出。我觉得骨架平滑没有任何变化。
请告诉我我的实施是否正确。
答案 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,但在这种情况下示例中的参数也很好)。