对极几何,PnP,ICP 和BA之间的关系

本文探讨了对极几何、PnP(Pose from N Points)和ICP(Iterative Closest Point)在SLAM(Simultaneous Localization And Mapping)中的角色。对极几何常用于三角测量,PnP用于3D-2D匹配的相机姿态估计,而ICP则用于点云配准。这些方法为BA(Bundle Adjustment)提供初值,BA是非线性优化解算相机观测方程的重要手段,可应用于前端和后端的优化。PnP和ICP有时也会借助BA的技术来提升精度。

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

一.基本概念

注意这里的BA 指的就是目标函数中的f函数为普通相机的观测方程的非线性优化解算方法,所以本文中BA与非线性优化同概念.

对极几何,PnP,ICP 一般都只用于前端,为BA提供初值(这里的BA可能是前端也可能是后端),但是PnP和ICP都可能会用到BA的方法.

BA在前端后端都会用到,前后端也就是所谓的范围的问题,前端可能只在相邻几帧进行BA操作,后端的范围就要大的多

二.对极几何+三角测量

一般使用八点法计算本质矩阵E.然后通过SVD分解出相机的运动R和t.

获得了相机运动,之后再求解三维点的坐标(三角测量).注意和BA的边缘化是不同的啊.

和ransac的关系:要计算基础矩阵至少需要8 个点(使用8 点算法)。点越多越好,可以使用RANSAC 算法得到更加稳定的结果。

ransac(百度百科):RANSAC为Random Sample Consensus的缩写,它是根据一组包含异常数据的样本数据集,计算出数据的数学模型参数,得到有效样本数据的算法。

三.PnP

3D-2D,最少只需要四个点,三个点解算,一个点验证.

双目和RGB-D相机可以从一开始就使用PnP进行解算(虽然不知道为什么RGBD不直接用ICP,却要用PnP),但是单目相机必须一开始用对极几何然后才可以用PnP.

### 计算机视觉中PnP解算与位姿估计 #### PnP问题定义及其重要性 在计算机视觉领域,PnP (Perspective-n-Points) 是一种用于解决从3D空间点到2D图像平面对应关系的问题的技术[^5]。该技术旨在利用已知的世界坐标系下若干个三维点的位置与其对应的二维图像投影来推断摄像机的姿态参数——包括位置朝向。 #### 不同类型的点对匹配方式 对于不同类型的点对(如2D-2D, 2D-3D 3D-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; } ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值