Opengl 双摄像机头部姿态估计
我正在使用2个摄像头进行头部姿势估计项目。对于一个摄影机系统,系统工作并返回头部相对于每个摄影机坐标系的旋转矩阵和平移向量。我已经在OpenGL场景中渲染了对象,该场景被旋转和平移以表示头部运动。要显示计算的旋转矩阵和平移向量,我只需使用以下OpenGL命令Opengl 双摄像机头部姿态估计,opengl,opencv,computer-vision,camera-calibration,pose-estimation,Opengl,Opencv,Computer Vision,Camera Calibration,Pose Estimation,我正在使用2个摄像头进行头部姿势估计项目。对于一个摄影机系统,系统工作并返回头部相对于每个摄影机坐标系的旋转矩阵和平移向量。我已经在OpenGL场景中渲染了对象,该场景被旋转和平移以表示头部运动。要显示计算的旋转矩阵和平移向量,我只需使用以下OpenGL命令 glMatrixMode(GL_MODELVIEW); glLoadMatrixd(pose_matrix); 其中,姿势矩阵是由头部的旋转矩阵和平移向量构成的OpenGL ModelView矩阵 现在我试着为2个校准过的摄像机做这个。当
glMatrixMode(GL_MODELVIEW);
glLoadMatrixd(pose_matrix);
其中,姿势矩阵是由头部的旋转矩阵和平移向量构成的OpenGL ModelView矩阵
现在我试着为2个校准过的摄像机做这个。当第一个摄像头失去了人脸的轨迹,但第二个摄像头估计了头部姿势时,我会显示相对于第二个摄像头的旋转和平移,反之亦然。我想显示一个OpenGl对象,并在这两种情况下移动它。为此,我需要将姿势矩阵转换为公共坐标系
我知道两个摄像头相对的几何结构。我假设其中一个相机是世界坐标系,通过乘以第二个相机相对于第一个相机的姿势矩阵和校准矩阵,将第二个相机的头部姿势矩阵转移到第一个相机的帧。当我将这个相乘的矩阵加载到OpenGL ModelView矩阵中时,我得到了错误的结果。当第一个摄影机捕捉面时,对象向右移动,但对于第二个摄影机,对象平移和旋转,并且与第一个摄影机的情况不在同一位置
有什么问题吗?也许OpenGL的显示部分是错误的,或者?安全默认假设:OpenGL是正确的,您的代码是错误的 在没有看到您的代码的情况下,我可以建议您打印您的矩阵,并在Matlab或Octave中使用它们再次检查数学 一个常见的错误是忘记了默认情况下OpenGL将行向量与modelvie矩阵(实际上是所有矩阵)相乘。也就是说,它乘以v_row*M,矩阵以列主键顺序存储,而您可能在考虑将向量视为列向量的常见数学约定,然后将它们作为M*v_col乘以M存储的行主键
如果您更喜欢使用推荐的后一种约定,请查找扩展。安全默认假设:OpenGL是正确的,您的代码是错误的 在没有看到您的代码的情况下,我可以建议您打印您的矩阵,并在Matlab或Octave中使用它们再次检查数学 一个常见的错误是忘记了默认情况下OpenGL将行向量与modelvie矩阵(实际上是所有矩阵)相乘。也就是说,它乘以v_row*M,矩阵以列主键顺序存储,而您可能在考虑将向量视为列向量的常见数学约定,然后将它们作为M*v_col乘以M存储的行主键 如果您更喜欢使用推荐的后一种约定,请查阅扩展名