首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >累积的同质转换:轮转起作用,但翻译不起作用?

累积的同质转换:轮转起作用,但翻译不起作用?
EN

Stack Overflow用户
提问于 2020-09-20 05:38:27
回答 1查看 205关注 0票数 2

我有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),越多,翻译的差异就越大。

我要说的是,虽然乘法积累了误差,但它们非常小,因为登记是由比较方案手工完成和改进的。事实上,将任何一种转换应用成对都会导致几乎完美的重叠,但是积累它们会导致翻译上的巨大偏差。旋转是如此之好,以致于循环闭包实际上导致了恒等矩阵。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-20 09:37:43

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

如果有一个具有旋转R和平移v的变换T,以及另一个具有旋转q和平移v的S,那么将T然后S应用到点x上的效果是得到y的

代码语言:javascript
复制
y = Q*(R*x+v) + u = Q*R + Q*v + u 

即组合变换有旋转。

代码语言:javascript
复制
P = Q*R

和翻译

代码语言:javascript
复制
w = Q*v + u

由此可以看出,与T相反的变换有旋转。

代码语言:javascript
复制
inv(R)

和翻译

代码语言:javascript
复制
- inv(R)*v

我们可以用4x4矩阵来表示这类变换,这是很常见的,其方式是将变换的合成和应用简化为矩阵乘法。不过,请注意,这是以效率为代价的。

S和T由4x4矩阵M和N表示。

代码语言:javascript
复制
M = ( Q u)
  = ( 0 1)
N = ( R v)
    ( 0 1)

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

代码语言:javascript
复制
   L = M*N

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

代码语言:javascript
复制
M*(x)
  (1)

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63975858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档