我想估计玩家在 Kinect 传感器拍摄的场景中的深度位置,以便在需要评估手与“玩家身体”之间距离的算法中使用此信息。在这种情况下,“玩家身体”的概念可以翻译成一个代表玩家深度位置的值(这就是我正在寻找的)。
显然,因为一个人在空间中占据了一个体积,我们知道不可能定义玩家在场景中的精确位置。
我想知道的是:使用骨架数据计算人的大致深度位置的最佳做法是什么?
我尝试使用以下代码:
Skeleton playerSkeleton = (from s in skeletonData where s.TrackingState == SkeletonTrackingState.Tracked select s).FirstOrDefault();
...
if (playerSkeleton != null)
{
Joint head = playerSkeleton.Joints[JointType.Head];
float averagePlayerPosition = head.Z;
}
在上述方式中,我使用头部深度来定义玩家的位置。
这是一个不错的选择,还是有更好的选择(例如骨架几个点的平均值)?如果我的选择是可改进的,是否有一些参考证明更好的选择是合理的?