1

我在两个 3D 系统中有一系列点。有了它们,我使用 np.linalg.lstsq 来计算两者之间的仿射变换矩阵(4x4)。但是,由于我的项目,我必须“禁用”转换中的剪切。有没有办法将矩阵分解为基本变换?我已经找到了如何进行平移和缩放,但我不知道如何分离旋转和剪切。如果没有,有没有办法从不包括剪切的点计算转换矩阵?顺便说一句,我只能使用 numpy 或 tensorflow 来解决这个问题。

4

1 回答 1

1

我不确定我明白你在问什么。

无论如何,如果您有两组 3D 点 P 和 Q,您可以使用 Kabsch 算法找出旋转矩阵 R 和平移向量 T,从而使 (RP+T) 和 Q 之间的平方距离之和最小化。您当然可以将 R 和 T 组合成一个 4x4 矩阵(仅旋转和平移。没有剪切或缩放)。

于 2018-08-16T12:22:28.293 回答