2 个相机姿势的相对球面角度

问题描述 投票:0回答:1

给定 2 个

4x4
矩阵代表 2 个相机姿势,我可以通过

获得相对相机变换
M = torch.inverse(p1).mm(p2)

如何进一步计算从一个相机到另一个相机的相对旋转和平移(phi、theta 和半径)?

python camera
1个回答
0
投票

假设这两个相机姿势都在同一参考系中,那么在您的情况下 MM 将是两个相机之间的变换矩阵。平移将是带有 XYZ 的变换矩阵的第一列。 4x4 矩阵中的其他值是旋转矩阵,它描述两个相机姿势之间的旋转。我有更多使用 NumPy 的经验,但以下是如何提取平移向量和旋转矩阵。

import numpy as np

# Compute the relative transformation matrix
M = np.linalg.inv(p1) @ p2

translation_vector = M[:3, 3]
rotation_matrix = M[:3, :3]

通常我将其保留为 3x3 旋转矩阵或将其转换为欧拉角(弧度),看起来像 [theta_x, theta_y, theta_z]。可以通过以下方式完成:

from scipy.spatial.transform import Rotation as R

euler_angles = R.from_matrix(rotation_matrix).as_euler('xyz', degrees=False)

我不太确定将翻译转换为(phi、theta 和 radius),因为我通常保持原样。我确实找到了这篇文章,您可以在其中了解如何找到这些内容。 更快的 numpy 笛卡尔到球坐标转换?

© www.soinside.com 2019 - 2024. All rights reserved.