视觉SLAM中PNP求解
PNP(Perspective-n-points)是SLAM中估计位姿的重要方法。已知条件为路标点在相机1中的相机坐标以及投影到相机2中的像素坐标,据此去估计相机1、相机2间的位姿。主要解法包括DLT、P3P、EPNP
P3P
已知A、B、C在相机1坐标系下的坐标,以及在相机2对应的像素坐标,P3P可以根据三角形相似原理计算出在相机2中的相机坐标。
随后对相机1、相机2使用ICP算法即可求出相机间的位姿变换。
P3P存在的问题:
(1)只使用3对点,当匹配的点的数量大于3的时候,很难有效利用信息(RANSAC不行吗?)。
(2)如果3D-2D点间出现误匹配,则该算法失效。
DLT
DLT(direct line transform),构建路标点的世界坐标与归一化坐标间的方程,其中[R |t]包含12个变量,一组匹配点提供2对约束。因此需要6对3D-2D匹配点。通过SVD分解进行求解。
EPNP
需要4对不共面的(对于共面的情况只需要3对)3D-2D匹配点,是目前最有效的PnP求解方法。
在空间中寻找4个不共面的控制点,用他们的权重之和来表示空间中的任意3D点。
通常选取世界坐标下的四个控制点坐标为Cw=[0,0,0,1]T, [1,0,0,1]T,[0,1,0,1]T,[0,0,1,1]T。可以同时利用N个3D-2D点的匹配关系建立方程。通过计算控制点的相机坐标,线性组合出路标点的相机坐标。其中线性组合的权重通过一个误差约束(控制点在世界坐标中、相机坐标中的欧氏距离相等)获得。随后使用ICP算法求解出相机间的位姿变换。
EPNP最大的优势为:可以同时利用N对点的匹配信息,获得路标点的相机坐标。
在ORB_SLAM2中,使用RANSAC+EPNP算法求解出相机间的位姿变换。大致步骤是:使用RANSAC随机选取4组匹配点,然后使用EPNP求解相机位姿,随后计算内点数量。保存内点数量最多的时候对应的R,t。
视觉SLAM中PNP求解相关推荐
- 视觉SLAM中,本质矩阵、基础矩阵、单应性矩阵自由度和秩分析
视觉SLAM中,本质矩阵.基础矩阵.单应性矩阵自由度和秩分析 1.各个矩阵的自由度 由于基础矩阵和本质矩阵都是由对极约束来的 1.1 本质矩阵E的自由度为5,秩为2 1.1.1 自由度: 首先,旋转和 ...
- SVO: 视觉SLAM中特征点法与直接法结合
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前面的话 VSLAM 是利用多视图几何理论,根据相机拍摄的图像信息 ...
- SLAM | 视觉SLAM中特征点法与直接法结合:SVO
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 前面的话 VSLAM 是利用多视图几何理论,根据相机拍摄的图像信息对相机进行定位并同时构建周围环境地图 ...
- OA-SLAM:在视觉SLAM中利用对象进行相机重新定位
作者 | 鱼肖浓 编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/587010197 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷 ...
- SLAM | 视觉SLAM中的后端:后端优化算法与建图模板
点击上方"AI算法修炼营",选择加星标或"置顶" 标题以下,全是干货 前面的话 前面系列一中我们介绍了,VSLAM 是利用多视图几何理论,根据相机拍摄的图像信息 ...
- 视觉SLAM中的公制尺度(metric scale)
在很多视觉SLAM相关的文献中,都能看到一个词:metric scale,翻译为公制尺度.搜索这个词,得到的结果都是关于公制单位的. 其实在SLAM中公制尺度可以理解为"现实中的尺度&quo ...
- 视觉SLAM中的数学基础 第三篇 李群与李代数
转自:http://www.cnblogs.com/gaoxiang12/p/5137454.html 致敬原作者,请移步原作者博文详细浏览 前言 在SLAM中,除了表达3D旋转与位移之外,我们还要对 ...
- 视觉slam中的相机类型
作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 顾名思义,视觉 SLAM(又称 vSLAM)使用从相机和其他图像传感器采集的图像.视觉 S ...
- 视觉slam中的一种单目稠密建图方法
之所以只讲单目的稠密建图,这是因为,首先,对于RGBD图,我们已知所有点的深度,可以直接生成稠密的点云.其次,对于稀疏地图,其实很多VO中已经完成了稀疏地图的构建,但是稀疏地图只能用于定位,不能用于导 ...
最新文章
- 一、ESP8266入门(基于LUA开发)
- 深入理解特征值与特征向量
- vmware horizon view 添加vcenter server
- java 抽象工厂工厂_Java设计模式之简单工厂、工厂方法和抽象工厂
- Linux之chattr命令详解
- Struts2 的Action 命名重复检测
- python调用.a静态库_Python 调用 C
- quartz 时间配置规则
- 瑞典卡罗林斯卡医学院博士后招聘,图像流行病学和深度学习领域
- oracle如何快速查找,Oracle 如何快速查找和删除重复记录
- python封装exe后其机器能用么_python打包成exe格式后,在部分机子上没法运行
- JavaScript学习(六)—location对象常用的属性和方法
- 实验楼mysql实验-搭建一个简易的成绩管理系统的数据库
- 视频码率,帧率和分辨率的联系与差别
- 机器学习 深度学习 ai_用AI玩世界末日:深度Q学习的多目标优化
- 鱼眼相机矫正,按经纬度展开为环视图
- Java中ElasticSearch的各种查询(普通,模糊,前缀,高亮,聚合,范围)
- 【网络原理】详解访问域名 www.baidu.com 中的DNS解析过程
- 排列组合—— 球盒问题
- 爬取豆瓣的战狼影评(cookies 云词)