pnp算法

pnp算法是解决什么问题的?

PnP(Perspective-n-Point)是求解 3D 到 2D 点对运动的方法。它描述了当我们知道
n 个 3D 空间点以及它们的投影位置时,如何估计相机所在的位姿。2D-2D点对,就用对极几何方法求解相机姿态;3D-3D 就是ICP。当orb重定位时候,就是pnp算姿态,用的是EPNP方法。

pnp算法都有哪些方法,各有什么优劣?

pnp最少需要3对点就可以计算出结果。

例如用三对点估计位姿的 P3P[45],直接线性变换(DLT),EPnP(Efficient PnP) [46], UPnP[47] 等等)。此外,还能用非线性优化的方式,构建最
小二乘问题并迭代求解,也就是万金油式的 Bundle Adjustment。

1. DLT 算法

什么是DLT直接线性变换?意思是,忽略了带求解矩阵的内在性质,单纯的看成是一个向量来求解 。例如,求解 本质矩阵以及单应矩阵。

已知一个3D-2D匹配点对,根据针孔模型,可以得到 Ax=0 A 是 2*12,x 是 [R, t] 中的 12 个元素。所以,一对点提供两个方程,一共是12个未知数,所以最少6对点。

当大于6对点时候,就变成超定方程,SVD 最小二乘解。

以上,参考 slam14。

如果内参未知,那么我们也能用 PnP 去估计 K; R; t 三个量。然而由于未知量的增多,效果会差一些。如下连接:

https://zhuanlan.zhihu.com/p/76047709

2. Epnp

单独写一篇

你可能感兴趣的:(slam基础)