none
Shifting tracked skeleton to the center of the display frame even if its at the side. RRS feed

  • Question

  • Hi all im currently doing my final year project on detecting patients off and on bed and i have decided to use skeletal tracking.

    Currently im trying to write a code whereby i can shift the tracked skeletal to the center of the display ( even if the skeletal body is tracked and is at the sides of the display)

    As there maybe space constrains around the patient the kinect sensor may not be hanged directly at the top of the patient. So im thinking if the kinect is shifted further away from the patient, can i shift the tracked skeletal body to the center of the display?

    Can any experienced person share some knowledge with me

    Thanks!

    Thursday, October 24, 2013 6:12 PM

Answers

  • If you want a specific Skeleton join (ie:HipCenter) to be fixed a the center of the screen, you need to shift your referential before display.

    By substracting the HipCenter.Position to each joint position, you will get joints position relative to this new referencial origin (HipCenter)

    SkeletonPoint shiftedJoint= new SkeletonPoint()
      {
        X = joint.Position.X - hipCenter.X, 
        Y = joint.Position.Y - hipCenter.Y, 
        Z = joint.Position.Z - hipCenter.Z
      }
    HipCenter will become the new 0,0 (so center of the screen), Spine will be something like (0, 30, Z)...


    Vincent Guigui Innovative Technologies Expert at OCTO Technology MVP Kinect

    Friday, October 25, 2013 9:32 AM

All replies

  • As long as the person is in the field of view/coordinate space, and the sensor is oriented correctly, you should be able to do Skeleton Tracking. Skeleton Tracking cannot track reliably if the sensor is not mounted on a flat horizontal surface.
    http://msdn.microsoft.com/en-us/library/hh973078.aspx

    If you are able to position the sensor in the room with the correct orientation, how you treat the tracked skeleton would be specific to your application. You can apply some type of transformation if you want, but the data you are concerned about would be local to a skeleton point like "Hip Center".



    Carmine Sirignano - MSFT

    Thursday, October 24, 2013 6:56 PM
  • Thanks for the prompt reply Carmine!

    Yes i have removed all other joints leaving just the spine.

    As my displayed image of the tracked skeleton is always at the bottom right, im thinking if i could shift it to the center permanently no matter where the tracked skeletal body will be, it would be easier for the user to see.

    Do you think that is possible

    Thursday, October 24, 2013 8:25 PM
  • If you want a specific Skeleton join (ie:HipCenter) to be fixed a the center of the screen, you need to shift your referential before display.

    By substracting the HipCenter.Position to each joint position, you will get joints position relative to this new referencial origin (HipCenter)

    SkeletonPoint shiftedJoint= new SkeletonPoint()
      {
        X = joint.Position.X - hipCenter.X, 
        Y = joint.Position.Y - hipCenter.Y, 
        Z = joint.Position.Z - hipCenter.Z
      }
    HipCenter will become the new 0,0 (so center of the screen), Spine will be something like (0, 30, Z)...


    Vincent Guigui Innovative Technologies Expert at OCTO Technology MVP Kinect

    Friday, October 25, 2013 9:32 AM
  • As Carmine explained the Kinect skeleton is concerned with the Hip center ,it is from there it all starts to calculate the angle keeping it as the root as explained at Kinect site. Well you can try to include the scaling values to bring the skeleton to the center.

    Listen , Smile , Agree, And Then Do whatever the Fuck you were gonna do AnyWay

    Saturday, March 22, 2014 9:34 AM