1

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

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

我已经设法在 2D 中做到这一点(使用单应性),但无法弄清楚如何让它在 3D 中工作。如果可能的话,将非常感谢一个快速的代码示例。:)

4

1 回答 1

3

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

我已经在各种 帖子中包含了 2D 所需代码的变体,为sage编写的,还有与描述一起提到的 JavaScript 示例。这些中的任何一个都可以适应 3D 情况,但是如果您还想更改编程语言,那么您最好直接实现公式,请记住,伴随可能在几个矩阵中用作矩阵逆的替代地点。

以下是关于泛化到 3D 的一些细节:

  1. 使用 4×4 线性方程组,左侧四个点的齐次坐标,右侧第五个点。
  2. 使用四个解变量来缩放这四列以获得变换矩阵。
  3. (和以前一样)
  4. (和以前一样)
  5. (和以前一样)
  6. (和以前一样)
  7. 将齐次坐标向量的前三个坐标除以第四个坐标,得到去齐次坐标。
于 2013-10-06T21:03:09.600 回答