雷达系列论文翻译(二):Least-Squares Rigid Motion Using SVD

Least-Squares Rigid Motion Using SVD

摘要

本注释总结了计算对齐两组对应点的最优的刚体变换的步骤。

问题陈述

P = { p 1 , p 2 , . . . , p n } \mathcal{P} = \{p_1,p_2,...,p_n\} P={p1,p2,...,pn} Q = { q 1 , q 2 , . . . , q n } \mathcal{Q}=\{q_1,q_2,...,q_n\} Q={q1,q2,...,qn} R d R^d Rd空间内的两组对应的点。我们希望找到一个刚性的变换,在最小二乘的意义上最优地对齐两个点集,也就是说,我们寻求一个旋转 R R R和一个平移向量 t t t来满足
( R , t ) = arg min ⁡ R ∈ S O ( d ) , t ∈ R d ∑ i = 1 n w i ∣ ∣ ( R p i + t ) − q i ∣ ∣ 2 (1) (R,t) = \argmin_{R \in SO(d),t \in R^d}\sum_{i=1}^{n}{w_i ||(Rp_i+t) - q_i||^2} \tag{1} (R,t)=RSO(d),tRdargmini=1nwi(Rpi+t)qi2(1)
其中 w i > 0 w_i > 0 wi>0是每个点对的权重。
在下文中,我们详细介绍了 R R R t t t的推导过程;对最终结果感兴趣的读者可以跳过证明,直接进入第4节。

计算平移

假设 R R R被固定并定义 F ( t ) = ∑ i = 1 n w i ∣ ∣ ( R p i + t ) − q i ∣ ∣ 2 F(t) = \sum_{i=1}^{n}{w_i || (Rp_i+t) - q_i ||^2} F(t)=i=1nwi(Rpi+t)qi2。我们可以通过取 F ( t ) F(t) F(t)相对于 t t t的导数并寻找它的根来找到最优平移:
0 = ∂ F ∂ t = ∑ i = 1 n 2 w i ( R p i + t − q i ) = 2 t ( ∑ i = 1 n w i ) + 2 R ( ∑ i = 1 n w i p i ) − 2 ∑ i = 1 n w i q i (2) 0 = \frac{\partial F}{\partial t} = \sum_{i=1}^{n}{2 w_i (Rp_i + t -q_i)} \\ = 2t(\sum_{i=1}^{n}{w_i}) + 2R (\sum_{i=1}^{n}{w_ip_i}) - 2\sum_{i=1}^{n}{w_iq_i} \tag{2} 0=tF=i=1n2wi(Rpi+tqi)=2t(i=1nwi)+2R(i=1nwipi)2i=1nwiqi(2)
定义
p ˉ = ∑ i = 1 n w i p i ∑ i = 1 n w i , q ˉ = ∑ i = 1 n w i q i ∑ i = 1 n w i (3) \bar{p} = \frac{ \sum_{i=1}^{n}{w_ip_i} }{\sum_{i=1}^{n}{w_i}},\bar{q} = \frac{ \sum_{i=1}^{n}{w_iq_i} }{\sum_{i=1}^{n}{w_i}} \tag{3} pˉ=i=1nwii=1nwipi,qˉ=i=1nwii=1nwiqi(3)
通过重新排列公式(2)的项,我们得到
t = q ˉ − R p ˉ (4) t = \bar{q} - R \bar{p} \tag{4} t=qˉRpˉ(4)
换句话说,最佳平移 t t t将被变换的点集 p \mathcal{p} p的加权质心映射到点集 Q \mathcal{Q} Q的加权质心。让我们将最优的 t t t插入我们的目标函数:
∑ i = 1 n w i ∣ ∣ ( R p i + t ) − q i ∣ ∣ 2 = ∑ i = 1 n w i ∣ ∣ R p i + q ˉ − R p ˉ − q i ∣ ∣ 2 = ∑ i = 1 n w i ∣ ∣ R ( p i − p ˉ ) − ( q i − q ˉ ) ∣ ∣ 2 (5) \sum_{i=1}^{n}{w_i || (Rp_i + t) - q_i ||^2} = \sum_{i=1}^{n}{w_i || Rp_i + \bar{q} - R\bar{p} - q_i ||^2} \\ = \sum{i=1}^{n}{w_i || R(p_i - \bar{p}) - (q_i - \bar{q}) ||^2} \tag{5} i=1nwi(Rpi+t)qi2=i=1nwiRpi+qˉRpˉqi2=i=1nwiR(pipˉ)(qiqˉ)2(5)

因此,我们可以集中精力计算旋转 R R R。通过重构这个问题,使得平移为零:
x i = p i − p ˉ , y i = q i − q ˉ (6) x_i = p_i - \bar{p} , y_i = q_i - \bar{q} \tag{6} xi=pipˉ,yi=qiqˉ(6)
所以我们寻找最佳旋转 R R R,使其满足
R = arg min ⁡ R ∈ S O ( d ) ∑ i = 1 n w i ∣ ∣ R x i − y i ∣ ∣ 2 (7) R = \argmin_{R \in SO(d)} \sum_{i=1}^{n}{w_i || Rx_i - y_i ||^2} \tag{7} R=RSO(d)argmini=1nwiRxiyi2(7)

计算旋转

让我们简化公式(7)中试图最小化的表达式:
∣ ∣ R x i − y i ∣ ∣ 2 = ( R x i − y i ) T ( R x i − y i ) = ( x i T R T − y i T ) ( R x i − y i ) = x i T R T R x i − y i T R x i − x i T R T y i + y i T y i = x i T x i − y i T R x i − x i T R T y i + y i T y i (8) ||Rx_i - y_i||^2 = (Rx_i - y_i)^T(Rx_i - y_i) = (x_i^TR^T - y_i^T)(Rx_i - y_i) \\ = x_i^TR^TRx_i - y_i^TRx_i - x_i^TR^Ty_i + y_i^Ty_i \\ = x_i^Tx_i - y_i^TRx_i - x_i^TR^Ty_i + y_i^Ty_i \tag{8} Rxiyi2=(Rxiyi)T(Rxiyi)=(xiTRTyiT)(Rxiyi)=xiTRTRxiyiTRxixiTRTyi+yiTyi=xiTxiyiTRxixiTRTyi+yiTyi(8)
我们通过旋转矩阵的正交性( R R T = R T R = I RR^T = R^TR = I RRT=RTR=I)来完成最后一步。

请注意, x i T R T y i x_i^TR^Ty_i xiTRTyi是一个标量: x i T x_i^T xiT维度为 1 × d 1 \times d 1×d R T R^T RT维度为 d × d d \times d d×d并且 y i y_i yi的维度为 d × 1 d \times 1 d×1。对于任何标量 a a a,我们通常都有 a = a T a=a^T a=aT,因此
x i T R T y i = ( x i T R T y i ) T = y i T R x i (9) x_i^TR^Ty_i = (x_i^TR^Ty_i)^T = y_i^TRx_i \tag{9} xiTRTyi=(xiTRTyi)T=yiTRxi(9)
因此我们有
∣ ∣ R x i − y i ∣ ∣ 2 = x i T x i − 2 y i T R x i + y i T y i (10) || Rx_i - y_i ||^2 = x_i^Tx_i - 2y_i^TRx_i + y_i^Ty_i \tag{10} Rxiyi2=xiTxi2yiTRxi+yiTyi(10)
让我们看看要最小化的代价函数,并使用上面的表达式进行替换:
arg min ⁡ R ∈ S O ( d ) ∑ i = 1 n w i ∣ ∣ R x i − y i ∣ ∣ 2 = arg min ⁡ R ∈ S O ( d ) ∑ i = 1 n w i ( x i T x i − 2 y i T R x i + y i T y i ) = arg min ⁡ R ∈ S O ( d ) ( ∑ i = 1 n w i x i T x i − 2 ∑ i = 1 n w i y i T R x i + ∑ i = 1 n w i y i T y i ) = arg min ⁡ R ∈ S O ( d ) ( − 2 ∑ i = 1 n w i y i T R x i ) (11) \argmin_{R \in SO(d)} \sum_{i=1}^{n}{w_i || Rx_i - y_i ||^2} = \argmin_{R \in SO(d)} \sum_{i=1}^{n}{w_i (x_i^Tx_i - 2y_i^TRx_i + y_i^Ty_i)} \\ = \argmin_{R \in SO(d)} (\sum_{i=1}^{n}{w_ix_i^Tx_i - 2\sum_{i=1}^{n}{w_i y_i^T R x_i}} + \sum_{i=1}^{n}{w_iy_i^Ty_i}) \\ = \argmin_{R \in SO(d)}(-2 \sum_{i=1}^{n}{w_i y_i^T R x_i}) \tag{11} RSO(d)argmini=1nwiRxiyi2=RSO(d)argmini=1nwi(xiTxi2yiTRxi+yiTyi)=RSO(d)argmin(i=1nwixiTxi2i=1nwiyiTRxi+i=1nwiyiTyi)=RSO(d)argmin(2i=1nwiyiTRxi)(11)
最后一步(移除 ∑ i = 1 n w i x i T x i \sum_{i=1}^{n}{w_ix_i^Tx_i} i=1nwixiTxi ∑ i = 1 n w i y i T y i \sum_{i=1}^{n}{w_iy_i^Ty_i} i=1nwiyiTyi)成立,因为这些表达式根本不依赖于 R R R,所以移除它们不会影响最小值。最小化表达式乘以标量也是如此,所以我们有
arg min ⁡ R ∈ S O ( d ) ( − 2 ∑ i = 1 n w i y i T R x i ) = arg max ⁡ R ∈ S O ( d ) ∑ i = 1 n w i y i T R x i (12) \argmin_{R \in SO(d)}(-2 \sum_{i=1}^{n}{w_i y_i^T R x_i}) = \argmax_{R \in SO(d)} \sum_{i=1}^{n}{w_i y_i^T R x_i} \tag{12} RSO(d)argmin(2i=1nwiyiTRxi)=RSO(d)argmaxi=1nwiyiTRxi(12)
我们定义
∑ i = 1 n w i y i T R x i = t r ( W Y T R X ) (13) \sum_{i=1}^{n}{w_iy_i^TRx_i} = tr(WY^TRX) \tag{13} i=1nwiyiTRxi=tr(WYTRX)(13)

其中 W = d i a g ( w 1 , w 2 , . . . , w n ) W = diag(w_1,w_2,...,w_n) W=diag(w1,w2,...,wn)是带加权对角元素 w i w_i wi n × n n \times n n×n对角矩阵; Y Y Y是一个以 y i y_i yi为列的 d × n d \times n d×n矩阵, X X X是一个以 x i x_i xi为列的 d × n d \times n d×n矩阵。我们提醒读者,方阵的迹是对角线上元素的和: t r ( A ) = ∑ i = 1 n a i i tr(A) = \sum_{i=1}^{n}{a_{ii}} tr(A)=i=1naii。参见图1来了解代数操作的说明。
在这里插入图片描述
因此,我们正在寻找一个最大化 t r ( W Y T R X ) tr(WY^TRX) tr(WYTRX)的旋转 R R R。矩阵迹具有性质
t r ( A B ) = t r ( B A ) (14) tr(AB) = tr(BA) \tag{14} tr(AB)=tr(BA)(14)
对于任何矩阵维度允许的矩阵 A A A B B B。因此
t r ( W Y T R X ) = t r ( ( W Y T ) ( R X ) ) = t r ( R X W Y T ) (15) tr(WY^TRX) = tr((WY^T)(RX) ) = tr(RXWY^T) \tag{15} tr(WYTRX)=tr((WYT)(RX))=tr(RXWYT)(15)
让我们定义 d × d d\times d d×d的协方差矩阵 S = X W Y T S= XWY^T S=XWYT。对 S S S进行SVD分解:
S = U Σ V T (16) S = U \Sigma V^T \tag{16} S=UΣVT(16)
现在将分解替换到我们试图最大化的代价函数中:
t r ( R X W Y T ) = t r ( R S ) = t r ( R U Σ V T ) = t r ( Σ V T R U ) (17) tr(RXWY^T) = tr(RS) = tr(RU\Sigma V^T) = tr(\Sigma V^T RU) \tag{17} tr(RXWYT)=tr(RS)=tr(RUΣVT)=tr(ΣVTRU)(17)
最后一步是使用迹的属性(14)实现的。注意 V V V, R R R U U U都是正交矩阵,所以 M = V T R U M = V^TRU M=VTRU也是正交矩阵。这意味着 M M M的列是正交向量,特别是,对于每个 M M M的列 m j m_j mj m j T m j = 1 m_j^Tm_j = 1 mjTmj=1。因此 M M M的所有元素 m i j ≤ 1 m_{ij} \leq 1 mij1
1 = m j T m j = ∑ i = 1 d m i j 2 → m i j 2 ≤ 1 → ∣ m i j ∣ ≤ 1 (18) 1 = m_j^Tm_j = \sum_{i=1}^{d}{m_{ij}^2} \to m_{ij}^2 \leq 1 \to |m_{ij}| \leq 1 \tag{18} 1=mjTmj=i=1dmij2mij21mij1(18)
那么 t r ( Σ M ) tr(\Sigma M) tr(ΣM)的最大可能值是多少?请记住, Σ \Sigma Σ是一个对角矩阵,具有非负元素 σ 1 , σ 2 , . . . , σ d ≥ 0 \sigma_1 , \sigma_2 ,..., \sigma_d \geq 0 σ1,σ2,...,σd0。因此:
t r ( Σ M ) = ( σ 1 σ 2 ⋱ σ d ) ( m 11 m 12 ⋯ m 1 d m 21 m 22 ⋯ m 2 d ⋮ ⋮ ⋮ ⋮ m d 1 m d 2 ⋯ m d d ) = ∑ i = 1 d σ i m i i ≤ ∑ i = 1 d σ i (19) tr(\Sigma M) = \begin{pmatrix} \sigma_1 & & & \\ & \sigma_2 & & \\ & & \ddots & \\ & & & \sigma_d\end{pmatrix} \begin{pmatrix} m_{11} & m_{12} & \cdots & m_{1d} \\ m_{21} & m_{22} & \cdots & m_{2d} \\ \vdots & \vdots & \vdots & \vdots \\ m_{d1} & m_{d2} & \cdots & m_{dd} \end{pmatrix} = \sum_{i=1}^{d}{\sigma_i m_{ii}} \leq \sum_{i=1}^{d}{\sigma_i} \tag{19} tr(ΣM)=σ1σ2σdm11m21md1m12m22md2m1dm2dmdd=i=1dσimiii=1dσi(19)
因此,如果 m i i = 1 m_{ii} = 1 mii=1,则迹最大化。因为 M M M是正交矩阵,这意味着 M M M必须是单位矩阵!
I = M = V T R U → V = R U → R = V U T (20) I = M = V^T RU \to V = RU \to R = VU^T \tag{20} I=M=VTRUV=RUR=VUT(20)

旋转反射

我们刚才描述的过程找到了最优的正交矩阵,除了旋转之外,它还可能包含反射。想象一下,点集 P \mathcal{P} P是点集合 Q \mathcal{Q} Q的完美反射。然后我们会发现反射完美地对齐了两个点集,并在公式(7)中产生零代价,在这种情况下它是全局最小值。然而,如果我们严格要求它是一个旋转,可能就不会有一个完美对齐点集的旋转。

检查是 R = V U T R = VU^T R=VUT否是旋转很简单:如果 d e t ( V U T ) = − 1 det(VU^T)= -1 det(VUT)=1,则它包含一个反射,否则 d e t ( V U T ) = + 1 det(VU^T)= +1 det(VUT)=+1。假设 d e t ( V U T ) = 1 det(VU^T)= 1 det(VUT)=1。限制 R R R为旋转等同于限制 M M M为反射。我们现在想找到一个反射来最大化:
t r ( Σ M ) = σ 1 m 11 + σ 2 m 22 + . . . + σ d m d d = f ( m 11 , m 22 , . . . , m d d ) (21) tr(\Sigma M) = \sigma_1m_{11} + \sigma_2 m_{22} + ... + \sigma_d m_{dd} = f(m_{11},m_{22},...,m_{dd}) \tag{21} tr(ΣM)=σ1m11+σ2m22+...+σdmdd=f(m11,m22,...,mdd)(21)
请注意, f f f只取决于 M M M的对角线,而不是它的其他元素。我们现在考虑 m i i m_{ii} mii作为变量 ( m 11 , . . . , m d d ) (m_{11},...,m_{dd}) (m11...mdd)。这是 n n n阶反射矩阵的所有对角线元素的集合。令人惊讶的是,它的结构非常简单。事实上,A.Horn[1]的一个结果表明, n n n阶旋转矩阵的所有对角线的集合等于点集 ( ± 1 , . . . , ± 1 ) (\pm1,...,\pm1) (±1...±1)的凸包,偶数个坐标为 − 1 -1 1。因为任何反射矩阵都可以通过反转旋转矩阵一行的符号来构造,反之亦然,所以我们优化的集合是具有非偶数个 − 1 -1 1的点集 ( ± 1 , . . . , ± 1 ) (\pm1,...,\pm1) (±1...±1)的凸包。

由于我们的定义域是凸多面体,所以线性函数 f f f在其顶点处有极值。对角线 ( 1 , 1 , . . . , 1 ) (1,1,...,1) (11...1)不在域中,因为它有偶数个 − 1 -1 1(即零),因此下一个最佳选择是 ( 1 , 1 , . . . , 1 , − 1 ) (1,1,...,1,−1) (11...,1,1)
t r ( Σ M ) = σ 1 + σ 2 + . . . + σ d − 1 − σ d (22) tr(\Sigma M) = \sigma_1 + \sigma_2 + ... + \sigma_{d-1} - \sigma_d \tag{22} tr(ΣM)=σ1+σ2+...+σd1σd(22)
这个值是在我们的定义域的一个顶点上得到的,并且比形式 ( ± 1 , . . . , ± 1 ) (\pm1,...,\pm1) (±1...±1)除了 ( 1 , 1 , . . . , 1 ) (1,1,...,1) (11...1)的组合更大,因为 σ d \sigma_d σd是最小的奇异值。

总而言之,我们得出这样一个事实,如果 d e t ( V U T ) = − 1 det(VU^T)= -1 det(VUT)=1,我们需要
M = V T R U = ( 1 1 ⋱ 1 − 1 ) → R = V ( 1 1 ⋱ 1 − 1 ) U T (23) M = V^TRU = \begin{pmatrix} 1 & & & & \\ & 1 & & & \\ & & \ddots & & \\ & & & 1 & \\ & & & & -1 \end{pmatrix} \to R = V\begin{pmatrix} 1 & & & & \\ & 1 & & & \\ & & \ddots & & \\ & & & 1 & \\ & & & & -1 \end{pmatrix}U^T \tag{23} M=VTRU=1111R=V1111UT(23)
我们可以写出一个包含两种情况的通用公式, d e t ( V U T ) = 1 det(VU^T) = 1 det(VUT)=1 d e t ( V U T ) = 1 det(VU^T)= 1 det(VUT)=1
R = V ( 1 1 ⋱ 1 d e t ( V U T ) ) U T (24) R = V\begin{pmatrix} 1 & & & & \\ & 1 & & & \\ & & \ddots & & \\ & & & 1 & \\ & & & & det(VU^T) \end{pmatrix}U^T \tag{24} R=V111det(VUT)UT(24)

刚体运动计算-概述

让我们总结一下计算最有平移 t t t和旋转 R R R的步骤
∑ i = 1 n w i ∣ ∣ ( R p i + t ) − q i ∣ ∣ 2 \sum_{i=1}^{n}{w_i ||(Rp_i+t) - q_i||^2} i=1nwi(Rpi+t)qi2

  1. 计算两个点集的加权质心
    p ˉ = ∑ i = 1 n w i p i ∑ i = 1 n w i , q ˉ = ∑ i = 1 n w i q i ∑ i = 1 n w i \bar{p} = \frac{ \sum_{i=1}^{n}{w_ip_i} }{\sum_{i=1}^{n}{w_i}},\bar{q} = \frac{ \sum_{i=1}^{n}{w_iq_i} }{\sum_{i=1}^{n}{w_i}} pˉ=i=1nwii=1nwipi,qˉ=i=1nwii=1nwiqi
  2. 计算去中心的坐标
    x i = p i − p ˉ , y i = q i − q ˉ x_i = p_i - \bar{p} , y_i = q_i - \bar{q} xi=pipˉ,yi=qiqˉ
  3. 计算 d × d d \times d d×d的协方差矩阵
    S = X W Y T S= XWY^T S=XWYT
    其中 W = d i a g ( w 1 , w 2 , . . . , w n ) W = diag(w_1,w_2,...,w_n) W=diag(w1,w2,...,wn)是带加权对角元素 w i w_i wi n × n n \times n n×n对角矩阵; Y Y Y是一个以 y i y_i yi为列的 d × n d \times n d×n矩阵, X X X是一个以 x i x_i xi为列的 d × n d \times n d×n矩阵。
  4. 计算奇异值分解 S = U Σ V T S = U\Sigma V^T S=UΣVT,旋转矩阵可以由以下公式求出
    R = V ( 1 1 ⋱ 1 d e t ( V U T ) ) U T R = V\begin{pmatrix} 1 & & & & \\ & 1 & & & \\ & & \ddots & & \\ & & & 1 & \\ & & & & det(VU^T) \end{pmatrix}U^T R=V111det(VUT)UT
  5. 计算最优的平移
    t = q ˉ − R p ˉ t = \bar{q} - R \bar{p} t=qˉRpˉ
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值