如何分解仿射矩阵?

时间:2018-08-16 12:03:34

标签: python-3.x numpy transformation affinetransform matrix-decomposition

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

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解你的要求。

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