通过3点相关来对齐点云?

时间:2008-12-11 06:18:25

标签: math 3d geometry points vertices

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

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

2)我认为矩阵可能包括倾斜和剪切。有没有办法找到只有7个自由度的矩阵(3个翻译,3个旋转,1个刻度)?

4 个答案:

答案 0 :(得分:4)

转换矩阵T1,它将单位矢量{1,0,0},{0,1,0}和{0,0,1}转换为{x1,y1,z1},{x2,y2, z2},{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 factorization来计算出这些参数。 Q矩阵为您提供旋转参数,R矩阵为您提供缩放参数(沿对角线)和剪切参数(在对角线上方)。

答案 1 :(得分:1)

Adam Rosenfield的方法是正确的。但是T2 * Inv(T1)的解决方案是错误的。因为在矩阵乘法中A * B!= B * A:因此结果是Inv(T1)* T2

答案 2 :(得分:1)

您正在谈论的seven parameter transformation被称为3d保形变换,或者有时称为三维相似变换,因为这两个云是相似的。如果两个形状相同,亚当罗森菲尔德解决方案是好的。如果存在小的差异,并且希望得到最佳拟合,则最常用的解决方案是Helmert transformation,它使用最小二乘法来最小化残差。这个维基百科和谷歌的东西一目了然看起来不太好。我对此的参考是Ghilani&沃尔夫adjustment computations,第345页。这也是一本关于矩阵数学的好书,适用于空间问题和图书馆的一个很好的补充。

编辑:此转换的Adam的9参数版本称为affine transformation

答案 3 :(得分:0)

这里是example计算R中2D仿射变换参数的最小二乘估计值。