none
Accuracy of skeleton tracker RRS feed

  • Question

  • Hi,

    Some body help me to clarify my following doubts regarding skeleton tracking in kinect.

    1.how to identify the degree of accuracy, the skeleton tracking is tracking the person.

    2.In the real scenario, when the human body is moving then skeleton joints are  stable. But in kinect when u superimpose skeleton tracking on depth image, why the skeleton joints are not remaining fixed on the human body.

    Thanks

    Sam

    Thursday, June 27, 2013 9:13 PM

Answers

All replies

  • Kinect can't see joints directly. Its joint positions are calculated due to body parts.

    For example, where do you think a "hand joint" should be? Maybe you think it should be at the position where fingers connect to palm, but it's not. The joint itself does't move, but what Kinect detects is only the center of the hand. Suppose you throw your hands open towards the sensor, then you close your hand to fist. Because 4 of your fingers(except thumb) moved down, the center of you hand moved down a little, so do the "hand joint".

    Monday, July 1, 2013 1:36 AM
  • Thanks kasumi :)

    Yes you are correct the joint position are calculated due to body parts.Consider this scenario a person is sitting in his chair and kinect is tracking that person.Now another person stands behind to him very close.But now also kinect is tracking the same person who is sitting.Now suddenly when the person stands behind starts moving, the skeleton which is superimposed on the sitting person jumps to the standing person.

    So totally my program got collapse....

    But i think kinect skeleton tracking got this bug? what do you think

    Wednesday, July 3, 2013 12:02 PM
  • There are methods to employ to have the skeleton "stick" to the tracked person to handle this type of interference. As the developer it is up to you on how you want to handle these scenarios.

    http://msdn.microsoft.com/en-us/library/jj131025.aspx#Active_User_Tracking

    You could try to detect when 2 people are in front of the sensor and take action if they are too close to each other. Keep in mind the guidelines and best practice for skeletal tracking.

    http://msdn.microsoft.com/en-us/library/hh973074.aspx#ID4EQC

    Also keep in mind the pose of the person, seated poses are not ideal. The Seated Tracking mode is best for Near range operation and the likelihood someone goes in front of the person is minimal. Again, if you find interference at that point(too many inferred joints), then that would be up to you on how to handle it.

    http://msdn.microsoft.com/en-us/library/hh973077.aspx


    Carmine Si - MSFT

    Monday, July 8, 2013 7:05 PM
  • I don't know whether you understand my above question or not? Once again i will explain you my question to you.

    Scenario:-

    Consider a 25 years man say "player 1" who's height is say 6 feet being tracked by kinect sensor at 4 feet range. Player 1 is not doing any movement.

    Now when another person is crossing beyond the tracked person at 5 feet range, suddenly the tracked person's skeleton is shifted or jumped from player 1 to the person who is going behind.

    Because kinect considers that player who is in the range of 4 feet to 5 feet as the same player(i.e player-1).

    For your understanding i am also attaching the image.before jump

    After another person crossing

    Please anybody suggest me idea to solve the above problem in skeleton tracking in kinect sdk 1.7

    Wednesday, July 10, 2013 7:08 AM
  • Are you using Kinect for Windows device or Kinect for Xbox? Did you enable SkeletonStream.AppChoosesSkeletons = true; and select the active skeleton you want to track? Since I don't know how your code is designed, as a test, use Kinect Explorer and enable Sticky1Player.

    From there you should find that there is a different behavior. Also note, you will get see the joints become yellow(inferred) when there is interference/noise. In these scenarios, that would be a trigger for your application to make some decisions on how you want to treat the tracked data. With the Xbox sensor, depth is only going to be 320x240 as apposed to 640x480. Since these are relatively low resolutions, distance from the camera and IR noise all affect how accurate ST will be.

    There are other ways you can affect ST as well. For example, you place you hand on your chest.  It is not able to distinguish between the chest and the hand. In this scenario, ST will have a harder time detecting the hand.

    With the next generation of the device capabilities, you will see significant improvement's in this area.

    http://blogs.msdn.com/b/kinectforwindows/archive/2013/05/23/the-new-generation-kinect-for-windows-sensor-is-coming-next-year.aspx


    Carmine Si - MSFT

    Wednesday, July 10, 2013 7:27 PM
  • Yes, i am using kinect for windows device and also enabled appchoseskeletons=true.

    From your answer, i understood that kinect will display the joints which are not clearly visible as 'yellow'(inferred). Suppose tracked person is sitting and another person who is standing behind the tracked person very closely to the sitting person. At that time both sitting persons head and also standing persons head are visible to the kinect.

    But what kinect does is, as soon as the standing person came behind the tracked person , the skeleton jumps from the sitting person to standing person.Since head joint is visible for both persons, the kinect will not consider it as inferred.So your above approach will not be suitable.

    But my question is, why it is treating 2 persons who is in very close range(i.e both persons are within 1 feet distance) as same player.

    I think from your answer i came to know that existing version of kinect for windows sdk 1.7 has got this skeleton jumping bug and it will be solved in next realease.

    Thanks for clearing my long term doubt...

    Thursday, July 11, 2013 7:21 AM
  • Skeletal Tracking(ST) is optimized for users standing (default) or sitting(near mode) and facing the camera. If you are not in near mode, the ST is optimize to find standing forms in depth and creating skeletons from that. If you have 2 people standing a shorter person and taller person, then you may find a different result.


    Carmine Si - MSFT

    Thursday, July 11, 2013 6:24 PM
  • Thanks.

    I think you dint complete your answer. You say ". If you have 2 people standing a shorter person and taller person, then you may find a different result. "

    Answer:- it will give draw 2 skeletons.

    Again you are not answering to my question directly.

    Is this a bug in skeleton tracking, if so do you have any alternate solution.

    Wednesday, July 17, 2013 8:17 AM