简介
PnP(Perspective-n-Point)描述了当我们已知n个世界坐标系下的3D空间点以及它们的2D归一化相机坐标系下的坐标时,如何估计相机位姿的方法。通常最少需要4对3D-2D点对(其中之一用于验证结果),就可以解出PnP问题。尤其是在双目或RGB-D的视觉里程计中,点的空间坐标可以由 s K − 1 x sK^{-1}x sK−1x直接求出, s s s为像素点的深度值,即可直接使用PnP估计相机运动。
PnP问题解法有很多,线性方法有直接线性变换法、P3P、EPnP、UPnP等,还可以采用非线性优化的方法、构建最小二乘问题迭代求解,最常用的是BA调整(Bundle Adjustment)。OpenCV中对上述多数方法都进行了集成,详情可见:solvePnP()。
PnP只是求解相机位姿的方法,求解出来的位姿均是相机相对世界坐标系的变换关系 T w c T_{wc} Twc。对于那些没有3D匹配点的2D-2D匹配点对,估计其对应的3D点仍需采用三角化方式。
原理
直接线性变换法
直接线性变换法依据相机投影的基本原理,通过线性变换求解目标值。即 s x = P X sx=PX sx=PX其中, x = ( u , v , 1 ) T x=(u,v,1)^T x=(u,v,1)T为像素点的归一化坐标; P = [ R ∣ T ] P=[R|T] P=[R∣T]为 3 × 4 3\times4 3×4的相机投影矩阵。
在求解PnP问题时,旋转矩阵 R R R和平移矩阵 T T T是待求的变量,由于 P P

PnP(Perspective-n-Point)算法是三维重建中的关键步骤,用于估计相机位姿。本文介绍了PnP问题的背景,包括直接线性变换法、P3P方法以及BA优化。P3P仅需3对3D-2D点对,通过迭代最近点(ICP)迭代求解。非线性优化方法如BA则同时优化相机位姿和空间点坐标。代码示例展示了使用OpenCV的EPNP方法解决PnP问题。
最低0.47元/天 解锁文章
275

被折叠的 条评论
为什么被折叠?



