位姿估计的来龙去脉——内外参,三维重建,Pnp问题
关于相机的参数,大致可以分为内参与外参。对于内参,就是一些焦距,畸变参数等信息,可以根据张定友标定法进行标定。对于外参,它描述了物体到相机的相对运动,由旋转矩阵与平移矩阵构成,作用是将世界坐标系中的点映射到相机坐标系中。平移和旋转共拥有6个自由度,所以其实外参的标定过程就是相机的位姿估计。
数学模型已经建好了,剩下的就是引入一些先验的对应关系然后去求解。模型:世界坐标系到图像坐标系到变换矩阵称为基础矩阵,它与内参和外参有关。先验知识:可以提前知道指定点的三维世界坐标与图像坐标。此外,对于内参估计,外参可以看做是已知的(认为指定相机的位置与角度);对于外参估计,内参已经估计得到,所以内参此时也可以看做是已知的。
可以看到aachen数据集,其中一项是内参
The intrinsic calibration is defined by the width `w` and height `h` of the image, its focal length `f`, the position of the principal point (`cx` and `cy`), and a radial distortion parameter `r`.
以那么现在的问题就是如何去找到对应点。因为是在估计位姿,所以此时的相机位置和角度是固定的,所以我们要坐的就是找到三维点(一般以点云表示)与相机成像的2D点之间的对应关系。而直接去找这种对应关系是比较难的:需要知道投影关系才能找到对应关系,而我们的目的就是去求解投影关系。这怎么办呢,可以使用sfm的三维重建模型。通过sfm,我们可以得到三维点与相机/图像的对应关系:三维点的个数是百万级别的,相机/图像的个数是几千级别的,所以同一个三维点会在多个图像中成像(points3D.bin中以image_idx表示),同一个图像中可能包含多个三维点(images.bin文件中以point3D_ids表示,大于0表示valid,valid的数目正好和特征点数目一样)。数据库中的数据每个图像的二维特征点对应三维坐标已知,只需要知道当前在线图像与数据库中的二维图像匹配关系,就可以间接得到三维坐标,就可以去求解。
为什么三维重建可以知道二维坐标点对应的3D坐标呢?核心:特征点匹配,重投影误差。通过特征点匹配我们知道同一三维位置在各个图像中的对应关系,以不同角度的两幅图像为例:
和对应的坐标和深度分别为,可得:.是两个角度的相对旋转和位移矩阵,可以通过对极约束得到。那么可以由Cramer's法则,或者叉乘,或者mid point method求解得到深度。这一步叫做三角定位triangulation,由光心和深度确定了三维空间点的位置。https://www.cnblogs.com/Jessica-jie/p/7730731.html
得到物体和相机的相对位置之后,按照估计出的投影关系将该位置的点投影到图像中,看重投影得到的点和之前的点(第一次投影)位置是否重合。实际上肯定不会完全重合,所以我们可以计算得到重投影误差reprojection error
可以使用Bundle adjustment最小化sum of reprojection error重投影误差和。https://www.pianshen.com/article/49561166266/
到这里,这个问题就被抽象为了PnP问题。PNP(Perspective N Points)问题首先于1981年由Fishler和Bolles提出,类似的问题可以追溯到1841年摄影测量学领域。PNP问题的已知条件就是三维点坐标与其对应的二维特征点,要求的是三维点在相机坐标系下的坐标。那么求解思路就有两个:1.求三维点到光心动距离;2.求世界坐标系到相机坐标系到变换矩阵(旋转和平移)。
第一种的示意图及方程组:
第二种就是更符合坐标系变换意义的解。
和N的关系。当N≥6时,PNP问题成为经典的DLT(Direct Linear Transformation 直接线性变换)问题,此时(R,t)均可解,因此研究N≥6的PNP问题已没有多大意义。
当N=3,一般使用P3P方法,它利用三角形相似,将问题转换为了3D到3D的位姿估计问题,但是也只能利用三组点对。
Reference:
1.两种途径https://blog.csdn.net/Zz8474/article/details/82963651
2.https://www.jianshu.com/p/b3e9fb2ad0dc
3.https://blog.csdn.net/luohuiwu/article/details/80722542
4.https://zhuanlan.zhihu.com/p/61742217
5.https://blog.csdn.net/weixin_43206570/article/details/84797361
6.http://slazebni.cs.illinois.edu/spring16/
7.https://blog.csdn.net/honyniu/article/details/51004397
位姿估计的来龙去脉——内外参,三维重建,Pnp问题相关推荐
- OpenCV4每日一练day11:单目位姿估计
一.单目位姿估计 根据相机成像模型,如果已知相机的内参矩阵.世界坐标系中若干空间点的三维坐标和空间点在图像中投影的二维坐标,那么可以计算出世界坐标系到相机坐标系的旋转向量和平移向量.如图所示,当知 ...
- 相机位姿估计2:[应用]实时位姿估计与三维重建相机姿态
关键词:相机位姿估计 OpenCV::solvePnP labview三维图片 文章类型:应用展示+Demo演示 @Author:VShawn(singlex@foxmail.com) @Date:2 ...
- 【自动驾驶】常见位姿估计算法的比较: 三角测量、PNP、ICP、
PnP问题 (3D-2D) DLT(直接线性变换算法) 相机标定工程用到的是DLT(直接线性变换算法) ,它是一类PnP问题 (3D-2D) .请参考[位姿估计 | 视觉SLAM | 笔记]常见位姿估 ...
- 多视图几何 | 相对位姿估计的经典回顾和最新进展!
编辑 | 深蓝AI 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[全栈算法]技术交流群 后台回复[相机标定]获取超详细的单目双目相机 ...
- 由粗到精学习LVI-SAM基础:多传感器内外参标定原理
作者丨Alvin一路向东@知乎 来源丨https://zhuanlan.zhihu.com/p/462759422 编辑丨3D视觉工坊 一.最小二乘法 1.1 线性最小二乘 遇到线性问题通常采用最小二 ...
- 一文详解Camera-IMU内外参标定原理
作者丨Bjergsen@知乎 来源丨https://zhuanlan.zhihu.com/p/68863677 编辑丨3D视觉工坊 在vio系统中,camera-imu间内外参精确与否对整个定位精度起 ...
- CVPR 2021 | 国防科大:基于几何稳定性分析的物体位姿估计方法
作者|机器之心编辑部 来源|机器之心 物体 6D 姿态估计是机器人抓取.虚拟现实等任务中的核心研究问题.近些年来,随着深度学习技术和图像卷积神经网络的快速发展,在提取物体的几何特征方面出现了许多需要改 ...
- CVPR2020 | 通过可微的代理投票损失进行6DoF对象位姿估计
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 原文链接:https://arxiv.org/pdf/2002.03923v1.pdf 摘要 由于遮挡 ...
- 【CV】相对位姿估计的进展和新方法
文稿整理者:小萝卜 审稿&修改:赵季博士 本文总结自12月4日赵季博士关于[相对位姿估计的进展和新方法]公开课. 位姿估计是多视图几何的重要方向.赵博士在公开课第一部分首先概述了位姿估计的背景 ...
最新文章
- 7-Python3从入门到实战—基础之数据类型(字典-Dictionary)
- Source Insight 格式化
- “低代码”开发管理应用,这家大型连锁企业也说好
- Apache详细介绍 - [ Apache v2.4.10 for Windows ]
- java用log.i打印数组_java-使用JSCH将ssh日志打印到列表(android)
- Java面试参考指南–第1部分
- 在线打开html文件,html是什么文件?html文件怎么打开?
- java 比较器类_java常用类——比较器
- Sahi ---实现 Web 自动化测试
- 计算机应用技术班级鉴定,大学班级的鉴定评语(精选50条)
- 原始套接字与抓包过滤规则setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, ...)
- python mysql扩展_关于python:构建’_mysql’扩展错误:无法找到vcvarsall.bat
- ASP.NET中的TextBox下划线
- 杭电acm 4282 A very hard mathematic problem
- QT Creator4.3制作图标
- 她笔下的水墨世界令人赞叹,中国风海报沉浸式国风体验
- DNA存储技术创造新纪录 存储容量已达200MB
- oracle转trs,TRS数据库数据的导入导出2.doc
- 人工智能对未来的影响,可能会被替代的职业
- New Bing使用教程【直接使用无需申请候补】
热门文章
- 哈工大博士历时半年整理的《Pytorch常用函数函数手册》开放下载!内含200余个函数!...
- Spring Boot引起的“堆外内存泄漏”排查及经验总结
- 垃圾分类智能化-垃圾分类机器人
- [ACL2020]Generalizing Natural Language Analysis through Span-relation Representations
- Reparameterization Trick
- 今天pycharm不能正常使用了
- (算法)宝石升级问题
- Oracle 配置监听和本地网络服务
- 【Tech】Mac上安装MAMP打开本地网页
- Java小对象的解决之道——对象池(Object Pool)的设计与应用