如何从svd中找到旋转矩阵?

问题描述 投票:-1回答:1

我曾使用svd来找到两组点之间的旋转矩阵,有些理论说R = Transpose(U)* V。但是我不明白那个数学理论。例如U和V代表什么,以及当U和V倍数时如何获得旋转矩阵。

matrix computer-vision linear-algebra svd
1个回答
0
投票

由于您的问题是理论性的,不涉及任何程序或特定问题,因此最好在MathOverflow中写下您的问题。

尽管如此,给您一个大致的想法(您绝对应该用扎实的事实来加强这一想法):奇异值分解(svd)背后的线性代数本质上描述了(在最简单的情况下)向量乘以矩阵后所发生的情况。

在小规模上,如果将向量(v)乘以矩阵(R),则会获得第二个向量(u)。除非矩阵“ R”是一元的,否则获得的新矢量的方向和大小将与第一个不同。换句话说,向量'v'上矩阵'R'的乘积将产生向量'v'的RotationStretching(或压缩),将转换为向量'u' 。

如果使向量'u'为一元,并乘以一个保持其原始大小的新变量(σ),则基本上就是在做:R·v = u·σ

较大时,当v和u不再是向量而是大矩阵时,公式为:R·V = U·∑

使'u'成为单一的有用之所以的原因是,单一矩阵具有很酷的性质:换位等于它们的逆!

因此,您可以重新排列公式,使其看起来像为:R = U·∑·V(转置)

因此,您可以使用此公式获得“旋转矩阵”,其中U和V(t)是保存矢量方向的正交矩阵,而∑保存所述矢量方向的大小(或奇异值)。

有关更详细的解释,我建议您听本课:Lecture: The Singular Value Decomposition (SVD)

© www.soinside.com 2019 - 2024. All rights reserved.