一 普通ICP问题
1.1 问题描述
存在两组互相匹配的点集:
P={P1,P2,...,Pn}Q={Q1,Q2,...,Qn}
P = \{P_1,P_2,...,P_n\} \newline
Q = \{Q_1,Q_2,...,Q_n\}
P={P1,P2,...,Pn}Q={Q1,Q2,...,Qn}
匹配点集存在如下关系:
Qi=R∗Pi+t
Q_i = R*P_i + t
Qi=R∗Pi+t
1.2 问题建模
如何求解R和t 呢?使用SVD分解法。
ei=Qi−(R∗Pi+t)
e_i = Q_i - (R*P_i + t)
ei=Qi−(R∗Pi+t)
构建最小二乘问题:
minJ=0.5∗∑i=1n∣∣Qi−(R∗Pi+t)∣∣2
min \quad J = 0.5*\sum_{i=1}^{n} {|| Q_i - (R*P_i + t)||^2}
minJ=0.5∗i=1∑n∣∣Qi−(R∗Pi+t)∣∣2
1.3 问题求解
两个点集的质心描述如下:
Qm=1n∗∑i=1nQiPm=1n∗∑i=1nPi
Q_m = \frac{1}{n}*\sum_{i=1}^{n}{Q_i} \newline
P_m = \frac{1}{n}*\sum_{i=1}^{n}{P_i}
Qm=n1∗i=1∑nQiPm=n1∗i=1∑nPi
对最小二乘误差函数进行处理:
∑i=1n∣∣Qi−(R∗Pi+t)∣∣2=∑i=1n∣∣Qi−R∗Pi−t−Qm+Qm−R∗Pm+R∗Pm∣∣2=∑i=1n∣∣((Qi−Qm)−R∗(Pi−Pm))+(Qm−R∗Pm−t)∣∣2=∑i=1n∣∣((Qi−Qm)−R∗(Pi−Pm))∣∣2+∑i=1n∣∣(Qm−R∗Pm−t)∣∣2+∑i=1n((Qi−Qm)−R∗(Pi−Pm))∗(Qm−R∗Pm−t)
\sum_{i=1}^{n} {|| Q_i - (R*P_i + t)||^2} = \sum_{i=1}^{n} {|| Q_i - R*P_i - t - Q_m+Q_m-R*P_m+R*P_m||^2} \newline
= \sum_{i=1}^{n} {|| ((Q_i - Q_m) - R*(P_i -P_m ))+(Q_m-R*P_m- t) ||^2} \newline
= \sum_{i=1}^{n} {|| ((Q_i - Q_m) - R*(P_i -P_m )) ||^2} \newline + \sum_{i=1}^{n} {||(Q_m-R*P_m- t) ||^2} \newline + \sum_{i=1}^{n} ((Q_i - Q_m) - R*(P_i -P_m )) * (Q_m-R*P_m- t) \newline
i=1∑n∣∣Qi−(R∗Pi+t)∣∣2=i=1∑n∣∣Qi−R∗Pi−t−Qm+Qm−R∗Pm+R∗Pm∣∣2=i=1∑n∣∣((Qi−Qm)−R∗(Pi−Pm))+(Qm−R∗Pm−t)∣∣2=i=1∑n∣∣((Qi−Qm)−R∗(Pi−Pm))∣∣2+i=1∑n∣∣(Qm−R∗Pm−t)∣∣2+i=1∑n((Qi−Qm)−R∗(Pi−Pm))∗(Qm−R∗Pm−t)
注意要上式第三项结果累加求和之后为0,因此优化目标函数如下:
minJ==∑i=1n∣∣((Qi−Qm)−R∗(Pi−Pm))∣∣2+∑i=1n∣∣(Qm−R∗Pm−t)∣∣2
min J = = \sum_{i=1}^{n} {|| ((Q_i - Q_m) - R*(P_i -P_m )) ||^2} \newline + \sum_{i=1}^{n} {||(Q_m-R*P_m- t) ||^2} \newline
minJ==i=1∑n∣∣((Qi−Qm)−R∗(Pi−Pm))∣∣2+i=1∑n∣∣(Qm−R∗Pm−t)∣∣2
这个式子,第二项中对于任意的R总能凑出t,使得第二项为零。因此目标函数如下:
minJ=∑i=1n∣∣((Qi−Qm)−R∗(Pi−Pm))∣∣2=∑i=1n∣∣qi−R∗pi∣∣2
min J = \sum_{i=1}^{n} {|| ((Q_i - Q_m) - R*(P_i -P_m )) ||^2} \newline
= \sum_{i=1}^{n} {|| q_i - R*p_i ||^2}
minJ=i=1∑n∣∣((Qi−Qm)−R∗(Pi−Pm))∣∣2=i=1∑n∣∣qi−R∗pi∣∣2
参见 SLAM十四讲的求解证明
W=∑i=1nqipiTW=UΣVT
W = \sum_{i=1}^{n} {q_i}{p_i^T}\newline
W = U \Sigma V^T
W=i=1∑nqipiTW=UΣVT
于是得到结果:
R=(UVT)Tt=Qm−R∗Pm
R = (UV^T)^T \newline
t = Q_m-R*P_m
R=(UVT)Tt=Qm−R∗Pm
二 举一反三 坐标系转换
如果有两组坐标,分别互相对应,求出两个坐标系之间的关系,类似于ICP问题,亦可用SVD分解办法。