English 中文(简体)
通过3点对齐点云?
原标题:
  • 时间:2008-12-11 06:18:24
  •  标签:

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

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

我认为矩阵可能包括倾斜和剪切。是否有一种方法可以找到仅具有7个自由度(3个平移,3个旋转,1个比例)的矩阵?

最佳回答

将基向量{1,0,0},{0,1,0}和{0,0,1}转换为{x1,y1,z1},{x2,y2,z2},{x3,y3,z3}的转换矩阵T1简单地为:

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

同样地,将这三个单位向量变换为第二组点的变换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。

你所说的七个参数转换称为三维整体转换,有时也称为三维相似度转换,因为两个云相似。如果两个形状是相同的,Adam Rosenfields的解决方案是好的。当存在小差异并且希望获得最佳拟合时,最常用的解决方案是Helmert转换,它使用最小二乘方法来最小化残差。关于此的维基百科和谷歌资料似乎并不理想。我参考的是Ghilani和Wolf的《调整计算》,第345页。这也是一本关于矩阵数学应用于空间问题的好书,是图书馆的一个很好的补充。

亚当 S 的这个变换的 9 个参数版本被称为仿射变换

这是一个用R计算二维仿射变换参数最小二乘估计的示例





相关问题
热门标签