一文详解PnP算法原理

PnP(Perspective-n-Point)问题的几何结构如图1所示,给定3D点的坐标、对应2D点坐标以及内参矩阵,求解相机的位姿。

数学语言描述如下:

一文详解PnP算法原理_第1张图片

一文详解PnP算法原理_第2张图片

图1.PnP几何结构

1.直接线性变换法(Direct Linear Transform,DLT)

假设:摄像机已经校准过了。

已知:

一文详解PnP算法原理_第3张图片

求解相机的外参:R、t

透视投影模型为:

一文详解PnP算法原理_第4张图片

每组3D-2D匹配点对应两个方程,一共有12个未知数,至少需要6组匹配点。

设有N组匹配点,则:

一文详解PnP算法原理_第5张图片

上式写成矩阵形式:

AF=0

当N=6时,可以直接求解线性方程组。

一文详解PnP算法原理_第6张图片

因此, 旋转矩阵, 平移矩阵求得:

一文详解PnP算法原理_第7张图片

2.P3P

P3P问题是已知三个3D目标点与其2D投影之间的对应关系,来确定标定相机的位姿问题。

一文详解PnP算法原理_第8张图片

一文详解PnP算法原理_第9张图片

图2.两点约束

一文详解PnP算法原理_第10张图片

一文详解PnP算法原理_第11张图片

注:直接线性变换法,只考虑了线性意义下的最优解,没有考虑几何约束。而P3P考虑了三角约束,给出三角约束意义下的最优解

2.1 Zero Structure for the P3P Equation System

文章[1]:Complete Solution Classification for the Perspective-Three-Point Problem

一文详解PnP算法原理_第12张图片

图3.三点约束

对于公式(16)的变量有一些真实的约束:

一文详解PnP算法原理_第13张图片

一文详解PnP算法原理_第14张图片

图4.三点约束--重定义边长

公式(17)消去C、v,得ES:

一文详解PnP算法原理_第15张图片

2.2 PST

文章[2]:A Stable Direct Solution of Perspective-Three-Point Problem

使用相似三角形,利用几何约束来减少未知参数的个数,把P3P方程组转化为四次方程,该称为透视相似三角形方法(Perspective Similar Triangle ,PST)。

(1)P3P问题转为PST问题

一文详解PnP算法原理_第16张图片

一文详解PnP算法原理_第17张图片

图5.P3P几何结构

(2)PST的求解

一文详解PnP算法原理_第18张图片

一文详解PnP算法原理_第19张图片

图6.PST几何结构

约束1:相似三角形对应边成比例

一文详解PnP算法原理_第20张图片

所以:

一文详解PnP算法原理_第21张图片

一文详解PnP算法原理_第22张图片

一文详解PnP算法原理_第23张图片

一文详解PnP算法原理_第24张图片

(3)PST多解和缺解问题

由PST(perspective similar Triangle)求解,可得方程组等效转换为四次多项式

16b0328b98f05c07f898d35502727b1b.png

多解问题:

由于存在多组解,相机位姿不能从3点集唯一确定的。解的个数直接对应于四次多项式实根的个数。要得到唯一的解,至少还应引入一点,构建2个三角形,进行求解。另一种方法是RANSAC算法,该算法将点集划分为3个点子集,检查这些子集的一致性。

RANSAC算法参考文献:Random Sample  Consensus: A  Paradigm for Model  Fitting with  Apphcatlons to Image  Analysis and  Automated  Cartography

缺解问题:

938da51ca202928b2b092892a25eb085.png

缺解问题是由P3P的固有结构决定的,其他P3P方法,如迭代解法、几何解法和分类法,也有同样的问题。

一文详解PnP算法原理_第25张图片

24084166033d6e53d302e7c7adc60af5.png

3.RPnP

文章[3]:A Robust O(n) Solution to the Perspective-n-Point Problem

一文详解PnP算法原理_第26张图片

下面来看一下,如何建立新的正交坐标系,以及如何求解正交坐标系到相机坐标系之间[R T]。

3.1确定旋转轴

一文详解PnP算法原理_第27张图片

一文详解PnP算法原理_第28张图片

当确定旋转轴时,只需求解剩余的旋转和三个平移参数,减少了未知变量的数量,来提高方程组的数值精度。

3.2求解旋转角和平移矢量的方程

相机坐标系与新坐标系绕之间的旋转矩阵:

一文详解PnP算法原理_第29张图片

一文详解PnP算法原理_第30张图片

其中,

一文详解PnP算法原理_第31张图片

3.3获取相机的位姿

f621449c632508d83996f194bbde5d67.png

再获取到相机坐标系与新坐标系绕之间的旋转和平移矩阵,进而可直接相机坐标系与世界坐标系绕之间旋转和平移矩阵,即相机的位姿。

引文:

[1] Gao, X. S. , et al. "Complete solution classification for the perspective-three-point problem." IEEE Transactions on Pattern Analysis & Machine Intelligence 25.8(2003):930-943.

[2] Li, S. , and  X. Chi . "A Stable Direct Solution of Perspective-Three-Point Problem." International Journal of Pattern Recognition and Artificial Intelligence 25.5(2011):627-642.

[3] Li, S. ,  X. Chi , and  X. Ming . "A Robust O(n) Solution to the Perspective-n-Point Problem." IEEE Transactions on Pattern Analysis and Machine Intelligence (2012).

[4]W. Press, S. Teukolsky, W. Vetterling, and B. Flannery,Numerical Recipes:The Art of Scientific Computing.Cambridge Univ. Press, 2007.

[5]S. Umeyama, “Least-Squares Estimation of Transformation Parameters between Two Point Patterns,”IEEE Trans. Pattern Analysis and Machine Intelligence,vol. 13, no. 4, pp. 376-380, Apr. 1991.

备注:作者也是我们「3D视觉从入门到精通」知识特邀嘉宾:一个超干货的3D视觉学习社区

原创征稿

初衷
3D视觉工坊是基于优质原创文章的自媒体平台,创始人和合伙人致力于发布3D视觉领域最干货的文章,然而少数人的力量毕竟有限,知识盲区和领域漏洞依然存在。为了能够更好地展示领域知识,现向全体粉丝以及阅读者征稿,如果您的文章是3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、硬件选型、求职分享等方向,欢迎砸稿过来~文章内容可以为paper reading、资源总结、项目实战总结等形式,公众号将会对每一个投稿者提供相应的稿费,我们支持知识有价!

投稿方式

邮箱:[email protected] 或者加下方的小助理微信,另请注明原创投稿。

一文详解PnP算法原理_第32张图片

▲长按加微信联系

一文详解PnP算法原理_第33张图片

▲长按关注公众号

你可能感兴趣的:(算法,人工智能,计算机视觉,机器学习,python)