2013-10-06 52 views
0

我在两个不同的坐标空间(A和B)中有一个3D配对点阵列。从3D数据计算非仿射变换矩阵

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

我已经设法在二维(使用单应性)做到这一点,但不能解决如何使它在3D中工作。如果可能,快速代码示例将非常感谢。 :)

回答

2

this post中描述的方法将概括为三个维度:如果知道两个坐标系中的五个点的坐标,则可以使用它们来计算4×4投影变换矩阵,这将是除了没有几何相关性的比例因子之外是唯一的。

我已经包括在variousposts用于2D所需的代码的变型,sage写的,并且还存在与the description沿提到的JavaScript示例。其中的任何一个都可以适应3D情况,但是如果您还想更改编程语言,那么您可能会更好地直接实现公式,请记住,伴随矩阵可以用作几个矩阵的逆矩阵的替代位置。

下面是关于泛化一些细节3D:

  1. 使用线性方程组的4×4系统,具有的四个点的左侧和上右侧的第五点的齐次坐标。
  2. 使用四个解决方案变量来缩放这四列以获得转换矩阵。
  3. (如前)
  4. (如前)
  5. (如前)
  6. (如前)
  7. 鸿沟均质的前三个坐标由第四坐标向量坐标,以获得dehomogenized坐标。
+0

谢谢 - 我知道如何在2D中做到这一点,但我不确定如何推广到3D,特别是在步骤1,2和7中。 – John

+0

感谢您的更新!在你的文章中你提到你使用了辅助矩阵来解决。你能解释一下吗? – John

+0

在步骤1中,您必须求解一个线性方程,该方程可以通过将RHS向量乘以LHS矩阵的逆矩阵来实现。在第4步中,您需要进行反向操作。在这两种情况下,您都可以使用伴随而不是反向,最终结果只会因标量倍数而有所不同,这是没有几何结果的。 – MvG