本周课程重点:
1.
理解
Sim3
的原理(重要),能看懂推导过程。
2.
掌握
Sim3
代码
(重要)。
全网最详细的SIM3 算法原理详解
什么是SIM3变换?
Sim3 (
Similarity Transformation
)
的提出就是为了解决两个坐标系之间的相似变换问题,只要我们能 得到3
对匹配好的不共线的三维点在两个坐标系下的坐标,我们就能解出
Sim3
相似变换。这个也是
Sim3 中数字3
的来源。计算
Sim3
实际就是计算这三个参数:旋转
R、平移t、尺度因子s
。
为什么三对不共线点就可以求解?
我们来感性的理解一下,我们有三对匹配的不共线三维点可以构成两个三角形。我们根据三角形各自的法向量可以得到他们之间的旋转,通过相似三角形面积能够得到尺度,用前面得到的旋转和尺度可以把两个三角形平行放置,通过计算距离可以得到平移;
以上是直观感性的理解,实际在计算的时候需要有严格的数学推导。我们这里使用的方法是来自 Berthold K. P. Horn在
1987
年发表的论文
"
Closed-form solution of absolute orientation using unit quaternions
"
。该文提出了用三维匹配点构建优化方程,不需要迭代,直接用闭式解求出了两个坐标系 之间的旋转、平移、尺度。该方法的优点非常明显: