如何测量 Kinect 骨架轴尺寸?

Posted

技术标签:

【中文标题】如何测量 Kinect 骨架轴尺寸?【英文标题】:how to measure Kinect Skeleton Axis dimension? 【发布时间】:2016-11-04 02:55:58 【问题描述】:

我正在开发一个 kinect 手势应用程序。所以我从互联网上得到了一个举手手势的代码。

handupgesture()


 bool up = false;
 float refDistance = 0.2F;

 SkeletonPoint refPos = localSkeletonHistory[0].Joints[JointType.ShoulderCenter].Position;
 SkeletonPoint startPos = localSkeletonHistory[0].Joints[JointType.HandRight].Position;

 for (int i = 20; i < localSkeletonHistory.Count; i++)
 
           if (!(Math.Abs(localSkeletonHistory[i].Joints[JointType.ShoulderCenter].Position.Y - refPos.Y) < 0.05F &&
                   Math.Abs(localSkeletonHistory[i].Joints[JointType.HandRight].Position.X - startPos.X) < 0.05F &&
                   Math.Abs(localSkeletonHistory[i].Joints[JointType.HandRight].Position.Z - startPos.Z) < 0.05F ))
            
                break;
            
            if (localSkeletonHistory[i].Joints[JointType.HandRight].Position.Y >= (startPos.Y + refDistance))
            
                up = true;
                SkeletonHistory.Clear();
                break;
            
        
        return up;
 

我的疑惑是:

什么是0.05F?是米吗?厘米? Z 轴距离是指关节到 kinect 距离的距离。是吗?

此代码未检测到 hand up 。有什么错误或建议吗?

【问题讨论】:

【参考方案1】:

C# 中的0.05F 表示浮点数。

float 关键字表示存储 32 位的简单类型 浮点值。下表显示了精度和 float 类型的大概范围。

默认情况下,赋值右侧的实数字面量 运算符被视为双精度。因此,初始化一个浮点数 变量,请使用后缀 f 或 F,如下例所示:

float x = 3.5F; or in your case 0.05F

来源:https://msdn.microsoft.com/en-us/library/b1e65aza.aspx

至于第二个问题,z轴代表深度。 每一帧,捕获的深度图像都由 Kinect 运行时处理成骨架数据。骨骼数据包含深度传感器中可见的最多两个人的人体骨骼的 3D 位置数据。骨架的位置和每个骨架关节(如果启用了主动跟踪)存储为 (x, y, z) 坐标。与深度空间不同,骨架空间坐标以米为单位。

x、y 和 z 轴是深度传感器的身体轴,如下所示:

这是一个右手坐标系,它将 Kinect 放置在原点,正 z 轴沿 Kinect 指向的方向延伸。正y轴向上延伸,正x轴向左延伸。

来源:https://msdn.microsoft.com/en-us/library/hh973078.aspx

至于您的最后一个问题 - 尝试降低 0.5F 容差。

此外,我想向您指出 Windows Kinect 站点中的一些示例: https://kinectforwindows.codeplex.com/

【讨论】:

以上是关于如何测量 Kinect 骨架轴尺寸?的主要内容,如果未能解决你的问题,请参考以下文章

Kinect2入门+opencv画骨架+骨架数据

Processing中如何调整Kinect v2深度画面尺寸

在语音识别中使用 Kinect Skeleton ID

Kinect 用户检测

Kinect 作为运动传感器

从 Kinect 获取 BVH 文件的 MOTION 数据