locked
Offset between Depth and Skeleton in Skeleton Space RRS feed

  • Question

  • Hallo

    I convert the Depthdata with "MapDepthToSkeletonPoint" to Skeleton Points and show it in the SkeletonArea.

    Now I have an Offset between the Skeleton Joints and the depth data. How can I correct these Offset?

    Red: Skeleton Data, Blue Detph Data

    The offset is in the XZ-Plane.

    Thanks

    Thursday, June 14, 2012 1:22 PM

Answers

  • When calling KinectSensor.MapDepthToSkeletonPoint, the value expected as the "depthPixelValue" parameter should be the value as it appears in the DepthFrame data (13 bits of depth and 3 bits of player index). In the example cited above, instead of passing mapped.Depth, you should pass:

    (mapped.Depth << DepthImageFrame.PlayerIndexBitmaskWidth) | mapped.PlayerIndex

    John
    K4W Dev

    Wednesday, July 11, 2012 4:35 AM

All replies

  • Here the result form mapping a Joint to Depth and remapping it to Skeleton Point


                    Vector3 temp = GlobalVar.KinectData.Data[FrameNumber].Joints[7];
                    label3.Text = String.Format("X:{0:F2},Y:{1:F2},Z:{2:F2}",temp.X, temp.Y, temp.Z );
                    SkeletonPoint test = new SkeletonPoint();
                    test.X = temp.X; test.Y = temp.Y; test.Z = temp.Z;
                    DepthImagePoint mapped = KinectSensor.MapSkeletonPointToDepth(test, DepthImageFormat.Resolution320x240Fps30);
                    label4.Text = String.Format("X:{0:F2},Y:{1:F2},Z:{2:F2}", mapped.X, mapped.Y, (short)mapped.Depth);
                    SkeletonPoint remapped = KinectSensor.MapDepthToSkeletonPoint(DepthImageFormat.Resolution320x240Fps30, mapped.X, mapped.Y, (short)mapped.Depth);
                    label5.Text = String.Format("X:{0:F2},Y:{1:F2},Z:{2:F2}", remapped.X, remapped.Y, remapped.Z);

    Result:

    It's the same Point, but the values are really different

    Thursday, June 14, 2012 3:24 PM
  • Hi bastelwastel87,

    I am also doing maping from depth to skeleton coordinate and this error seems to be a big concern. Have you figure out how does the error come from?

    Thanks

    Friday, July 6, 2012 3:07 PM
  • I have not find the resason for this error, yet. Do anybody have an solution?
    Sunday, July 8, 2012 8:58 AM
  • When calling KinectSensor.MapDepthToSkeletonPoint, the value expected as the "depthPixelValue" parameter should be the value as it appears in the DepthFrame data (13 bits of depth and 3 bits of player index). In the example cited above, instead of passing mapped.Depth, you should pass:

    (mapped.Depth << DepthImageFrame.PlayerIndexBitmaskWidth) | mapped.PlayerIndex

    John
    K4W Dev

    Wednesday, July 11, 2012 4:35 AM