3D-2D: PnP ——SLAM14讲内容

3D-2D: PnP ——SLAM14讲内容

背景

PnP(Perspective-n-Point)是求解3D 到2D 点对运动的方法。它描述了当我们知道n个3D空间点以及它们的投影位置时,如何估计相机所在的位姿。
PnP 问题有很多种求解方法,例如用三对点估计位姿的P3P[45],直接线性变换(DLT),EPnP(Efficient PnP)[46],UPnP[47] 等等)。此外,还能用非线性优化的方式,构建最小二乘问题并迭代求解,也就是万金油式的Bundle Adjustment。我们先来看DLT,然后再讲Bundle Adjustment。
在这里插入图片描述

直接线性变换DLT

考虑某个空间点P,它的齐次坐标为
在这里插入图片描述
此时相机的位姿R; t 是未知的。图像I1 中,投影到特征点
在这里插入图片描述
归一化平面:f=1
我们定义增广矩阵[Rjt] 为一个3 x 4 的矩阵,包含了旋转与平移信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

P3P

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

Bundle Adjustment

在这里插入图片描述
除了使用线性方法之外,我们可以把PnP 问题构建成一个定义于李代数上的非线性最小二乘问题。前面说的线性方法,往往是先求相机位姿,再求空间点位置,而非线性优化则是把它们都看成优化变量,放在一起优化。这是一种非常通用的求解方式,我们可以用它对PnP 或ICP 给出的结果进行优化。在PnP 中,这个Bundle Adjustment 问题,是一个最小化重投影误差(Reprojection error)的问题。我们在本节给出此问题在两个视图下的基本形式,然后在第十讲讨论较大规模的BA问题。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### 计算机视觉中PnP解算与位姿估计 #### PnP问题定义及其重要性 在计算机视觉领域,PnP (Perspective-n-Points) 是一种用于解决从3D空间点到2D图像平面对应关系的问题的技术[^5]。该技术旨在利用已知的世界坐标系下若干个三维点的位置与其对应的二维图像投影来推断摄像机的姿态参数——包括位置和朝向。 #### 不同类型的点对匹配方式 对于不同类型的点对(如2D-2D, 2D-3D3D-3D),存在特定的方法来进行处理: - **2D-2D 对极几何**:当仅有两张图片间的特征点对应时,则需依赖于对极几何原理进行分析[^1]。 - **2D-3D PnP 方法**:这是最典型的场景之一,在这种情况下可以直接应用经典的PnP算法求解相机外参矩阵。 - **3D-3D ICP 算法**:如果两个数据集均为三维点云形式,则可以采用迭代最近点(ICP)等方法完成配准操作。 #### 基于不同类型摄像头的解决方案 针对不同的成像设备特性,也发展出了多种针对性强的技术路径: - 单目相机由于只提供单一视角的信息量有限,所以往往需要额外假设或辅助手段才能有效获取深度信息并进一步估算姿态; - 双目立体视觉系统则能够通过视差效应直接测量距离从而简化了后续计算流程; - 而结构光/ToF类深度传感装置更是能即时给出精确的距离读数,使得整个过程变得更加直观可靠[^2]。 #### ORB-SLAM 中的具体实践案例 实际项目里比如ORB_SLAM就采用了上述提到的一些策略组合起来实现了鲁棒高效的实时定位功能。它会先提取关键帧内的FAST角点作为自然标志物,并借助词袋模型加速检索速度;接着运用BA优化框架不断调整当前最佳猜测直至收敛至全局最优解附近[^4]。 ```cpp // C++代码片段展示如何调用OpenCV库函数solvePnPRansac执行一次完整的pnp运算 cv::Mat rvec, tvec; std::vector<int> inliers; bool found = cv::solvePnPRansac(object_points, image_points, camera_matrix, dist_coeffs, rvec, tvec, false, 100, 8.0, 0.99, inliers); if (!found){ std::cout << "Failed to find a valid pose." << std::endl; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值