欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。
背景
在icp算法中,一般一次迭代分两步,先找到对应的匹配点,然后计算一个RT将匹配点对齐。
第二步是比较难理解,推导一下实现原理。
问题描述
现在有配对好的两个点集
P = p 1 , ⋯ , p n , P ′ = p 1 ′ , ⋯ , p n ′ P={p_1, \cdots, p_n}, P'={p_1', \cdots, p_n'} P=p1,⋯,pn,P′=p1′,⋯,pn′
想要找到一个R, t 使得
∀ i , p i = R p i ′ + t \forall i, p_i = Rp_i'+t ∀i,pi=Rpi′+t
能量方程建立
可以通过优化的思路来求解建立能量方程
为了后续求解方程方便,带上了1/2
E = m i n R , t 1 2 ∑ i = 1 n ∥ p i − ( R p i ′ + t ) ∥ 2 E= \displaystyle \underset{R,t}{min}\frac 1 2\sum_{i=1}^n \|p_i-(Rp_i'+t)\|^2 E=R,tmin21i=1∑n∥pi−(Rpi′+t)∥2
变量定义和基本定理
为了后续推导方便,先定义一些常量符号和基本定理
质心定义
p = 1 n ∑ i = 1 n p i , p ′ = 1 n ∑ i = 1 n p i ′ p=\displaystyle \frac 1 n \sum_{i=1}^np_i, p'=\frac 1 n \sum_{i=1}^np_i' p=n1i=1∑npi,p′=n1i=1∑npi′
去质心替换
q i = p i − p , q i ′ = p i ′ − p ′ q_i = p_i-p, q_i'=p_i'-p' qi=pi−p,qi′=pi′−p′
Schwarz 不等式
对于向量A, B, A与B的内积不大于A与B模长的乘积。
A ⋅ B ≤ ∥ A ∥ ⋅ ∥ B ∥ A\cdot B \le \|A\|\cdot \|B\| A⋅B≤∥A∥⋅∥B∥
正交矩阵性质
R R T = 1 RR^T=1 RRT=1
引理证明
后面会用到几个公式,这里先证明一下。
1
q T R q ′ = t r ( R q ′ q T ) q^TRq'=tr(Rq'q^T) qTRq′=tr(Rq′qT)
tr(A) 表示A的对角线元素的和
基本思路就是把等式左右两边展开,计算出最后结果即可
设 R = [ A 11 A 12 A 13 A 21 A 22 A 23 A 31 A 32 A 33 ] R=\begin{bmatrix} A_{11}&A_{12}&A_{13}\\ A_{21}&A_{22}&A_{23}\\ A_{31}&A_{32}&A_{33} \end{bmatrix} R= A11A21A31A12A22A32A13A23A33
q = [ q 1 q 2 q 3 ] , q ′ = [ q 1 ′ q 2 ′ q 3 ′ ] q=\begin{bmatrix} q_1\\ q_2 \\q_3 \end{bmatrix}, q'=\begin{bmatrix} q_1'\\ q_2' \\q_3' \end{bmatrix} q= q1q2q3 ,q′= q1′q2′q3′
证明:
等式左边
q T R q ′ = q T [ A 11 q 1 ′ + A 12 q 2 ′ + A 13 q 3 ′ A 21 q 1 ′ + A 22 q 2 ′ + A 23 q 3 ′ A 31 q 1 ′ + A 32 q 2 ′ + A 33 q 3 ′ ] q^TRq' = q^T\begin{bmatrix} A_{11}q_1'+A_{12}q_2'+A_{13}q_3'\\ A_{21}q_1'+A_{22}q_2'+A_{23}q_3'\\ A_{31}q_1'+A_{32}q_2'+A_{33}q_3' \end{bmatrix} qTRq′=qT A11