问题描述
已知在 \(d\) 维空间 \(\mathbb{R}^d\) 中,存在两个对应点集合 \(P = \left\{ {{{\mathbf{p}}_1},{{\mathbf{p}}_2}, \cdots ,{{\mathbf{p}}_n}} \right\}\) , \(Q = \left\{ {{{\mathbf{q}}_1},{{\mathbf{q}}_2}, \cdots ,{{\mathbf{q}}_n}} \right\}\),其中 \(\mathbf{p}_i\) 与 \(\mathbf{q}_i\) 对应。
我们希望找到一个刚体变换使得这两个集合下的点在最小二乘条件下完成对齐。即找到一个旋转矩阵 \({\mathbf{R}}\) 和平移矩阵 \({\mathbf{t}}\) , 满足对齐后的所有点距离平方加权和最小:
其中 \(w_i\) 表示第 \(i\) 对点的权重,已知。
求解步骤
经过一系列的复杂推导后,求解 \(\mathbf{R}\) 、\(\mathbf{t}\) 的步骤可以概括为以下几步:
1、计算两个点集的重心:
2、计算去除重心后的新点集合:
3、计算 \(d \times d\) 协方差矩阵(covariance matrix):
其中,\(\mathbf{X}\) 和 \(\mathbf{Y}\) 分别是以 \(\mathbf{x}_i\) 和 \(\mathbf{y}_i\) 为列向量构成的 \(d \times n\) 矩阵,对角矩阵\(\mathbf{W} = diag(w_1,w_2,\cdots,w_n)\) 。
4、SVD 分解矩阵 \(\mathbf{S}\) :
5、求解旋转矩阵 \(\mathbf{R}\) :
6、求解平移矩阵 \(\mathbf{t}\) :
推导过程
消掉平移矩阵
令目标函数的自变量为平移矩阵 \(\mathbf{t}\) ,即:
当 \(\frac{{\partial F}}{{\partial {\mathbf{t}}}} = 0\) 时,函数有最小值[1],于是有
令:
则此时平移矩阵可表示为:
带入目标函数后有,消去平移矩阵,变成关于旋转矩阵 \(\mathbf{R}\) 的表达式:
令:
则目标函数可重新定义为:
目标函数化简为矩阵的迹
将下式进行化简:
其中,根据旋转矩阵的正交性性质可知,\({{\mathbf{R}}^T}{\mathbf{R}} = {\mathbf{I}}\) 。
\(\mathbf{x}_i\) 和 \(\mathbf{y}_i\) 都是 \(d \times 1\) 的列向量,\(\mathbf{R}\) 为 \(d \times d\) 的方阵,且对于常量 \(a\) 有 \(a^T=a\)。所以有:
于是目标函数可以化简为:
观察可以发现可以用矩阵的迹来表达上式:
故目标函数进一步化简为:
根据矩阵的迹的性质,有:
于是,目标函数最终化简为:
矩阵的迹的最大值求解
利用SVD分解 \({\mathbf{XW}}{{\mathbf{Y}}^T}\) ,则有:
根据SVD分解性质,以及旋转矩阵的性质,\(\mathbf{V}\) 、\(\mathbf{R}\) 、\(\mathbf{U}\) 都是正交矩阵。若令 \({\mathbf{M}} = {{\mathbf{V}}^T}{\mathbf{RU}}\) ,则 \(\mathbf{M}\) 也是正交矩阵。
对于正交矩阵 \(\mathbf{M}\) ,列向量 \(\mathbf{m}_j\) 也是正交的,故矩阵的每个元素 \(m_{ij}\) 都小于1:
而 SVD 分解得到的 \({\mathbf{\Sigma }}\) 矩阵为对角矩阵,对角元素满足 \({\sigma _1},{\sigma _2}, \cdots ,{\sigma _d} \geqslant 0\) 。于是:
所以当 \(m_{ii}=1\) 时,上式取得最大值。而 \(\mathbf{M}\) 为正交矩阵,故此时 \(\mathbf{M}\) 为一单位矩阵。
旋转矩阵校验
由于旋转矩阵和反射矩阵都是正交矩阵,而本问题的最终结果必须为旋转矩阵,因需要对结果进行校验。校验的依据就是矩阵的行列式。
1、若\(\det ({\mathbf{R}}) = \det ({\mathbf{V}}{{\mathbf{U}}^T}) = 1\),则 该矩阵就是所需要求解的旋转矩阵,\({\mathbf{R}^*} = {\mathbf{V}\mathbf{U}^T}\)
2、若\(\det ({\mathbf{R}}) = \det ({\mathbf{V}}{{\mathbf{U}}^T}) = -1\) ,则该矩阵为一反射矩阵,需要基于此情况寻找一个局部最优解。
取 \(m_{dd} = -1, m_{ii}=1,i=1,2,\cdots,d-1\) ,则有:
将以上两种情况统一,则可将旋转矩阵表示为:
平移矩阵求解
根据前述推导,得到旋转矩阵后,平移矩阵可表示为:
参考文献
- Sorkine O . Least-squares rigid motion using svd. 2009.
- 知乎 | 三维点云匹配,ICP算法详解
- 百度百科|正交矩阵
- 百度百科|奇异值分解
这里这样推导好像不严谨。 ↩︎
文章版权归作者所有,未经允许请勿转载。
详细推导了基于SVD分解的点云配准算法原理