前两天算是仔细研究了Kinect里PoseDetectionDemo里面的核心脚本的匹配原理。最近在做本科毕业设计,核心设计也是姿态匹配度检测。动作为太极拳中的云手,因为Kinect官方Demo中的姿势比对在正面无覆盖的姿势对比效果较好,但是在转身以及深度不同的动作检测上有较大偏差。主要体现如下: (图中左为PoseModel,右为AvatarModel)

可以看见根据骨骼生成的模型,在腿膝,手臂处都很有问题。下蹲动作表现的不明显,且因为身体转向甚至发生了腿膝关节的转向。在与标准动作比对时,因为在水平面上的转向将会导致更大的用于比对的向量之间的偏差。另外,在图中右手臂有一定深度时,手臂肘关节发生了折转,也是在前后(z轴)方向上的偏差。
现在拟用骨骼数据在xOy平面上的投影和关节点的距离来作为约束或者匹配条件,应该可以解决部分问题。
Vector3 vec3 = new Vector3(1, 2, 3);
Vector2 vec2 = vec3;
Debug.Log(vec2);
尝试了一下直接将Vector3赋值给Vector2,日志中打印的结果是(1,2)。直接将末尾z轴信息省略,是我们所需要的结果。所以对原PoseDetectionScript脚本稍作改进即可。
针对Kinect官方Demo中姿态匹配度检测存在的问题,尤其是在转身及深度不同动作检测的偏差,本文提出使用骨骼数据在xOy平面上的投影和关节点距离作为约束或匹配条件的解决方案。通过改进原PoseDetectionScript脚本,直接忽略z轴信息,以提高动作比对准确性。
1971

被折叠的 条评论
为什么被折叠?



