将 OpenCV 姿态估计应用于 Blender 相机

Applying OpenCV Pose Estimation to Blender Camera

问题

我正在尝试使用 Blender 创建用于 OpenCV 姿态估计的合成图像(具体来说,OpenCV 的 findEssentialMatrecoverPose)。但是,我发现 OpenCV returns 的旋转矩阵 R 校正了沿相机 Y 轴和 Z 轴的旋转,但不校正其 X 轴。我怀疑这是因为 Blender 和 OpenCV 有不同的相机型号(见图表),但我不知道如何纠正这个问题。我如何将使用 OpenCV 的相机模型制作的旋转矩阵应用于 Blender 的相机模型?

其他详细信息

为了测试这一点,我使用恒等相机旋转从 (0, 0, 30) 渲染了一个场景,然后将相机沿 X、Y 和 Z 旋转 10 度。首先,这是恒等旋转矩阵(没有回转):

这是围绕 X 旋转 10 度:

这里是围绕 Y 旋转 10 度:

最后,绕 Z 旋转 10 度:

应用旋转矩阵 OpenCV returns(用于旋转图像和原始图像之间的估计变换)校正所有这些旋转,但围绕 X 除外,它看起来像这样:

似乎旋转矩阵不是围绕 X 正确旋转 -10 度,而是围绕 X 进一步旋转 10 度。

从 OpenCV 矩阵到 Blender 可以通过乘以另一个旋转矩阵来补偿坐标系的变化来完成。

mat = [[1, 0, 0], 
       [0, -1, 0], 
       [0, 0, -1]]

你说 Y 和 Z 分量已经得到补偿,所以也许你需要矩阵的负数?