从3D数据计算非仿射变换矩阵

时间:2013-10-06 18:35:11

标签: matrix geometry coordinate-systems homography

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

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

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

1 个答案:

答案 0 :(得分:2)

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

我在various posts中添加了为sage编写的2D所需代码的变体,并且还提供了与the description一起提到的JavaScript示例。其中任何一个都可以适应3D情况,但是如果你也想改变编程语言,那么你可能最好直接实现公式,记住伴随可以作为几个矩阵的逆矩阵的替代。位置。

以下是有关3D概括的一些细节:

  1. 使用4×4线性方程组,左边四个点的同质坐标和右边五个点。
  2. 使用四个解决方案变量来缩放这四列,以获得转换矩阵。
  3. (和以前一样)
  4. (和以前一样)
  5. (和以前一样)
  6. (和以前一样)
  7. 将同质坐标向量的前三个坐标除以第四个坐标,以获得非均匀坐标。