假设我有 3 个点云:第一个点云有 3 个点 {x1,y1,z1}、{x2,y2,z2}、{x3,y3,z3},第二个点云具有与 {xx1, yy1, zz1}、{xx2,yy2} 相同的点, zz2}, {xx3,yy3,zz3}...我假设将第二个点云与第一个点云对齐,我必须将第二个点云乘以 T[3x3matrix]。

1)那么我如何找到这个变换矩阵(T)?我尝试手工解方程,但未能解出它们。有没有解决方案,因为我很确定我不是第一个遇到这个问题的人。

2)我假设矩阵可能包括倾斜和剪切。有没有办法找到只有 7 个自由度的矩阵(3 个平移,3 个旋转,1 个尺度)?

有帮助吗?

解决方案

将单位向量 {1, 0, 0}、{0, 1, 0} 和 {0, 0, 1} 转换为 {x1, y1, z1}、{x2, y2, z2} 的变换矩阵 T1, {x3, y3, z3} 很简单

     | x1 x2 x3 |
T1 = | y1 y2 y3 |
     | z1 z2 z3 |

同样,将这 3 个单位向量转换为第二组点的变换 T2 为

     | xx1 xx2 xx3 |
T2 = | yy1 yy1 yy3 |
     | zz1 zz2 zz3 |

因此,取前三个点到后三个点的矩阵由 T2 * T1 给出-1. 。如果 T1 是非奇异的,则该变换是唯一确定的,因此它没有自由度。如果 T1 是奇异矩阵,则可能没有解,或者可能有无穷多个解。

当你说你想要 7 个自由度时,这在某种程度上是对术语的误用。一般情况下,该矩阵由 3 个旋转自由度、3 个缩放自由度和 3 个剪切自由度组成,总共 9 个。您可以通过执行以下操作来找出这些参数 QR 分解. 。Q 矩阵提供旋转参数,R 矩阵提供缩放参数(沿对角线)和剪切参数(对角线上方)。

其他提示

亚当罗森菲尔德的方法是正确的。但溶液作为T2 * INV(T1)是错误的。由于在矩阵乘法A * B = B * A:因此结果是INV(T1)* T2

7个参数转换你正在谈论被称为一个三维保角变换,或有时考虑到这两个云类似于一个三维相似变换。如果两个形状相同,亚当Rosenfields解决方案是不错的。哪里有小的差异,以及你希望得到一个最适合,最常用的解决方案是一个赫尔默特改造它采用了最小二乘法最小化残差。关于这方面的维基百科和谷歌的东西一目了然似乎并不大。我在此引用Ghilani与狼的调整计算,第345页。这也是一个很大的书上矩阵数学应用于空间问题和良好的除了该库。

编辑:亚当的这种转化的9参数版本被称为仿射变换

下面是计算所述参数的最小二乘估计的示例在R中一个2D仿射变换。

scroll top