计算两组向量之间的旋转



我有2组N个元素的3D向量。我正试图计算旋转矩阵,它最好地将第一组与第二组对齐。

我相信我可以使用java库JAMA来完成奇异值分解或特征值分解。

1) SVD或EVD是正确的算法吗?

2) JAMA的SVD/EVD需要矩阵。如何用这两组向量来填充矩阵?

这是我相信你所描述的二维版本3-D应该很简单,除了m矩阵是3x3shftx/y/z条目)。

点(x, y)到点(u)的仿射变换,V)可以写成:

u    m11 m12    x      shftx
  =          *      +   
v    m21 m22    y      shfty
You can rewrite this as:
x y 0 0 1 0     m11      u
             *       =  
0 0 x y 0 1     m12      v
                m21
                m22
                shftx
                shfty

这样做的原因是你使矩阵在左边(与x/y/0/1值)的行数与数据中的点数一样多集。如果你称这个矩阵为X,右边U上的列向量,那么问题变成了求方程X * m = U的最小二乘解。你可以通过(新QRDecomposition(X)).solve(U))来解它。我应该用至少有一个版本的QRDecomposition在代码中有一个bug假设解矩阵的维数是错误的,但是我通过修改solve()方法中的一行

相关内容

  • 没有找到相关文章

最新更新