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=[xyz1]\mathbf{c}=\left[\begin{array}{l}x \\ y \\ z \\ 1\end{array}\right]c=⎣⎢⎢⎡​xyz1​⎦⎥⎥⎤​
对应的2D投影点在图像坐标系下的齐次坐标是:
u=[uv1]\mathbf{u}=\left[\begin{array}{l}u \\ v \\ 1\end{array}\right]u=⎣⎡​uv1​⎦⎤​
相机内参一般是已知的 slam’问题里
K=[fxcxfycy1]\mathbf{K}=\left[\begin{array}{ccc}f_{x} & & c_{x} \\ & f_{y} & c_{y} \\ & & 1\end{array}\right]K=⎣⎡​fx​​fy​​cx​cy​1​⎦⎤​
那么3D点到2D点投影可表示为
λ[uv1]=[fxcxfycy1][R∣t][xyz1]\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​⎦⎤​=⎣⎡​fx​​fy​​cx​cy​1​⎦⎤​[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=[a1,⋯,a12]T\mathbf{x}=\left[a_{1}, \cdots, a_{12}\right]^{T}x=[a1​,⋯,a12​]T来考虑计算。
这样,(1)式变化为:
λ=[uv1]=[fxcxfycy1][a1a2a3a4a5a6a7a8a9a10a11a12][xyz1]\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​⎦⎤​=⎣⎡​fx​​fy​​cx​cy​1​⎦⎤​⎣⎡​a1​a5​a9​​a2​a6​a10​​a3​a7​a11​​a4​a8​a12​​⎦⎤​⎣⎢⎢⎡​xyz1​⎦⎥⎥⎤​ (2)
先消去第三个等式,也就是消去scale factor尺度因子λ\lambdaλ ,
有:
{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\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.{xfx​a1​+xcx​a9​+yfx​a2​+ycx​a10​+zfx​a3​+zcx​a11​+fx​a4​+cx​a12​−uxa9​−uya10​−uza11​−ua12​=0xfy​a5​+xcy​a9​+yfy​a6​+ycy​a10​+zfy​a7​+zcy​a11​+fy​a8​+cy​a12​−vxa9​−vya10​−vza11​−va12​=0​
写成矩阵形式如下:
[xfxyfxzfxfx0000xcx−uxycx−uyzcx−uzcx−u0000xfyyfyzfyfyxcy−vxycy−vyzcy−vzcy−v][a1a2⋮a12]=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[xfx​0​yfx​0​zfx​0​fx​0​0xfy​​0yfy​​0zfy​​0fy​​xcx​−uxxcy​−vx​ycx​−uyycy​−vy​zcx​−uzzcy​−vz​cx​−ucy​−v​]⎣⎢⎢⎢⎡​a1​a2​⋮a12​​⎦⎥⎥⎥⎤​=0

高翔的14讲 用了简化表示
定义a=[a1a2a3a4a5a6a7a8a9a10a11a12]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=[a1​a5​a9​​a2​a6​a10​​a3​a7​a11​​a4​a8​a12​​]的三个行向量为:
t⃗1=(a1,a2,a3,a4)T\vec t_{1}=(a_1, a_2,a_3,a_4)^{T}t1​=(a1​,a2​,a3​,a4​)T
t⃗2=(a5,a6,a7,a8)T\vec t_{2}=(a_5, a_6,a_7,a_8)^{T}t2​=(a5​,a6​,a7​,a8​)T
t⃗3=(a9,a10,a11,a12)T\vec t_{3}=(a_9, a_{10},a_{11},a_{12})^{T}t3​=(a9​,a10​,a11​,a12​)T
于是又有:
t⃗1TP−t⃗3TPu1=0,\vec t_{1}^{T}P-\vec t_{3}^{T}Pu_{1}=0 ,t1T​P−t3T​Pu1​=0,
t⃗2TP−t⃗3TPv1=0.\vec t_{2}^{T}P-\vec t_{3}^{T}Pv_{1}=0 .t2T​P−t3T​Pv1​=0.

综上所述,每个特征点(3D-2D坐标对)提供了两个方程,也就是两个关于t的线性约束。
假设一共有N个特征点,N≥6N \geq 6N≥6 时, 产生一个方程组:

Ax=0\mathrm{Ax}=\mathbf{0} Ax=0
其中, A\mathbf{A}A 的大小为 2n×122 n \times 122n×12 。这个方程无法求出精确解,但是可以获得一个 ∣x∣=1|\mathbf{x}|=1∣x∣=1 约束 下的最小二乘解 argmin⁡∥Ax∥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ˉ1aˉ2aˉ3aˉ4aˉ5aˉ6aˉ7aˉ8aˉ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ˉ1​aˉ4​aˉ7​​aˉ2​aˉ5​aˉ8​​aˉ3​aˉ6​aˉ9​​⎦⎤​
为带有尺度的正交矩阵,为求最优的旋转矩阵,将其进行SVD分解
[UΣV]=SVD⁡(R‾)[\mathbf{U} \mathbf{\Sigma} \mathbf{V}]=\operatorname{SVD}(\overline{\mathbf{R}}) [UΣV]=SVD(R)

最优的旋转矩阵即为
R=±UVT(为什么这样?后续证明之)\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:β(xaˉ9+yaˉ10+zaˉ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←(RRT)−12RR\leftarrow(RR^{T})^{-\frac{1}{2}}RR←(RRT)−21​R
这就相当于把结果从矩阵空间重新投影到了SE(3)流形上,转换成旋转和平移两部分。

再次说明:通常SLAM问题内参K都是已知的,如果即使未知也可以使用PnP去估计K,R,t三个量。然而由于未知量增多,效果会差一些。

证明的补充:

background:
在ICP 问题中,就业涉及到SVD分解球旋转矩阵的问题,这里也遇到了类似的问题,为什么R=±UVT.\mathbf{R}=\pm \mathbf{U V}^{T} .R=±UVT.就是最优的?

  • 问题描述 之间的刚性转置信息,可以知道这其实是一个最小二乘求优问题,问题可以用如下计算式描述:
    (R,t)=armgin⁡R,t∑i=1nwi∥(Rpi+t)−qi∥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,tarmgin​i=1∑n​wi​∥(Rpi​+t)−qi​∥2, 
    其中 wi>0w_{i}>0wi​>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=1n2wi(Rpi+t−qi)=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=1n​2wi​(Rpi​+t−qi​)=

=2t(∑i=1nwi)+2R(∑i=1nwipi)−2∑i=1nwiqi.=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=1n​wi​)+2R(∑i=1n​wi​pi​)−2∑i=1n​wi​qi​.

p‾=∑i=1nwipi∑i=1nwi\overline{\mathbf{p}}=\frac{\sum_{i=1}^{n} w_{i} \mathbf{p}_{i}}{\sum_{i=1}^{n} w_{i}}p​=∑i=1n​wi​∑i=1n​wi​pi​​ ,

q‾=∑i=1nwiqi∑i=1nwi\quad \overline{\mathbf{q}}=\frac{\sum_{i=1}^{n} w_{i} \mathbf{q}_{i}}{\sum_{i=1}^{n} w_{i}}q​=∑i=1n​wi​∑i=1n​wi​qi​​

t=q‾−Rp‾\mathbf{t}=\overline{\mathbf{q}}-R \overline{\mathbf{p}}t=q​−Rp​
在将(4)式代入(1)式可得:
∑i=1nwi∥(Rpi+t)−qi∥2=∑i=1nwi∥Rpi+q‾−Rp‾−qi∥2==∑i=1nwi∥R(pi−p‾)−(qi−q‾)∥2xi:=pi−p‾,yi:=qi−q‾.——去质心坐标R=argmin⁡R∑i=1nwi∥Rxi−yi∥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∑n​wi​∥(Rpi​+t)−qi​∥2xi​:=pi​−p​,yi​:=R=Rargmin​i=1∑n​wi​∥Rxi​−yi​∥2​=i=1∑n​wi​∥Rpi​+q​−Rp​−qi​∥2==i=1∑n​wi​∥R(pi​−p​)−(qi​−q​)∥2qi​−q​.——去质心坐标​
从上可以看出,问题经过转化后变得更加简单,对原来的点集做一个减中心点的预处理,然后再求两个最小二乘的旋转量。

计算旋转量
将(8)式用矩阵表示形式展开,可得:
∥Rxi−yi∥2=(Rxi−yi)T(Rxi−yi)=(xiTRT−yiT)(Rxi−yi)==xiTRTRxi−yiTRxi−xiTRTyi+yiTyi==xiTxi−yiTRxi−xiTRTyi+yiTyi.\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​)=(xiT​RT−yiT​)(Rxi​−yi​)==xiT​RTRxi​−yiT​Rxi​−xiT​RTyi​+yiT​yi​==xiT​xi​−yiT​Rxi​−xiT​RTyi​+yiT​yi​.​
(由于旋转矩阵 RRR 是正交矩阵,因而有 RR⊤=1R R^{\top}=1RR⊤=1 )。同时可以知道上式中 y⊤Rxx⊤y^{\top} R x x^{\top}y⊤Rxx⊤ 和 xi⊤R⊤yx i^{\top} R^{\top} yxi⊤R⊤y 都是标量,而一个标量的转置仍然等于标量本身,因而有:
xiTRTyi=(xiTRTyi)T=yiTRxi∥Rxi−yi∥2=xiTxi−2yiTRxi+yiTyi\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} ​xiT​RTyi​=(xiT​RTyi​)T=yiT​Rxi​∥Rxi​−yi​∥2=xiT​xi​−2yiT​Rxi​+yiT​yi​​
现在变成要求(11)式的最小值,而该式中只有一项与R有关,其他两项(xi xix ixi i和 yi⊤yiy i^{\top} y iyi⊤yi 都是常量,所以问题转换为求其中一项可变量的最小值,即
argmin⁡R(−2∑i=1nwiyiTRxi).argmin⁡R(−2∑i=1nwiyiTRxi)=argmax⁡R∑i=1nwiyiTRxi.\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∑n​wi​yiT​Rxi​).Rargmin​(−2i=1∑n​wi​yiT​Rxi​)=Rargmax​i=1∑n​wi​yiT​Rxi​.​
∑i=1nwiyiTRxi=tr⁡(WYTRX)\sum_{i=1}^{n} w_{i} \mathbf{y}_{i}^{T} R \mathbf{x}_{i}=\operatorname{tr}\left(W Y^{T} R X\right)∑i=1n​wi​yiT​Rxi​=tr(WYTRX)

上式中的转换是将标量累加转换成矩阵相乘,其中W是 n×nn \times nn×n 的对角矩阵,X和Y是 3×n3 \times n3×n 的矩阵,这些矩阵相乘后的迹就等于等式左边的值。同时,对于 矩阵的迹,有如下变换关系:
tr⁡(AB)=tr⁡(BA)\operatorname{tr}(A B)=\operatorname{tr}(B A) tr(AB)=tr(BA)
tr(WYTRX)=tr⁡((WYT)(RX))=tr⁡(RXWYT)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=XXVY⊤,svd⁡(S)==⇒S=UΣVT.\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⁡(RXWYT)=tr⁡(RS)=tr⁡(RUΣVT)=tr⁡(ΣVTRU)\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、VU 、 R 、 VU、R、V 都是正交矩阵,那么 M=V⊤RUM=V^{\top} R UM=V⊤RU 也是正交矩阵。
1=mjTmj=∑i=1dmij2⇒mij≤1⇒∣mij∣<11=\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=mjT​mj​=i=1∑d​mij2​⇒mij​≤1⇒∣mij​∣<1
tr⁡(ΣM)=(σ1σ2⋱σd)(m11m12…m1dm21m22…m2d⋮⋮⋮⋮md1md2…mdd)=∑i=1dσimii≤∑i=1dσ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​​⎠⎟⎟⎞​⎝⎜⎜⎜⎛​m11​m21​⋮md1​​m12​m22​⋮md2​​……⋮…​m1d​m2d​⋮mdd​​⎠⎟⎟⎟⎞​=i=1∑d​σi​mii​≤i=1∑d​σi​
由上述两式可以知道,要求最大迹,就必须使得miim_{ii}mii​的值等于1,而M又是正交矩阵,那么M就必然是单位矩阵,即有
I=M=V⊤RU⇒V=RU⇒R=VUTI=M=V^{\top} R U \Rightarrow V=R U \Rightarrow R=V U^{T}I=M=V⊤RU⇒V=RU⇒R=VUT

该段证明来自:链接: link.

EPnP

DLT求解PnP问题相关推荐

  1. EPnP:一种复杂度为O(N)的求解PnP问题的方法

    作者:董岩 Date:2020-02-16 来源:EPnP:一种复杂度为O(N)的求解PnP问题的方法

  2. 视觉SLAM笔记(37) 求解 PnP

    视觉SLAM笔记(37) 求解 PnP 1. 使用 EPnP 求解位姿 2. 使用 BA 优化 2.1 李代数位姿 2.2 空间点位置 2.3 投影方程边 2.4 Bundle Adjustment ...

  3. 视觉SLAM实践入门——(15)使用g2o求解PnP

    使用g2o求解PnP的步骤: 1.定义顶点和边的数据类型 2.提取ORB特征.匹配点对 3.构造顶点.边 4.定义.设置求解器 5.调用求解器的 initializeOptimization 函数求解 ...

  4. 最小化重投影误差(BA法)求解PnP

    1.引言 PnP算法是什么.用途以及部分求解方法我在PnP算法详解(超详细公式推导)中介绍过,但在那篇文章中基于基于优化的PnP求解方法我没有讲,因为我觉得这个方法比较重要,涉及一些李群李代数求导和非 ...

  5. SLAM十四讲——Pnp求解之DLT

    学习目标 学习PnP求解相机位姿,学习PnP的求解之直接线性变换DLT 目录 PnP 直接线性变换DLT 一.PnP 1.PnP的概念 PnP(Perspective-n-Point)是求解3D到2D ...

  6. 3D-2D:PnP算法原理

    3D-2D:PnP算法原理 1.问题背景-- 什么是PnP问题 ? 2.PnP问题的求解方法 2.1 P3P 2.1.1 算法的实际理解 2.1.2 算法的数学推导 2.1.3 算法的缺陷 2.2 直 ...

  7. PNP问题-位姿估计方法梳理(pose estimation)

    tags: - 单目视觉 - 位姿测量 目标3D精确模型已知(建立2D-3D对应关系): 点特征 P3P问题 基于针孔成像模型 Gao的方法(opencv emgucv) Kneip 的 P3P 算法 ...

  8. PNP问题学习笔记1

    PNP问题简介 PNP(Perspective N Points)问题首先于1981年由Fishler和Bolles提出,类似的问题可以追溯到1841年摄影测量学领域.所谓PNP问题,就是指如下的物体 ...

  9. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-PnP和实践

      专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记- ...

最新文章

  1. CF1173A 【Nauuo and Votes】题解
  2. linq学习笔记(2):DataContext
  3. Lombok 的爱恨情仇
  4. 彻底理解Spring AOP
  5. java判断文件或者文件夹
  6. Build failed in step 'Installing CLooG for host'
  7. eclipse-连接TFS错误 the server to respond with a valid http response解决方法
  8. Python学习入门2:Python学习路线(课程大纲+Python视频教程+下载地址)
  9. Exchange2007服务器角色
  10. oracle ipad函数(从左边填充)
  11. 软件测试理论、方法及流程
  12. 科普下Tier1,Tier2,Tier3,Tier4 T1, T2, T3, T4
  13. 信息系统项目管理师考试后多久出成绩?
  14. python图像处理:核磁共振图像(3D)的缩放
  15. 机器学习和深度学习资料汇总【02】
  16. win10隐藏任务栏_如何隐藏或删除Windows 10任务栏图标
  17. 骁龙 820 车用处理器
  18. 94 年出生,她们如今都是 985 高校博士生导师
  19. Kubernetes 一篇文章教你yum快速搭建K8s
  20. 大数据如何学习,告诉你正确的学习姿势

热门文章

  1. Java开发的模拟双色球抽奖程序 功能非常齐全 完整源码
  2. 深度学习与计算机视觉 看这一篇就够了
  3. 用cadence的spectre仿真射频ic功率放大器(PA)各种指标
  4. 服务器容易维修吗,服务器维修简单吗
  5. OpenSees 源码编译过程
  6. 情人节程序员送礼攻略!
  7. 唯一索引(UNIQUE) 聚集索引(CLUSTERED) 非聚集索引(NONCLUSTERED)
  8. 复旦大学21年计算机考研情况 复旦计算机专硕招319人!神秘工研院不保护一志愿!
  9. 什么叫“回归”——“回归”名词的由来回归与拟合、分类的区别 回归分析
  10. php html5 游戏,分享一款HTML5小游戏绵羊快跑