Perspective-n-Point (PnP) 问题:如下图,
1)给定 [公式] 个3D参考点 [公式] 到摄像机图像上2D投影点 [公式] 的匹配点对;
2)已知 3D点在世界坐标系下的坐标,2D点在图像坐标系下的坐标;
3)已知摄像机的内参数 [公式] 。
目的:求世界坐标系与摄像机坐标系之间的位姿变换 [公式]
用途:相机位姿跟踪,物体位姿跟踪,AR/VR,机器人操作,SLAM中位姿初值求解……
常用解法:DLT,P3P,EPnP,UPnP。
PnP算法分为直接发和优化法两大类,
直接法包括:P3P、 DLT 、 EPnP等等;
优化法有: LHM 、 Only pos BA 等。
3D参考点在世界坐标系的齐次坐标:
c = [ x y z 1 ] \mathbf{c}=\left[\begin{array}{l}x \\ y \\ z \\ 1\end{array}\right] c=⎣⎢⎢⎡xyz1⎦⎥⎥⎤
对应的2D投影点在图像坐标系下的齐次坐标是:
u = [ u v 1 ] \mathbf{u}=\left[\begin{array}{l}u \\ v \\ 1\end{array}\right] u=⎣⎡uv1⎦⎤
相机内参一般是已知的 slam’问题里
K = [ f x c x f y c y 1 ] \mathbf{K}=\left[\begin{array}{ccc}f_{x} & & c_{x} \\ & f_{y} & c_{y} \\ & & 1\end{array}\right] K=⎣⎡fxfycxcy1⎦⎤
那么3D点到2D点投影可表示为
λ [ u v 1 ] = [ f x c x f y c y 1 ] [ R ∣ t ] [ x y z 1 ] \lambda\left[\begin{array}{l}u \\ v \\ 1\end{array}\right]=\left[\begin{array}{lll}f_{x} & & c_{x} \\ & f_{y} & c_{y} \\ & & 1\end{array}\right][\mathbf{R} \mid \mathbf{t}]\left[\begin{array}{c}x \\ y \\ z \\ 1\end{array}\right] λ⎣⎡uv1⎦⎤=⎣⎡fxfycxcy1⎦⎤[R∣t]⎣⎢⎢⎡xyz1⎦⎥⎥⎤ (1)
[ R ∣ t ] [\mathbf{R} \mid \mathbf{t}] [R∣t] 是一个3x4的增广矩阵,包含了旋转和平移信息。
理论上由于 [ R ] [\mathbf{R}] [R]这个玩意儿就只有三个自由度,因为存在旋转矩阵的正交约束,DLT算法中先不管这个,忽略这个正交约束,按照 [ R ∣ t ] [\mathbf{R} \mid \mathbf{t}] [R∣t]有12个未知参数 x = [ a 1 , ⋯ , a 12 ] T \mathbf{x}=\left[a_{1}, \cdots, a_{12}\right]^{T} x=[a1,⋯,a12]T来考虑计算。
这样,(1)式变化为:
λ = [ u v 1 ] = [ f x c x f y c y 1 ] [ a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 a 10 a 11 a 12 ] [ x y z 1 ] \lambda=\left[\begin{array}{l}u \\ v \\ 1\end{array}\right]=\left[\begin{array}{ccc}f_{x} & & c_{x} \\ & f_{y} & c_{y} \\ & & 1\end{array}\right]\left[\begin{array}{cccc}a_{1} & a_{2} & a_{3} & a_{4} \\ a_{5} & a_{6} & a_{7} & a_{8} \\ a_{9} & a_{10} & a_{11} & a_{12}\end{array}\right]\left[\begin{array}{l}x \\ y \\ z \\ 1\end{array}\right] λ=⎣⎡uv1⎦⎤=⎣⎡fxfycxcy1⎦⎤⎣⎡a1a5a9a2a6a10a3a7a11a4a8a12⎦⎤⎣⎢⎢⎡xyz1⎦⎥⎥⎤ (2)
先消去第三个等式,也就是消去scale factor尺度因子 λ \lambda λ ,
有:
{ x f x a 1 + x c x a 9 + y f x a 2 + y c x a 10 + z f x a 3 + z c x a 11 + f x a 4 + c x a 12 − u x a 9 − u y a 10 − u z a 11 − u a 12 = 0 x f y a 5 + x c y a 9 + y f y a 6 + y c y a 10 + z f y a 7 + z c y a 11 + f y a 8 + c y a 12 − v x a 9 − v y a 10 − v z a 11 − v a 12 = 0 \left\{\begin{array}{l}x f_{x} a_{1}+x c_{x} a_{9}+y f_{x} a_{2}+y c_{x} a_{10}+z f_{x} a_{3}+z c_{x} a_{11}+f_{x} a_{4}+c_{x} a_{12}-u x a_{9}-u y a_{10}-u z a_{11}-u a_{12}=0 \\ x f_{y} a_{5}+x c_{y} a_{9}+y f_{y} a_{6}+y c_{y} a_{10}+z f_{y} a_{7}+z c_{y} a_{11}+f_{y} a_{8}+c_{y} a_{12}-v x a_{9}-v y a_{10}-v z a_{11}-v a_{12}=0\end{array}\right. {xfxa1+xcxa9+yfxa2+ycxa10+zfxa3+zcxa11+fxa4+cxa12−uxa9−uya10−uza11−ua12=0xfya5+xcya9+yfya6+ycya10+zfya7+zcya11+fya8+cya12−vxa9−vya10−vza11−va12=0
写成矩阵形式如下:
[ x f x y f x z f x f x 0 0 0 0 x c x − u x y c x − u y z c x − u z c x − u 0 0 0 0 x f y y f y z f y f y x c y − v x y c y − v y z c y − v z c y − v ] [ a 1 a 2 ⋮ a 12 ] = 0 \left[\begin{array}{cccccccccccc}x f_{x} & y f_{x} & z f_{x} & f_{x} & 0 & 0 & 0 & 0 & x c_{x}-u x & y c_{x}-u y & z c_{x}-u z & c_{x}-u \\ 0 & 0 & 0 & 0 & x f_{y} & y f_{y} & z f_{y} & f_{y} & x c_{y}-v x & y c_{y}-v y & z c_{y}-v z & c_{y}-v\end{array}\right]\left[\begin{array}{c}a_{1} \\ a_{2} \\ \vdots \\ a_{12}\end{array}\right]=0 [xfx0yfx0zfx0fx00xfy0yfy0zfy0fyxcx−uxxcy−vxycx−uyycy−vyzcx−uzzcy−vzcx−ucy−v]⎣⎢⎢⎢⎡a1a2⋮a12⎦⎥⎥⎥⎤=0
高翔的14讲 用了简化表示
定义 a = [ a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 a 10 a 11 a 12 ] a=[\begin{array}{cccc}a_{1} & a_{2} & a_{3} & a_{4} \\ a_{5} & a_{6} & a_{7} & a_{8} \\ a_{9} & a_{10} & a_{11} & a_{12}\end{array}] a=[a1a5a9a2a6a10a3a7a11a4a8a12]的三个行向量为:
t ⃗ 1 = ( a 1 , a 2 , a 3 , a 4 ) T \vec t_{1}=(a_1, a_2,a_3,a_4)^{T} t1=(a1,a2,a3,a4)T
t ⃗ 2 = ( a 5 , a 6 , a 7 , a 8 ) T \vec t_{2}=(a_5, a_6,a_7,a_8)^{T} t2=(a5,a6,a7,a8)T
t ⃗ 3 = ( a 9 , a 10 , a 11 , a 12 ) T \vec t_{3}=(a_9, a_{10},a_{11},a_{12})^{T} t3=(a9,a10,a11,a12)T
于是又有:
t ⃗ 1 T P − t ⃗ 3 T P u 1 = 0 , \vec t_{1}^{T}P-\vec t_{3}^{T}Pu_{1}=0 , t1TP−t3TPu1=0,
t ⃗ 2 T P − t ⃗ 3 T P v 1 = 0. \vec t_{2}^{T}P-\vec t_{3}^{T}Pv_{1}=0 . t2TP−t3TPv1=0.
综上所述,每个特征点(3D-2D坐标对)提供了两个方程,也就是两个关于t的线性约束。
假设一共有N个特征点, N ≥ 6 N \geq 6 N≥6 时, 产生一个方程组:
A x = 0 \mathrm{Ax}=\mathbf{0} Ax=0
其中, A \mathbf{A} A 的大小为 2 n × 12 2 n \times 12 2n×12 。这个方程无法求出精确解,但是可以获得一个 ∣ x ∣ = 1 |\mathbf{x}|=1 ∣x∣=1 约束 下的最小二乘解 argmin ∥ A x ∥ 2 \operatorname{argmin}\|\mathbf{A x}\|^{2} argmin∥Ax∥2 (这部分可以参考: Ax=0求解以及MVG 教程) 。具体的, 对 A \mathbf{A} A 进行SVD分解,可得
[ U Σ V ] = SVD ( A ) [\mathbf{U} \mathbf{\Sigma} \mathbf{V}]=\operatorname{SVD}(\mathbf{A}) [UΣV]=SVD(A)
V \mathbf{V} V 矩阵的最后一列 x ‾ \overline{\mathbf{x}} x, 便为式 (6) 的解。注意,求解的结果是没有尺度的,也就是说实际的解 为
x = β x ‾ \mathbf{x}=\beta \overline{\mathbf{x}} x=βx
其中, β \beta β 为比例系数, x ‾ = [ a ˉ 1 , ⋯ , a ˉ 12 ] T \overline{\mathbf{x}}=\left[\bar{a}_{1}, \cdots, \bar{a}_{12}\right]^{T} x=[aˉ1,⋯,aˉ12]T 。旋转部分为
R ‾ = [ a ˉ 1 a ˉ 2 a ˉ 3 a ˉ 4 a ˉ 5 a ˉ 6 a ˉ 7 a ˉ 8 a ˉ 9 ] \overline{\mathbf{R}}=\left[\begin{array}{lll} \bar{a}_{1} & \bar{a}_{2} & \bar{a}_{3} \\ \bar{a}_{4} & \bar{a}_{5} & \bar{a}_{6} \\ \bar{a}_{7} & \bar{a}_{8} & \bar{a}_{9} \end{array}\right] R=⎣⎡aˉ1aˉ4aˉ7aˉ2aˉ5aˉ8aˉ3aˉ6aˉ9⎦⎤
为带有尺度的正交矩阵,为求最优的旋转矩阵,将其进行SVD分解
[ U Σ V ] = SVD ( R ‾ ) [\mathbf{U} \mathbf{\Sigma} \mathbf{V}]=\operatorname{SVD}(\overline{\mathbf{R}}) [UΣV]=SVD(R)
最优的旋转矩阵即为
R = ± U V T ( 为 什 么 这 样 ? 后 续 证 明 之 ) \mathbf{R}=\pm \mathbf{U V}^{T} (为什么这样?后续证明之) R=±UVT(为什么这样?后续证明之)
理论上, Σ \boldsymbol{\Sigma} Σ 的对角线应该非常相近,取均值,求解得到比例系数为
β = ± 1 / ( tr ( Σ ) / 3 ) \beta=\pm 1 /(\operatorname{tr}(\boldsymbol{\Sigma}) / 3) β=±1/(tr(Σ)/3)
在加上一个限制条件,3D点应该在摄像机的前方
λ > 0 : β ( x a ˉ 9 + y a ˉ 10 + z a ˉ 11 + a ˉ 12 ) > 0 \lambda>0: \beta\left(x \bar{a}_{9}+y \bar{a}_{10}+z \bar{a}_{11}+\bar{a}_{12}\right)>0 λ>0:β(xaˉ9+yaˉ10+zaˉ11+aˉ12)>0
可确定 β \beta β 和 R \mathbf{R} R 的 ± \pm ± 符号。接着,可以求得平移向量
t = β [ a ˉ 4 , a ˉ 8 , a ˉ 12 ] T \mathbf{t}=\beta\left[\bar{a}_{4}, \bar{a}_{8}, \bar{a}_{12}\right]^{T} t=β[aˉ4,aˉ8,aˉ12]T
《视觉14讲》原文:
t矩阵一共有12维,因此最少通过6对匹配的3D-2D特征点即可实现变换矩阵T的线性求解,这种方法就是DLT 直接线性变换法。 当匹配点大于6个时,使用SVD分解对超定方程求最小二乘解。如上述步骤所示。
鉴于在DLT求解过程中,我们忽略了R矩阵的正交约束,用DLT求出的结果不一定满足这个约束,是一个一般性的矩阵,平移向量比较好办,它属于三维向量空间。但是旋转矩阵属于SO(3)旋转流形,必须针对 [ R ∣ t ] [\mathbf{R} \mid \mathbf{t}] [R∣t]左边3X3的矩阵块,寻找一个最好的旋转矩阵对他进行近似,可以借助QR分解,如下:
R ← ( R R T ) − 1 2 R R\leftarrow(RR^{T})^{-\frac{1}{2}}R R←(RRT)−21R
这就相当于把结果从矩阵空间重新投影到了SE(3)流形上,转换成旋转和平移两部分。
再次说明:通常SLAM问题内参K都是已知的,如果即使未知也可以使用PnP去估计K,R,t三个量。然而由于未知量增多,效果会差一些。
background:
在ICP 问题中,就业涉及到SVD分解球旋转矩阵的问题,这里也遇到了类似的问题,为什么 R = ± U V T . \mathbf{R}=\pm \mathbf{U V}^{T} . R=±UVT.就是最优的?
计算位移
将(1)式中的R设为不变量对进行求导,同时令 F ( t ) = ( R , t ) F(t)=(R, t) F(t)=(R,t) ,对 F ( t ) F(t) F(t) 求导可得:
0 = ∂ F ∂ t = ∑ i = 1 n 2 w i ( R p i + t − q i ) = 0=\frac{\partial F}{\partial \mathbf{t}}=\sum_{i=1}^{n} 2 w_{i}\left(R \mathbf{p}_{i}+\mathbf{t}-\mathbf{q}_{i}\right)= 0=∂t∂F=∑i=1n2wi(Rpi+t−qi)=
= 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 \mathrm{t}\left(\sum_{i=1}^{n} w_{i}\right)+2 R\left(\sum_{i=1}^{n} w_{i} \mathbf{p}_{i}\right)-2 \sum_{i=1}^{n} w_{i} \mathbf{q}_{i} . =2t(∑i=1nwi)+2R(∑i=1nwipi)−2∑i=1nwiqi.
p ‾ = ∑ i = 1 n w i p i ∑ i = 1 n w i \overline{\mathbf{p}}=\frac{\sum_{i=1}^{n} w_{i} \mathbf{p}_{i}}{\sum_{i=1}^{n} w_{i}} p=∑i=1nwi∑i=1nwipi ,
q ‾ = ∑ i = 1 n w i q i ∑ i = 1 n w i \quad \overline{\mathbf{q}}=\frac{\sum_{i=1}^{n} w_{i} \mathbf{q}_{i}}{\sum_{i=1}^{n} w_{i}} q=∑i=1nwi∑i=1nwiqi
t = q ‾ − R p ‾ \mathbf{t}=\overline{\mathbf{q}}-R \overline{\mathbf{p}} t=q−Rp
在将(4)式代入(1)式可得:
∑ 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 x i : = p i − p ‾ , y i : = q i − q ‾ . — — 去 质 心 坐 标 R = argmin R ∑ i = 1 n w i ∥ R x i − y i ∥ 2 \begin{aligned} \sum_{i=1}^{n} w_{i}\left\|\left(R \mathbf{p}_{i}+\mathbf{t}\right)-\mathbf{q}_{i}\right\|^{2} &=\sum_{i=1}^{n} w_{i}\left\|R \mathbf{p}_{i}+\overline{\mathbf{q}}-R \overline{\mathbf{p}}-\mathbf{q}_{i}\right\|^{2}=\\ &=\sum_{i=1}^{n} w_{i}\left\|R\left(\mathbf{p}_{i}-\overline{\mathbf{p}}\right)-\left(\mathbf{q}_{i}-\overline{\mathbf{q}}\right)\right\|^{2} \\ \mathbf{x}_{i}:=\mathbf{p}_{i}-\overline{\mathbf{p}}, \quad \mathbf{y}_{i}:=& \mathbf{q}_{i}-\overline{\mathbf{q}} . —— 去质心坐标\\ R=\underset{R}{\operatorname{argmin}} \sum_{i=1}^{n} w_{i}\left\|R \mathbf{x}_{i}-\mathbf{y}_{i}\right\|^{2} \end{aligned} i=1∑nwi∥(Rpi+t)−qi∥2xi:=pi−p,yi:=R=Rargmini=1∑nwi∥Rxi−yi∥2=i=1∑nwi∥Rpi+q−Rp−qi∥2==i=1∑nwi∥R(pi−p)−(qi−q)∥2qi−q.——去质心坐标
从上可以看出,问题经过转化后变得更加简单,对原来的点集做一个减中心点的预处理,然后再求两个最小二乘的旋转量。
计算旋转量
将(8)式用矩阵表示形式展开,可得:
∥ 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 . \begin{aligned} \left\|R \mathbf{x}_{i}-\mathbf{y}_{i}\right\|^{2} &=\left(R \mathbf{x}_{i}-\mathbf{y}_{i}\right)^{T}\left(R \mathbf{x}_{i}-\mathbf{y}_{i}\right)=\left(\mathbf{x}_{i}^{T} R^{T}-\mathbf{y}_{i}^{T}\right)\left(R \mathbf{x}_{i}-\mathbf{y}_{i}\right)=\\ &=\mathbf{x}_{i}^{T} R^{T} R \mathbf{x}_{i}-\mathbf{y}_{i}^{T} R \mathbf{x}_{i}-\mathbf{x}_{i}^{T} R^{T} \mathbf{y}_{i}+\mathbf{y}_{i}^{T} \mathbf{y}_{i}=\\ &=\mathbf{x}_{i}^{T} \mathbf{x}_{i}-\mathbf{y}_{i}^{T} R \mathbf{x}_{i}-\mathbf{x}_{i}^{T} R^{T} \mathbf{y}_{i}+\mathbf{y}_{i}^{T} \mathbf{y}_{i} . \end{aligned} ∥Rxi−yi∥2=(Rxi−yi)T(Rxi−yi)=(xiTRT−yiT)(Rxi−yi)==xiTRTRxi−yiTRxi−xiTRTyi+yiTyi==xiTxi−yiTRxi−xiTRTyi+yiTyi.
(由于旋转矩阵 R R R 是正交矩阵,因而有 R R ⊤ = 1 R R^{\top}=1 RR⊤=1 )。同时可以知道上式中 y ⊤ R x x ⊤ y^{\top} R x x^{\top} y⊤Rxx⊤ 和 x i ⊤ R ⊤ y x i^{\top} R^{\top} y xi⊤R⊤y 都是标量,而一个标量的转置仍然等于标量本身,因而有:
x i T R T y i = ( x i T R T y i ) T = y i T R x i ∥ R x i − y i ∥ 2 = x i T x i − 2 y i T R x i + y i T y i \begin{aligned} &\mathbf{x}_{i}^{T} R^{T} \mathbf{y}_{i}=\left(\mathbf{x}_{i}^{T} R^{T} \mathbf{y}_{i}\right)^{T}=\mathbf{y}_{i}^{T} R \mathbf{x}_{i} \\ &\left\|R \mathbf{x}_{i}-\mathbf{y}_{i}\right\|^{2}=\mathbf{x}_{i}^{T} \mathbf{x}_{i}-2 \mathbf{y}_{i}^{T} R \mathbf{x}_{i}+\mathbf{y}_{i}^{T} \mathbf{y}_{i} \end{aligned} xiTRTyi=(xiTRTyi)T=yiTRxi∥Rxi−yi∥2=xiTxi−2yiTRxi+yiTyi
现在变成要求(11)式的最小值,而该式中只有一项与R有关,其他两项(xi x i x i xi i和 y i ⊤ y i y i^{\top} y i yi⊤yi 都是常量,所以问题转换为求其中一项可变量的最小值,即
argmin R ( − 2 ∑ i = 1 n w i y i T R x i ) . argmin R ( − 2 ∑ i = 1 n w i y i T R x i ) = argmax R ∑ i = 1 n w i y i T R x i . \begin{aligned} &\underset{R}{\operatorname{argmin}}\left(-2 \sum_{i=1}^{n} w_{i} \mathbf{y}_{i}^{T} R \mathbf{x}_{i}\right) . \\ &\underset{R}{\operatorname{argmin}}\left(-2 \sum_{i=1}^{n} w_{i} \mathbf{y}_{i}^{T} R \mathbf{x}_{i}\right)=\underset{R}{\operatorname{argmax}} \sum_{i=1}^{n} w_{i} \mathbf{y}_{i}^{T} R \mathbf{x}_{i} . \end{aligned} Rargmin(−2i=1∑nwiyiTRxi).Rargmin(−2i=1∑nwiyiTRxi)=Rargmaxi=1∑nwiyiTRxi.
∑ i = 1 n w i y i T R x i = tr ( W Y T R X ) \sum_{i=1}^{n} w_{i} \mathbf{y}_{i}^{T} R \mathbf{x}_{i}=\operatorname{tr}\left(W Y^{T} R X\right) ∑i=1nwiyiTRxi=tr(WYTRX)
上式中的转换是将标量累加转换成矩阵相乘,其中W是 n × n n \times n n×n 的对角矩阵,X和Y是 3 × n 3 \times n 3×n 的矩阵,这些矩阵相乘后的迹就等于等式左边的值。同时,对于 矩阵的迹,有如下变换关系:
tr ( A B ) = tr ( B A ) \operatorname{tr}(A B)=\operatorname{tr}(B A) tr(AB)=tr(BA)
t r ( W Y T R X ) = tr ( ( W Y T ) ( R X ) ) = tr ( R X W Y T ) t r\left(W Y^{T} R X\right)=\operatorname{tr}\left(\left(W Y^{T}\right)(R X)\right)=\operatorname{tr}\left(R X W Y^{T}\right) tr(WYTRX)=tr((WYT)(RX))=tr(RXWYT)
S = X X V Y ⊤ , svd ( S ) = = ⇒ S = U Σ V T . \mathrm{S}=X \mathrm{XV} Y^{\top}, \operatorname{svd}(\mathrm{S})==\Rightarrow S=U \Sigma V^{T} . S=XXVY⊤,svd(S)==⇒S=UΣVT.
tr ( R X W Y T ) = tr ( R S ) = tr ( R U Σ V T ) = tr ( Σ V T R U ) \operatorname{tr}\left(R X W Y^{T}\right)=\operatorname{tr}(R S)=\operatorname{tr}\left(R U \Sigma V^{T}\right)=\operatorname{tr}\left(\Sigma V^{T} R U\right) tr(RXWYT)=tr(RS)=tr(RUΣVT)=tr(ΣVTRU)
(18)式中最后一步的变换也用到了(15)式的性质。由于 U 、 R 、 V U 、 R 、 V U、R、V 都是正交矩阵,那么 M = V ⊤ R U M=V^{\top} R U M=V⊤RU 也是正交矩阵。
1 = m j T m j = ∑ i = 1 d m i j 2 ⇒ m i j ≤ 1 ⇒ ∣ m i j ∣ < 1 1=\mathbf{m}_{j}^{T} \mathbf{m}_{j}=\sum_{i=1}^{d} m_{i j}^{2} \Rightarrow m_{i j} \leq 1 \Rightarrow\left|m_{i j}\right|<1 1=mjTmj=i=1∑dmij2⇒mij≤1⇒∣mij∣<1
tr ( Σ 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 \operatorname{tr}(\Sigma M)=\left(\begin{array}{lllll} \sigma_{1} & & & & \\ & \sigma_{2} & & \\ & & \ddots & \\ & & & \sigma_{d} \end{array}\right)\left(\begin{array}{ccccc} m_{11} & m_{12} & \ldots & m_{1 d} \\ m_{21} & m_{22} & \ldots & m_{2 d} \\ \vdots & \vdots & \vdots & \vdots \\ m_{d 1} & m_{d 2} & \ldots & m_{d d} \end{array}\right)=\sum_{i=1}^{d} \sigma_{i} m_{i i} \leq \sum_{i=1}^{d} \sigma_{i} tr(ΣM)=⎝⎜⎜⎛σ1σ2⋱σd⎠⎟⎟⎞⎝⎜⎜⎜⎛m11m21⋮md1m12m22⋮md2……⋮…m1dm2d⋮mdd⎠⎟⎟⎟⎞=i=1∑dσimii≤i=1∑dσi
由上述两式可以知道,要求最大迹,就必须使得 m i i m_{ii} mii的值等于1,而M又是正交矩阵,那么M就必然是单位矩阵,即有
I = M = V ⊤ R U ⇒ V = R U ⇒ R = V U T I=M=V^{\top} R U \Rightarrow V=R U \Rightarrow R=V U^{T} I=M=V⊤RU⇒V=RU⇒R=VUT
该段证明来自:链接: link.