scipy.spatial.transform.RigidTransform.
from_matrix#
- classmethod RigidTransform.from_matrix(cls, matrix)#
从 4x4 变换矩阵初始化。
- 参数:
- matrixarray_like, 形状 (4, 4) 或 (N, 4, 4)
单个变换矩阵或变换矩阵堆栈。
- 返回值:
- transform
RigidTransform
实例
- transform
注释
4x4 刚性变换矩阵的形式为
[R | t] [0 | 1]
其中
R
是 3x3 旋转矩阵,t
是 3x1 平移向量[tx, ty, tz]
。由于旋转矩阵必须是真正交的,因此在初始化之前,使用奇异值分解对旋转分量进行正交化。示例
>>> from scipy.spatial.transform import RigidTransform as Tf >>> import numpy as np
从单个矩阵创建变换
>>> m = np.array([[0, 1, 0, 2], ... [0, 0, 1, 3], ... [1, 0, 0, 4], ... [0, 0, 0, 1]]) >>> tf = Tf.from_matrix(m) >>> tf.as_matrix() array([[0., 1., 0., 2.], [0., 0., 1., 3.], [1., 0., 0., 4.], [0., 0., 0., 1.]]) >>> tf.single True
从矩阵堆栈创建变换
>>> m = np.array([np.eye(4), np.eye(4)]) >>> tf = Tf.from_matrix(m) >>> tf.as_matrix() array([[[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]], [[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]]]) >>> tf.single False >>> len(tf) 2
具有非真正交旋转分量的矩阵在使用奇异值分解正交化后才进行初始化
>>> tf = Tf.from_matrix(np.diag([2, 2, 2, 1])) >>> tf.as_matrix() array([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]])