假设我有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 factorization找出这些参数。 Q矩阵为您提供旋转参数,R矩阵为您提供缩放参数(沿对角线)和剪切参数(沿对角线)。

09-25 11:05