SVD法是将在两个不同坐标系下的测量的多个点的坐标值对构造成一个矩阵,对该矩阵进行奇异值分解得到姿态矩阵。
1P=12R2P+12T
首先,使用两组点构造出一个矩阵H
H=i=1∑m((2Pi−2Pˉ)⋅(1Pi−1Pˉ)T)
然后对H进行奇异值分解
U⋅Δ⋅VT=SVD(H)
然后计算∣V⋅UT∣的符号,如果大于0,则
12R=V⋅UT
如果小于0,把V的任意一列改变符号,仍然计算V⋅UT作为12R。
在计算出12R后,代入
1P=12R2P+12T
即可得到 12T。
该方法的代码实现可以参考笔者以前的博客
https://blog.csdn.net/iamqianrenzhan/article/details/103463932。