累积同质变换:旋转有效,但平移无效?

Cumulative Homogenous Transformations: rotations work, but translations don't?

我有 3 个点云(云 0、云 1 和云 2),是使用地面激光扫描仪在 3 个不同位置获得的。这些云在它们之间重叠,这意味着存在刚性 3D 体变换 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)

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