PnP算法详解

本文介绍了PnP算法,它是求解3D到2D点对应、估计相机位姿的方法,至少需3个点对及一个额外验证点。其应用广泛,如6D姿态估计和视觉SLAM等。还阐述了PnP数学模型,列举了DLT、P3P、EPnP、BA等求解方法,并提及Opencv实现EPnP算法较简单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PnP概述
PnP(Perspective-n-Point)是求解3D到2D点的对应方法。它描述了当知道n个3D空间点及其位置,如何估计相机的位姿。如果两张图像中的一张特征点3D位置已知,那么至少需要3个点对(以及至少一个额外验证点验证结果)就可以计算相机的运动。

PnP的应用范围很广比如两阶段法的6D姿态估计以及视觉SLAM等等。

特征点的3D位置可以由三角化或者RGB-D相机的深度图确定,当然还有其他方法。

PnP数学模型
PnP问题的几何结构如下图所示,给定3D点的坐标以及对应2D点的坐标以及内参矩阵,求解相机的姿态。

在这里插入图片描述
在这里插入图片描述
PnP求解方法
DLT直接线性变换
P3P三对点估计位姿
EPnP(Efficient Pnp)
BA(Bundle Adjustment)光速法平差
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
EPnP
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
那么为什么在摄像头坐标系中存在同样的加权关系,这里对(2)进行手写推导:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述3.计算控制点在相机坐标系下的坐标
手推公式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在N=4的情况下,有10个未知数,6个方程。在Opencv中实现EPnP算法很简单:

solvePnP(pts_3d, pts_2d, K, Mat(), r, t, CV_EPNP); // 调用OpenCV 的 PnP 求解,可选择EPNP,DLS等方法,默认采用迭代法(最小化重投影)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
参考文章
https://zhuanlan.zhihu.com/p/361791835
https://blog.csdn.net/jessecw79/article/details/82945918#control_points_64
[泡泡机器人公开课]第三十九课:PnP 算法简介&代码解析-柴政

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值