Improving kinect skeleton tracking

Does anyone have any advice on ways to improve the stability of joint tracking when using the MS sdk kinect plugins? I’m trying to achieve smooth as possible hand tracking for a gesture interface.

Any combination of filters that people have used successfully would be great to know, as would settings for the SmoothSettings node (Is there any documentation for this?)

I’m currently having a play with Kalle’s Transient module btw

Cheers

Found this for SmoothSettings - http://msdn.microsoft.com/en-us/library/jj131024.aspx

Maybe if we all throw in some tips we could make a nice wiki entry

crappy tracking freaks me too

These smooth setting working pretty well -

// Smoothed with some latency.
// Filters out medium jitters.
// Good for a menu system that needs to be smooth but
// doesn’t need the reduced latency as much as gesture recognition does.
const NUI_TRANSFORM_SMOOTH_PARAMETERS SomewhatLatentParams =
{0.5f, 0.1f, 0.5f, 0.1f, 0.1f};

Some interesting info here regarding different methods of filtering http://msdn.microsoft.com/en-us/library/jj131429.aspx

Ok, I’m getting pretty good results with -

  • the above smooth settings
  • a median filter to remove spikes
  • slight damping proportional to joint speed (this is great)
  • further damping of any inferred joints (rather than tracked)

I’ll try to share a patch soon, though the settings I’m using are heavily biased towards this particular application. It would be nice after some more experimentation to make a general purpose module with some presets for different applications

edit - does anyone think a weighted moving average filter might be more effective than a damper for any of these steps?

thanks for those infos, i will test that soon it sounds really helpfull.