Answered by:
Offset between Depth and Skeleton in Skeleton Space

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- Marked as answer by Chris Wojahn, Security IR Tuesday, July 24, 2012 9:34 PM
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- Marked as answer by Chris Wojahn, Security IR Tuesday, July 24, 2012 9:34 PM
Wednesday, July 11, 2012 4:35 AM