我一直在开发一个多kinect人脸跟踪系统,我想知道如何更改人脸跟踪结果的参考框架?
我尝试使用XYZ约定从面旋转角度(由Kinect SDK提取)计算旋转矩阵,使用面部位置矢量制作平移向量,并组合此变换 具有从该kinect到全局帧的变换矩阵的矩阵。这是公式:
T = T_local_to_global*T_face
最后使用类似
的方法将组合T转换回旋转角度然而,结果却有些不对劲。相对于Z轴的旋转角度有时会翻转。我在某处犯了错误?感谢您的帮助,提前谢谢!
更新
我发现旋转矩阵的不同约定会产生不同的结果。 Kinect SDK给出的旋转角度的惯例是什么? 或者角度实际上不是欧拉角?
太困惑了。
答案 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.