Carl
Carl

Reputation: 133

working with Kinect skeleton 3D

I work with the MS SDK in windows 7, and I'm aiming to extract some head orientation from the 3D skeleton. But I was surprised when drawing the 3D coordinates. The estimated head position is always leaning forward. From my static position viewing the camera, I am putting 3 images as examples, both hands and heads are colored in yellow, the right side of skeleton is in magenta, and the left side in cyan.

3D skeleton from the front view

(1) 3D skeleton from the front view

rotating the same skeleton from (1)

(2)rotating the same skeleton from (1)

top view of (1)

(3) top view of (1)

So, The question is,

  1. Is the correct technique?

  2. Though I have changed the default parameters, I am not getting any improvements. Any tips on working setup skeleton filtering parameters?

Upvotes: 1

Views: 1177

Answers (2)

IntStarFoo
IntStarFoo

Reputation: 765

I'm not sure whether you're using V1 or V2 but they are similar with respect to the questions...

  1. This is by correct both from the Kinect SDK and anatomically. Drawing a line from the center of your shoulders to the top center of your head would result in a line with forward lean. You can see examples of this in the SDK Browser Samples (Body Basics).

  2. I'm not sure what you're trying to map the joint positions to, but here is a demo that visualizes the JointOrientation data for each joint. There is source code in the comments that demonstrate how to obtain the values.

Here are the Kinect SDK Joint Types (V2, but similar to V1)

Upvotes: 1

Juliyanage Silva
Juliyanage Silva

Reputation: 2699

Now head rotation relative to neck axis can be calculated by the depth of two shoulders. First calculate the depth difference between neck center and shoulder joint(z distance ) and get the difference between neck center and shoulder( x distance ) and by getting the tan value you can get how much the body being rotated.

Upvotes: 2

Related Questions