PnP问题解法
问题描述
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 等。
DLT解法 (直接线性变换)
理论推导部分
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.就是最优的?
- 问题描述 之间的刚性转置信息,可以知道这其实是一个最小二乘求优问题,问题可以用如下计算式描述:
( R , t ) = armgin R , t ∑ i = 1 n w i ∥ ( R p i + t ) − q i ∥ 2 , (R, \mathbf{t})=\underset{R, \mathbf{t}}{\operatorname{armgin}} \sum_{i=1}^{n} w_{i}\left\|\left(R \mathbf{p}_{i}+\mathbf{t}\right)-\mathbf{q}_{i}\right\|^{2} \text {, } (R,t)=R,tarmgini=1∑nwi∥(Rpi+t)−qi∥2,
其中 w i > 0 w_{i}>0 wi>0 ,是点集中每个点对的权重。
要求(1)式中的最小值,即为求式中对 R \mathrm{R} R 和求导数为 0 的解。
计算位移
将(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.