从Kinect SDK更改人脸跟踪结果的参考框架

时间:2013-02-14 11:42:59

标签: c# kinect kinect-sdk

我一直在开发一个多kinect人脸跟踪系统,我想知道如何更改人脸跟踪结果的参考框架?

我尝试使用XYZ约定从面旋转角度(由Kinect SDK提取)计算旋转矩阵,使用面部位置矢量制作平移向量,并组合此变换 具有从该kinect到全局帧的变换矩阵的矩阵。这是公式:

   T = T_local_to_global*T_face 

最后使用类似

的方法将组合T转换回旋转角度

https://truesculpt.googlecode.com/hg-history/38000e9dfece971460473d5788c235fbbe82f31b/Doc/rotation_matrix_to_euler.pdf

然而,结果却有些不对劲。相对于Z轴的旋转角度有时会翻转。我在某处犯了错误?感谢您的帮助,提前谢谢!


更新

我发现旋转矩阵的不同约定会产生不同的结果。 Kinect SDK给出的旋转角度的惯例是什么? 或者角度实际上不是欧拉角?

太困惑了。

1 个答案:

答案 0 :(得分:0)

您可以将rotationXYZ的测试值传递到IFTModel::Get3DShape(),从而对Face Tracking API使用的约定进行反向工程。我相信它的角度顺序是首先绕Z旋转,然后是Y,然后旋转X.换句话说,R = R_x R_y R_z作为矩阵。

请注意,相比之下,您链接到的PDF使用约定R = R_z R_y R_x,这意味着首先围绕X旋转,然后是Y,然后是Z.