累积同质变换:轮换有效,但翻译无效?



我有3个点云(云0、云1和云2(,使用地面激光扫描仪在3个不同位置获得。这些云在它们之间重叠,这意味着存在一个刚性的三维实体变换T,它将一个云正确地配准在另一个云上。我有两个这样的转换,T10,它将云1移动到云0;以及T20,其将云2移动到云0(选择云0作为全局参考(。问题是,如何找到云2和云1重叠的变换?我已经找到了旋转,但找不到平移向量。有可能吗?

我通过将变换T20乘以T10的倒数得到的旋转,因为T10^(-1(=T01,因此,T20*T01=T21。当我将这个变换应用于云2时,它会正确地将云2旋转到云1(两者都在同一方向(,但它们之间存在偏移,我不明白为什么。

这些变换只是齐次矩阵T(4x4(,它只是旋转矩阵R(3x3(和平移向量T(3x1(的结点,对吧?可以组合旋转。事实上,我发现了从云2到云1的旋转表明了这一点。但为什么这种转变会出现在翻译中呢?

事实上,我有几个云,要注册一个远离原点的云,我需要通过乘法积累几个变换(例如:T50=T54*T43*T32*T21*T10(,我乘得越多,平移的差异就越大。

我想说的是,尽管乘法累积了误差,但它们非常小,因为注册是手动完成的,并由ICP进行了改进。事实上,成对应用任何变换都会产生几乎完美的重叠,但累积它们会导致翻译中的巨大偏差。旋转是如此的好,以至于闭环实际上产生了单位矩阵。

您是否忽略了旋转对平移的影响?

如果你有一个旋转R和平移v的变换T,另一个旋转Q和平移v的变换S,那么将T和S应用于点x的效果是得到y,其中

y = Q*(R*x+v) + u = Q*R + Q*v + u 

即组合变换具有旋转

P = Q*R

和翻译

w = Q*v + u

由此可知,T的逆变换具有旋转

inv(R)

和翻译

- inv(R)*v

我们可以,而且通常用4x4矩阵来表示这样的变换,这样构成和应用变换就可以简化为矩阵乘法。不过,请注意,这在效率上是有代价的。

上面的S和T将由4x4矩阵M和N 表示

M = ( Q u)
= ( 0 1)
N = ( R v)
( 0 1)

则组合变换T然后S的代表L是

L = M*N

为了将S应用于点x,我们计算

M*(x)
(1)

并且结果的前三个分量是变换点的分量。

最新更新