视觉SLAM理论入门——(8)视觉里程计之特征点法—PnP

SLAM学习笔记----坐标关系梳理及PnP算法详解 一,重要的坐标关系的解析 四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。 世界坐标系:机器人或相机运动过程中,肯定需要知道它的位置,因此需要设定世界坐标系,认定固定不动,作为 参考坐标系,描述世界中的任何一点P(Xw,Yw,Zw)。 相机坐标系:相机或机器人运动的一个坐标系,通过世界坐标系的变换(旋转R,平移T)计算得到。因此主要是将 世界坐标系描述的点坐标P(Xw,Yw,Zw)转换成相机坐标系下描述P(Xc,Yc,Zc),方便计算得到在成像坐标系的坐 标。 图像(成像)坐标系:描 阅读详情

PnP是求解 3D - 2D 点对运动的方法。它描述了当我们知道n 个 3D 空间点以及它们的投影位置时,如何估计相机所在的位姿

2D-2D的对极几何方法需要八个或八个以上的点对(以八点法为例),且存在着初始化、纯旋转和尺度的问题

然而,如果两张图像中,其中一张特征点的 3D 位置已知,那么最少只需三个点对(需要至少一个额外点验证结果)就可以估计相机运动。特征点的 3D 位置可以由三角化,或者由 RGB-D 相机的深度图确定

因此,在双目或 RGB-D 的视觉里程计中,我们可以直接使用 PnP 估计相机运动。而在单目视觉里程计中,必须先进行初始化,然后才能使用 PnP

PnP 问题有很多种求解方法,如:P3P、DLT、EPnP、UPnP等。除此以外还可以使用非线性优化方法,构建最小二乘问题并迭代求解(BA)

1、直接线性变换(DLT)

考虑某个空间点 P,它的齐次坐标为 P = (X,Y,Z,1)^T 。在图像 I_1 中,投影到特征点 x_1 = (u_1 ,v_1 ,1)^T (以归一化平面齐次坐标表示)。此时相机的位姿 R,t 是未知的。定义增广矩阵 T = [R|t] (T不是变换矩阵) 为一个 3 × 4 的矩阵,包含了旋转与平移信息,展开形式如下:

用最后一行把 s 消去,得到两个约束(因为三个约束中只有两个线性无关):

将 T 按行分解为 t_1,t_2,t_3 ,上面两个约束可以化为

假设一共有 N 个特征点,可以列出线性方程组:

由于 t 一共有 12 维,因此最少通过六对匹配点,实现矩阵 T 的线性求解。当匹配点大于 6 对时,可以使用 SVD 等方法对超定方程求最小二乘解

在DLT求解中,直接将 T 矩阵看成了 12 个未知数,忽略了它们之间的联系。而旋转矩阵 R 属于 SO(3),DLT的解(只是一般的矩阵)不一定满足 SO(3)的约束

因此必须对 DLT 估计的 T 的左边3 × 3 的矩阵块,寻找一个最好的旋转矩阵对它进行近似。这可以由 QR 分解完成,也可以使用下式计算,这相当于把结果从矩阵空间重新投影到 SE(3) 流形上,转换成旋转和平移两部分

上面使用了归一化坐标 x_1 = (u_1 ,v_1 ,1)^T,默认 K 已知(实际上在SLAM中,K通常是已知的)。如果内参 K 未知,可以用PnP估计 K,R,t 三个量,不过未知数增加,估计效果会差些

2、P3P

P3P 需要利用给定的三个点的几何关系。它的输入数据为三对 3D-2D 匹配点。记 3D点(世界坐标)为 A,B,C,2D 点为 a,b,c,相机光心 O 。此外,P3P 还需要使用一对验证点 D - d

上图的三角形之间存在对应关系

利用余弦定理,有:

对上面三式全体除以 OC^2 ,并且记 x = OA/OC,y = OB/OC,得:

记 v = AB^2 /OC^2 ,uv = BC^2 /OC^2 ,wv = AC^2 /OC^2 ,有:

将式1中的v代入式2、3,有:

由于我们知道 2D 点的图像位置,三个余弦角是已知的。u、w可以通过A、B、C的世界坐标求得(变换到相机坐标后,不会改变比值u、v)。x、y随相机运动而变化,是未知的

因此,经过上面的推导,可以得到关于x、y的二元二次方程组。使用吴消元法可以求得解析解。类似分解 E ,这个方程组最多可能得到4个解,可以用验证点来计算最可能的解,得到 A,B,C 在相机坐标系下的 3D 坐标。然后,根据 3D-3D 的点对,计算相机的运动 R,t

总的来说,P3P的方法为了求解 PnP,利用了三角形相似性质,求解投影点 a,b,c 在相机坐标系下的 3D 坐标,最后把问题转换成一个 3D 到 3D 的位姿估计问题

在 SLAM 当中,通常的做法是先使用 P3P/EPnP 等方法估计相机位姿,然后构建最小二乘优化问题对估计值进行调整

然而,P3P 也存在着一些问题:

1. P3P 只利用三个点的信息。当给定的配对点多于 3 组时,难以利用更多的信息

2. 如果 3D 点或 2D 点受噪声影响,或者存在误匹配,则算法失效

3、BA

除了使用线性方法之外,还可以把 PnP 问题构建成一个定义于李代数上的非线性最小二乘问题

前面说的线性方法,往往是先求相机位姿,再求空间点位置,而非线性优化则是把它们都看成优化变量,放在一起优化。可以用它对 PnP 或 ICP 给出的结果进行优化

在 PnP 中,BA 问题,是一个最小化重投影误差问题

考虑 n 个三维空间点 P 和它们的投影 p,我们希望计算相机的位姿 R,t,它的李代数表示为 ξ。假设某空间点坐标为 P_i = [X_i ,Y_i ,Z_i ]^T ,其投影的像素坐标为 u_i = [u_i ,v_i ]^T

投影过程描述为:

矩阵形式是:

式中隐含着的齐次坐标到非齐次的转换。由于相机位姿未知以及观测点的噪声,该等式存在一个误差,把误差求和,构建最小二乘问题,然后寻找最好的相机位姿,使它最小化:

这里的误差项,是将像素坐标(观测到的投影位置)与 3D 点按照当前估计的位姿进行投影得到的位置相比较得到的误差(称为重投影误差)

求解这个最小二乘问题的含义是:通过特征匹配知道 p_1 和 p_2 是同一个空间点 P 的投影,但是不知道相机的位姿。在初始值(相机的位姿)中,P 的投影 p_2' 与实际的 p_2 之间有一定的距离。于是调整相机的位姿,使得这个距离变小,使估计位姿贴近实际位姿。不过,由于这个调整需要考虑很多个点,所以最后每个点的误差通常都不会精确为零

使用李代数,可以构建无约束(即不用考虑 R 的约束)的优化问题,通过 G-N, L-M 等优化算法进行求解。在使用 G-N 和 L-M 之前,需要将问题线性化,求得误差项对优化变量的导数

当 e 为像素坐标误差(2 维),x 为相机位姿(6 维)时,雅可比矩阵 J 是一个 2 × 6 的矩阵,下面推导雅可比矩阵

记变换到相机坐标系下的空间点坐标为 P′ ,并且把它前三维取出来:

将 P’ 投影到像素平面:

消去s,得到两个约束(实际上也是针孔模型中的像素坐标求解公式):

我们对 ξ ∧ 左乘扰动量 δξ,然后考虑 e 的变化关于扰动量的导数。利用链式法则:

 ⊕ 指李代数上的左乘扰动,第一项是误差关于投影点的导数,第二项是变换后的点关于李代数的导数

将e视为列向量,P’视为行向量,e 对 P' 求导结果如下:

另外,记变换矩阵为 T,则 P' = TP,根据李代数部分推导的公式有:

对 TP 取出前 3 维得到 P’,因此

两个导数相乘得到雅可比:

雅可比矩阵描述了重投影误差关于相机位姿李代数的一阶变化关系

除了优化位姿,还希望优化特征点的空间位置。因此,需要讨论 e 关于空间点 P 的导数。利用链式法则:

由于 P’ = RP + t, 因此P’ 对 P 的导数是 R,从而:

e 对位姿变化的导数以及对 P 的导数能够在优化过程中提供重要的梯度方向,指导优化的迭代

3D视觉PnP问题 目前常用的pnp方法有很多,但是本人学习和查阅后发现比较零散,因此,**在这里将所学习的方法按照理解分类和总结,并且着重提出实现过程中或者原理上需要注意的点**。PnP是Perspective-n-Point的缩写,指在已知相机内参数的前提下,利用某角度下n个三维点与它们对应的图像点坐标,估算出此时拍摄位置的信息。 阅读详情

相关推荐

激光雷达-相机外参联合标定通过手动选取3D-2D点利用PnP求解

通过鼠标监听事件手动选取3D,2D点 利用OpenCV的PnP求解激光雷达到相机坐标系的外参矩阵

HelloJinYe的博客 3211

视觉SLAM14讲——视觉里程计1(PNP,ICP)

得到1、PNP Pnp是求解3D-2D点对运动的方法,在双目或者深度相机中不需要用对极约束解决,可以直接使用PnP来解决问题。 1、直接线性变化 问题如下:已知一组3D点的位置,以及它们在某个相机中的投影位置,求该相机的位姿。如果把3D点看成在另一个相机坐标系中的点的话,也可以用来求解两个相机的相对运动问题。 空间点P,齐次坐标为:,假设在图像I1中,投影到特征点x1= 此时R,t未知。我们将R,t定义为一个增广矩阵,将其展开写为: 通过最后一行把s消掉: 为了简化,定义T的行向量:

weixin_55800047的博客 839

slam学习笔记五----视觉里程计的学习1

一,什么是视觉里程计 SLAM系统分为前端和后端,前端也称为是视觉里程计,主要功能是根据相邻图像的信息粗略的估计出相机的运动,为后端提供较好的初始值。 视觉里程计的算法有两大类特征点法和直接法。特征点法是常用方法,它具有稳定,对光照、动态物体不敏感的优势。视觉里程计的原理就是提取图像的特征点,通过匹配估计两帧之间相机运动和场景结构,实现一个两帧间的视觉里程计。其核心问题就是如何通过图像估计相机的运动。 二,特征点法的原理 从图像中选取比较有代表的点,该点在相机视角发生少量变化后依旧保持不...

YOULANSHENGMENG的博客 1万+

视觉SLAM中PNP求解

啊

weixin_43828675的博客 2494

视觉SLAM的前段后端最详细的梳理(硕士入门知识框架更新)

文章目录视觉SLAM的组成结构视觉里程计(VO)-特征点法 -构建稀疏点云地图-直接法 -构建稠密或半稠密的地图 --需要使用 RGB-D 传感器视觉里程计--总结:SLAM 后端研究滤波器法非线性优化后端方式的差异(有五种优化方式):单目视觉里程计的初始化:运动估计:半直接法运动估计的优化方案:关于解决累计误差的一些方法:关键帧的建图及后端优化:特征的深度估计:图优化的后端研究:视觉与IMU融合的分类:视觉与IMU的融合的优势:存在的问题:优秀的开源: 视觉SLAM的组成结构 视觉里程计(VO) -特

DC 6811

从零编写一个双目视觉SLAM系统(一):一个滑窗的PnP里程计

    最近在尝试用光流法写一个基本的双目视觉SLAM,希望通过这个项目把SLAM的各个模块都自己实现一遍,以此加深对SLAM各个模块的理解。     目前刚完成了一个通过求解相邻帧PnP问题的双目视觉里程计,基本有了一个粗糙的效果,后续还需要把Bundle Adjustment、边缘化、回环检测和位姿图优化加上去。回环检测暂时设想用ORB来做。     在这里把这个初步的里程计的思路记录一下。 ...

OORRANNGGE的博客 4318

视觉SLAM理论到实践系列(六)——特征点法视觉里程计(4)

三角测量和PnP

YangtseJin的博客 1512

5. 特征点法视觉里程计

特征点提取与匹配 根据几何关系建模相机运动 2D-2D 对极几何 3D-2D PnP 代数方法:DLT 优化方法 3D-3D ICP 三角化与深度估计 声明:本文是深蓝学院 高翔博士主讲的《SLAM理论与实践》的学习笔记。 特征点提取与匹配 经典SLAM模型中以位姿(x)、路标Landmark(y)来描述SLAM过程。 路标点的作用主要是,建立同一点在不同图...

andylei777的博客 3426

视觉SLAM理论到实践系列(六)——特征点法视觉里程计(6)

SLAM中的测量方式

YangtseJin的博客 1232

视觉slam十四讲学习笔记(六)视觉里程计 1

1.理解图像特征点的意义, 并掌握在单幅图像中提取出特征点,及多幅图像中匹配特征点的方法。2. 理解对极几何的原理,利用对极几何的约束,恢复出图像之间的摄像机的三维运动。3.理解PNP 问题,及利用已知三维结构与图像的对应关系,求解摄像机的三维运动。4.理解ICP问题,及利用点云的匹配关系,求解摄像机的三维运动。5.理解如何通过三角化,获得二维图像上对应点的三维结构。视觉SLAM十四讲ch7_1_哔哩哔哩_bilibili。

qq_53589322的博客 1602

【视觉SLAM十四讲】第七讲 特征点法视觉里程计

什么是特征点、如何提取和匹配特征点,如何根据配对的特征点估计相机运动。

liqingyushe的博客 1608

视觉SLAM十四讲笔记 第五讲视觉里程计 特征点法

视觉里程计是SLAM中的一个重要模块。视觉里程计通过相邻的图像,进而估计相邻图像之间是如何运动的。这个估计会有累计误差,通过后端优化和回环检测来消除这个误差。

qq_57225906的博客 2794

视觉SLAM十四讲之基于特征点的视觉里程计

视觉SLAM十四讲之基于特征点的视觉里程计 文章目录视觉SLAM十四讲之基于特征点的视觉里程计1 主要目标2 特征提取与匹配2.1 特征点法2.2 特征匹配3 估计相机运动3.1 对极几何解决单目问题3.2 3D-2D:PnP 1 主要目标 1.1 特征点是如何匹配的; 1.2 如何通过2D-2D的特征点估计相机运动; 1.3 如何从2D-2D的匹配估计一个点的空间位置 1.4 3D-2D的PnP...

sunshine 1084

【视觉SLAM:六、视觉里程计Ⅰ:特征点法】

原理:提取图像中显著的特征点,并通过特征点的匹配关系推断相机运动。流程:提取图像特征点。描述特征点并计算特征点匹配关系。通过特征匹配估计相机运动(后续结合几何关系)。视觉里程计通过特征点法提取信息,结合几何约束(2D-2D对极几何、三角测量)估计相机位姿,并通过PnP(3D-2D)和ICP(3D-3D)实现更复杂场景下的位姿求解。这些方法构成了视觉里程计的核心技术体系,为SLAM中的前端跟踪提供了坚实的数学基础和实现方案。

计算机领域博客,与时俱进的思想与技术。 2028

【CQUT】从零开始龙芯杯-开始前的准备

不同级别的Cpu对于vivado综合的时间有较大影响,其中Cpu的单核、多核性能以及cache性能影响权重较高。因此,为了保证学习进度和效率,我们建议在Cpu不低于I5 12400的环境下进行学习。Vivado2023.2安装包约100GB,为了保证成功安装建议留出300GB硬盘空间。龙芯杯的许多资料被托管在gitee,你需要git指令将资料克隆到本地。指定用书:CPU设计实战 Loongarch版 作者:汪文祥、邢金璋。Cpu性能对比网站:https://www.cpu114.com/

weixin_73689971的博客 906

告别GIS软件!用R语言ggplot2+ggmapcn绘制出版级世界地图(附5种投影对比图)

本文提供了一份完整的实践指南,教你如何利用R语言及其强大的ggplot2生态系统,结合ggmapcn包,绘制出出版级的世界地图。文章详细对比了五种经典地图投影(如摩尔维德、罗宾森投影)的代码实现与视觉差异,并讲解了如何添加比例尺、指北针等专业元素,最终导出高清PDF,实现从数据分析到专业可视化的全流程代码化操作,彻底告别传统GIS软件。

p5l2m9n4o6q的博客 407

SLAM系列——视觉里程计(特征法)

特征点法 特征点

xiaohu的博客 3280

OpenSees入门指南:从零开始的环境配置与TCL脚本实战

本文提供了一份详细的OpenSees入门指南,涵盖从零开始的环境配置到TCL脚本实战的全过程。文章重点讲解了OpenSees的安装步骤、环境变量设置,并推荐了高效的VS Code集成开发环境配置方法。通过一个简支梁分析的完整TCL脚本示例,手把手引导读者完成第一个非线性有限元分析,帮助土木工程与结构工程领域的研究者与学生快速上手这一强大的开源分析工具。

weixin_28829339的博客 336

视觉SLAM学习打卡【7-1】-视觉里程计·特征点法

主要介绍了图像特征点提取、匹配,以及视觉里程计下的位姿估计和深度测量.

小幸运召唤师的博客 1476

Linux ELF文件解析:从file到readelf的完整工具链指南

ELF(可执行与可链接格式)是Linux系统中二进制文件的标准格式,定义了程序加载、内存布局和元数据组织方式。其核心原理在于通过程序头表描述执行视图、节区头表描述链接视图,实现代码与数据的结构化存储。这一格式的技术价值在于为程序调试、安全审计和性能优化提供了底层支持,尤其在动态链接、符号解析和内存保护机制中发挥关键作用。在应用场景上,系统管理员依赖ELF分析工具解决库依赖问题,安全研究员通过检查安全属性评估漏洞风险,开发者则利用反汇编进行代码调试。本文聚焦于file、readelf、objdump等工具链的

weixin_42691065的博客 635

ROS中costmap_converter插件的配置与使用

在学习TEB算法的过程中,作者提供了一个插件用于转换代价地图,原始的代价地图是由栅格地图中单元格组成,用于表示障碍物,但单元格占用的计算资源较大,故采用插件将单元格转换成点,线,多边形表示。 插件激活 rospack plugins --attrib=plugin costmap_converter 配置cfg文件 在导航配置文件下,新建costmap_converter_params.yaml #######################################################

weixin_42621524的博客 5904

视觉SLAM理论到实践系列(六)——特征点法视觉里程计(1)

特征点法视觉里程计

YangtseJin的博客 1205

SAP_MM模块非限制库存转冻结库存

项目非限制 → 冻结事务码移动类型343影响库存不可用,不参与MRP常见用途质量问题封存、盘点冻结、待退货品通过本文,我们了解了 SAP 的[SAP_MM模块非限制库存转冻结库存]的基本概念和应用方法。希望这些信息能帮助您在实际工作中更好地使用 SAP 系统,提高工作效率和管理水平。更多SAP文章请点击更多SAP文章更新,大家一起学习进步!!!文章中如有错误。敬请指正!搜索公众号:SAP资料文库微信号:SPRO_PP时间:2025-10-14。

我小时候很黑的博客 584

视觉SLAM中的对极约束、三角测量、PnP、ICP问题

这篇博客是在学习高翔《视觉SLAM十四讲》过程中对计算机视觉的多视图几何相关知识点做的总结。

等你下课 9012

手把手教你学RDMA驱动开发专栏--第7章 队列对(QP)与数据传输实现​7.3 完成队列(CQ):事件通知机制与轮询/中断模式

本章详细探讨了RDMA驱动中完成队列(CQ)的事件通知机制,重点分析了轮询与中断两种模式的实现原理及优化策略。CQ作为操作结果的报告载体,其核心功能包括结果反馈、事件通知和资源同步。轮询模式通过主动查询实现低延迟,适合高性能场景;中断模式通过被动通知节省CPU资源,适用于低频事件处理。驱动实现需考虑CQ溢出防护、多QP共享同步等关键问题,并提供事件通道机制将CQE传递给用户态。通过对比两种模式的优缺点及适用场景,揭示了RDMA系统在性能与资源间的权衡机制。

MHD0815的博客 396

【2025CSPJ普及组】T4. 多边形

【2025CSPJ普及组】T4. 多边形【题目描述】小 R 喜欢玩小木棍。小 R 有 n 根小木棍,第i(1≤i≤n) 根小木棍的长度为 ai。

lybc2019的博客 849
上一篇: 视觉SLAM理论入门——(7)视觉里程计之特征点法—对极几何
下一篇: 视觉SLAM实践入门——(11)用对极约束求解相机运动
floatinglong
博客等级 码龄9年 90粉丝 143原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值