Matrix 从三维数据计算非仿射变换矩阵

Matrix 从三维数据计算非仿射变换矩阵,matrix,geometry,coordinate-systems,homography,Matrix,Geometry,Coordinate Systems,Homography,我在两个不同的坐标空间(A和B)中有一组3D成对点 给定的点不是共面的,我如何计算一个非仿射变换矩阵,它能够将一个点从a变换为B 我已经设法在2D中实现了这一点(使用单应),但无法解决如何在3D中实现这一点。如有可能,请提供一个快速代码示例。:) 中描述的方法将推广到三维:如果您知道两个坐标系中五个点的坐标,那么您可以使用它们来计算该坐标系的4×4投影变换矩阵,除了没有几何相关性的比例因子外,该矩阵是唯一的 我已经包括了为2D-in编写的所需代码的变体,还有随附的JavaScript示例。其中任

我在两个不同的坐标空间(A和B)中有一组3D成对点

给定的点不是共面的,我如何计算一个非仿射变换矩阵,它能够将一个点从a变换为B

我已经设法在2D中实现了这一点(使用单应),但无法解决如何在3D中实现这一点。如有可能,请提供一个快速代码示例。:)

中描述的方法将推广到三维:如果您知道两个坐标系中五个点的坐标,那么您可以使用它们来计算该坐标系的4×4投影变换矩阵,除了没有几何相关性的比例因子外,该矩阵是唯一的

我已经包括了为2D-in编写的所需代码的变体,还有随附的JavaScript示例。其中任何一个都可以适应3D情况,但如果您还想更改编程语言,那么最好直接实现公式,记住伴随可以作为多个位置矩阵求逆的替代方法

以下是有关三维概括的一些详细信息:

  • 使用4×4线性方程组,左侧四个点和右侧第五个点的齐次坐标
  • 使用四个解决方案变量缩放这四列,以获得转换矩阵
  • (和以前一样)
  • (和以前一样)
  • (和以前一样)
  • (和以前一样)
  • 将齐次坐标向量的前三个坐标除以第四个坐标,得到非齐次坐标

  • 谢谢——我知道如何在2D中实现,但我不确定如何推广到3D,特别是在步骤1、2和7中。谢谢更新!在您的帖子中,您提到您使用adjugate矩阵来求解。你能再解释一下吗?在步骤1中,你必须解一个线性方程,这可以通过将RHS向量乘以LHS矩阵的逆来实现。在步骤4中,您需要一个反向操作。在这两种情况下,您可以使用伴随而不是逆,最终结果将只相差一个标量倍数,这与几何结果无关。