Least-Squares Fitting of Two 3-D Point Sets
这是一篇非常老的论文,最关键的点其实是作者关于闭式解退化情况的描述
摘要
两个点集 { p i } \{p_i\} { pi}和 { p i ′ } \{p_i^{'}\} { pi′}; i = 1 , 2 , . . . , N i = 1,2,...,N i=1,2,...,N由 p i ′ = R p i + T + N i p_i^{'} = Rp_i + T + N_i pi′=Rpi+T+Ni所关联,这里 R R R是旋转矩阵, T T T是平移向量, N i N_i Ni是噪声向量。给定 { p i } \{p_i\} { pi}和 { p i ′ } \{p_i^{'}\} { pi′},我们提出了一种算法来找到 R R R和 T T T的最小二乘解,这个方法基于 3 × 3 3 \times 3 3×3矩阵的奇异值分解(SVD)。在计算时间方面,将此算法与两种较早提出的算法进行了比较。
引言
在许多计算机视觉的应用,尤其是使用3-D点对的对应关系[1]来估计刚体的运动参数以及刚体相对于参考坐标系的位姿[2]中,我们遇到了下面的数学问题。我们给定两个3-D点集 { p i } \{p_i\} {
pi}和 { p i ′ } \{p_i^{'}\} {
pi′}; i = 1 , 2 , . . . , N i = 1, 2, ...,N i=1,2,...,N(这里 p i p_i pi和 p i ′ p_i^{'} pi′是视为 3 × 1 3 \times 1 3×1的列矩阵)
p i ′ = R p i + T + N i (1) p_i^{'} = Rp_i + T+N_i \tag{1} pi′=Rpi+T+Ni(1)
这里 R R R是 3 × 3 3 \times 3 3×3的旋转矩阵, T T T是平移向量( 3 × 1 3 \times 1 3×1的列矩阵), N i N_i Ni是噪声向量(我们假设旋转是沿着一个通过原点的旋转轴进行的)。我们想要找到一个 R R R和 T T T来最小化
Σ 2 = ∑ i = 1 N ∣ ∣ p i − ( R p i + T ) ∣ ∣ 2 (2) \Sigma^2 = \sum_{i=1}^{N}{|| p_i - (Rp_i + T) ||^2} \tag{2} Σ2=i=1∑N∣∣pi−(Rpi+T)∣∣2(2)
Huang,Blostein和Margerum[3]提出了一种用于寻找解的迭代算法,Faugeras和Hebert提出了一种基于四元数的非迭代算法。在本文中,我们提出了一种新的非迭代算法,该算法涉及到 3 × 3 3 \times 3 3×3矩阵的奇异值分解(SVD)。我们比较了三种算法的计算时间。
解耦平移和旋转
根据[3]中所述,如果公式(1)的最小二乘解为 R ^ \hat{R} R^和 T ^ \hat{T} T^,则 { p i ′ } \{p_i^{'}\} {
pi′}和 { p i ′ ′ ≡ R ^ p i + T ^ } \{p_i^{''} \equiv \hat{R}p_i +\hat{T}\} {
pi′′≡R^pi+T^}有着相同的质心,也就是说
p ′ = p ′ ′ . (3) p^{'} = p^{''}. \tag{3} p′=p′′.(3)
这里
p ′ = 1 N ∑ i = 1 N p i ′ . (4) p^{'} = \frac{1}{N} \sum_{i = 1}^{N}{p_i^{'}}. \tag{4} p′=N1i=1∑Npi′.(4)
p ′ ′ = 1 N ∑ i = 1 N p i ′ ′ = R ^ p + T ^ (5) p^{''} = \frac{1}{N} \sum_{i=1}^{N}{p_i^{''}} = \hat{R}p + \hat{T} \tag{5} p′′=N1i=1∑Np