跟随这高博的脚步走到了pose estimation 求相机的外参, 参考了几篇blog和paper, 总算稍微有点管中窥豹的感觉, 暂且记录下来以待后续

PNP 相机位姿估计pose estimation就是通过几个已知坐标(世界坐标)的特征点,结合他们在相机照片中的成像(像素坐标),求解出相机所在的世界坐标以及旋转角度(这两个货叫相机的外参), 用旋转矩阵(R)和平移矩阵(t)表示. PnP, which is short for perspective n point就是其中的一种2D-3D解决上述问题的算法, 也就是说, 这个算法的输入是一组点的三维世界坐标和二维像素坐标,输出是相机的旋转矩阵(R)和平移矩阵(t). OpenCV有相应的库函数solvePnP()和solvePnPRansac(),后者利用了ransac的思想计算更加精确的结果,不过据说速度很慢,完全没法做到实时.

PNP具体细分为几种, 直接线性变换 P3P EPnP UPnP等等, OpenCV目前提供了3种方法进行PNP计算, CV_P3P, CV_ITERATIVE, CV_EPNP.

____P3P____  P3P的方法,是用非常经典的<Complete solution classification for the perspective-three-point problem> published by Gao in 2003的一篇论文,用空间中3个已知世界坐标和像素坐标的点,通过构造四个三角形的边角关系联立方程组,求出4组可能的解,再通过第四个已知点对四组解进行验证,返回重投影误差最小的点.

单纯看这个图真的会很费解,其实就是三角形三边关系公式 a²+b²-2ab*cos∠c=c²,假如我们做特征匹配的两帧图是frame1和frame2,那么ABC三个点就是匹配的3对特征点的世界地图坐标位置,即frame1上的A1.B1.C1匹配frame2上的A2B2C2. P点是frame2的相机所在位置的相机光心. 这个方程组里的已知条件是|AB||BC||AC|的长度,因为ABC三点的世界坐标已知; 和∠α.∠β,∠γ,因为A2B2C2的像素坐标已知,(通过像素坐标和内参矩阵求到光心距离然后构造三角形求角).
右侧的make是一堆为了化简式子所做的assumptions, 最后得到的二元二次方程组里,除了x,y剩下的量都是已知,解这个方程组需要用到二十世纪八十年代的一篇论文介绍的吴消元法, 简单看了一下,大体上的思路基本都没看懂,就交给opencv吧...反正我知道这个方程组最多有四组x,y的解, 然后用frame1和frame2上的另外一组匹配点D1D2代入四组解验证就算重投影误差最小的一组解,即为输出的结果.

SLAM的那些坑——PNP相关推荐

  1. 高博SLAM基础课第五讲——PnP非线性优化

    这一题很重要 #include <Eigen/Core> #include <Eigen/Dense>using namespace Eigen;#include <ve ...

  2. SLAM十四讲——Pnp求解之DLT

    学习目标 学习PnP求解相机位姿,学习PnP的求解之直接线性变换DLT 目录 PnP 直接线性变换DLT 一.PnP 1.PnP的概念 PnP(Perspective-n-Point)是求解3D到2D ...

  3. 【SLAM】三角测量与PNP

    一.三角测量 在深度估计中,双目视觉可以通过极限约束找到对应的三维点信息,在雷达中可以通过TOF找到深度信息,那么在单目视觉中,如何获得深度信息呢? 这就需要三角测量. > 三角测量在三角学与几 ...

  4. SLAM的通用框架:GSLAM

    SLAM的通用框架:GSLAM GSLAM: A General SLAM Framework and Benchmark 论文链接: http://openaccess.thecvf.com/con ...

  5. SLAM优化位姿时,误差函数的雅可比矩阵的推导。

    转载请说明出处: http://blog.csdn.net/zhubaohua_bupt/article/details/74011005 视觉SLAM的核心是求取相机的位姿并建图. 在优化位姿时,其 ...

  6. 学SLAM的女生,很酷

    <生活大爆炸>最后一集,Amy获得了诺贝尔奖.在颁奖典礼上,Amy动情地说:"I would just like to take this moment to say to al ...

  7. 单目视觉里程计的尺度问题的疑问?

    SLAM是个坑- 经过一段时间对SLAM的了解,原来是我理解有错误,得到的尺度已经是统一的,只是不知道它的真实尺度是多少. 贴一个不错的视觉里程计简介的链接: https://blog.csdn.ne ...

  8. 视觉SLAM中PNP求解

    PNP(Perspective-n-points)是SLAM中估计位姿的重要方法.已知条件为路标点在相机1中的相机坐标以及投影到相机2中的像素坐标,据此去估计相机1.相机2间的位姿.主要解法包括DLT ...

  9. 视觉SLAM笔记(47) 优化 PnP 的结果

    视觉SLAM笔记(47) 优化 PnP 的结果 1. 迭代优化 2. 优化边 3. 姿态估计 4. 结果对比 1. 迭代优化 尝试 RANSAC PnP 加上迭代优化的方式估计相机位姿 看看是否对 视 ...

最新文章

  1. 大型网站系统架构系列:分布式消息队列(二)
  2. python小课骗局-Python小课怎么样啊?
  3. 25、Sql语句执行顺序
  4. java上传组件_java上传组件FileUpload
  5. python内建函数是什么_python适用的内建函数
  6. 顶部吸附_吸附脱附催化燃烧的工作原理
  7. 64位MicrosoftOfficeWord加载EndnoteX7
  8. 从高德地图获取城市地铁线路+站点
  9. 联想电脑EasyCamera无法打开摄像头
  10. mysql数据库自动备份软件SQLBackupAndFTP简介(图文)
  11. 数字图像处理第五章笔记
  12. Marvell 88E1111PHY芯片简介
  13. android 填充内存方法,安卓快速填满手机内存(转载)
  14. 同步四进制可逆加减法计数器分析
  15. 计算机为什么要采用精简指令集,为什么说手机cpu运行的是精简指令集,而电脑cpu是复杂指令集?...
  16. UE4(虚幻4)基础:光照需要重建
  17. android五层系统架构,Android系统的五层架构、Dalvik与ART、最后有个奇怪的问题请教orz...
  18. Python爬虫入门教程 67-100 Python爬虫摆脱控制台,开始走上台面
  19. Git使用个人访问令牌提交代码到仓库
  20. 7zip自带hash校验功能

热门文章

  1. excel中制作下拉列表
  2. Go 开源说第二期:GORM 剖析与最佳实践
  3. seo专用推送神器免费使用
  4. 淘宝API接口 upload_img - 上传图片到淘宝
  5. 手动建库:按标准快速创建MDB数据库,快速创建Arcgis数据库。
  6. 推荐一款jquery前端插件(zoomify),灯箱效果插件(用于图片看大图的效果),简单易用!
  7. Unity 网络视频教程第一讲
  8. 千峰培训_day15_Linux笔记
  9. XP中超级终端使用方法
  10. kingston 101 金鼠U 盘 密码盘 显示不了 问题 [转] 留做记忆