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求解相关推荐

  1. 视觉SLAM中,本质矩阵、基础矩阵、单应性矩阵自由度和秩分析

    视觉SLAM中,本质矩阵.基础矩阵.单应性矩阵自由度和秩分析 1.各个矩阵的自由度 由于基础矩阵和本质矩阵都是由对极约束来的 1.1 本质矩阵E的自由度为5,秩为2 1.1.1 自由度: 首先,旋转和 ...

  2. SVO: 视觉SLAM中特征点法与直接法结合

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前面的话 VSLAM 是利用多视图几何理论,根据相机拍摄的图像信息 ...

  3. SLAM | 视觉SLAM中特征点法与直接法结合:SVO

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 前面的话 VSLAM 是利用多视图几何理论,根据相机拍摄的图像信息对相机进行定位并同时构建周围环境地图 ...

  4. OA-SLAM:在视觉SLAM中利用对象进行相机重新定位

    作者 | 鱼肖浓  编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/587010197 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷 ...

  5. SLAM | 视觉SLAM中的后端:后端优化算法与建图模板

    点击上方"AI算法修炼营",选择加星标或"置顶" 标题以下,全是干货 前面的话 前面系列一中我们介绍了,VSLAM 是利用多视图几何理论,根据相机拍摄的图像信息 ...

  6. 视觉SLAM中的公制尺度(metric scale)

    在很多视觉SLAM相关的文献中,都能看到一个词:metric scale,翻译为公制尺度.搜索这个词,得到的结果都是关于公制单位的. 其实在SLAM中公制尺度可以理解为"现实中的尺度&quo ...

  7. 视觉SLAM中的数学基础 第三篇 李群与李代数

    转自:http://www.cnblogs.com/gaoxiang12/p/5137454.html 致敬原作者,请移步原作者博文详细浏览 前言 在SLAM中,除了表达3D旋转与位移之外,我们还要对 ...

  8. 视觉slam中的相机类型

    作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>>   顾名思义,视觉 SLAM(又称 vSLAM)使用从相机和其他图像传感器采集的图像.视觉 S ...

  9. 视觉slam中的一种单目稠密建图方法

    之所以只讲单目的稠密建图,这是因为,首先,对于RGBD图,我们已知所有点的深度,可以直接生成稠密的点云.其次,对于稀疏地图,其实很多VO中已经完成了稀疏地图的构建,但是稀疏地图只能用于定位,不能用于导 ...

最新文章

  1. 一、ESP8266入门(基于LUA开发)
  2. 深入理解特征值与特征向量
  3. vmware horizon view 添加vcenter server
  4. java 抽象工厂工厂_Java设计模式之简单工厂、工厂方法和抽象工厂
  5. Linux之chattr命令详解
  6. Struts2 的Action 命名重复检测
  7. python调用.a静态库_Python 调用 C
  8. quartz 时间配置规则
  9. 瑞典卡罗林斯卡医学院博士后招聘,图像流行病学和深度学习领域
  10. oracle如何快速查找,Oracle 如何快速查找和删除重复记录
  11. python封装exe后其机器能用么_python打包成exe格式后,在部分机子上没法运行
  12. JavaScript学习(六)—location对象常用的属性和方法
  13. 实验楼mysql实验-搭建一个简易的成绩管理系统的数据库
  14. 视频码率,帧率和分辨率的联系与差别
  15. 机器学习 深度学习 ai_用AI玩世界末日:深度Q学习的多目标优化
  16. 鱼眼相机矫正,按经纬度展开为环视图
  17. Java中ElasticSearch的各种查询(普通,模糊,前缀,高亮,聚合,范围)
  18. 【网络原理】详解访问域名 www.baidu.com 中的DNS解析过程
  19. 排列组合—— 球盒问题
  20. 爬取豆瓣的战狼影评(cookies 云词)

热门文章

  1. 2022-2028年中国锅仔片行业研究及前瞻分析报告
  2. Python 标准库之 time
  3. Windows10快捷应用指令
  4. 【Docker】Ubuntu18.04国内源安装Docker-准备工作(一)
  5. sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系
  6. 完全理解Python迭代对象、迭代器、生成器
  7. TVM 优化 ARM GPU 上的移动深度学习
  8. 神经网络AI加速器技术
  9. JavaWeb笔记01
  10. 2021年大数据Hadoop(二):Hadoop发展简史和特性优点