三维重建1-位姿追踪:单应矩阵、本质矩阵和基本矩阵
从今天起,好好复习一下面试到的题目,把研究生时期学习的,工作时间忘记的东西再补回来。
本文所写与原文相距甚远,如有疑问,请拜访原文。未经允许大量盗图,如有不满,请联系删除。 更多的细节请参考多视几何一书。
原文链接:单应矩阵Homograph matrix、本质矩阵Fundamental matrix、基本矩阵essential matrix——游振兴
在单目重建中,位姿求解一般应用的为本质矩阵。 在小型室内场景重建过程中,通常状态下,使用非退化状态下(深度估计之后所有特征点不分属于两个平面)两帧得到的匹配点,可以通过
公式: p2^T *F *p1=0
根据匹配对p1、p2求解 F,进而求出相机位姿变换 R、t 。
1. 透视投影/中心投影
底片生成:相机模型总结为透视投影,空间点P通过中心投影方式落到焦距 f 固定的底片上,同时丢掉了深度信息。
相机内参:定焦固定头相机会有一个固定的投影关系,其中的参数为相机内参。其他扩展功能相机的内参需要更多的信息获取。
投影模型:物体标记为稀疏点模型之后,在世界坐标系中相机以任一位姿(R,t)观察模型,总能得到唯一的二维平面点位置集合( S(p) )。
真空相机模型中,三维点集到图像底片,理论上遵循透射投影关系,相机表示为内参矩阵K,坐标转换关系为:
点集映射到底片上时丢失深度,其中f为相机焦距。dx,dy为像元尺寸,u0,v0为图像中心。 fx = f/dx ,fy = f/dy 分别为x轴和y轴上的归一化焦距。内参矩阵一般使用事先标定的方法。
2. PNP perspective-n-point
N点透视,给出一个世界坐标系标定的物体/三维点集合。依据透射关系,根据平面图像/N个二维投影点的位置来推算相机的观察者位姿,为PNP。
文章:使用OpenCV PNP
3. 核面约束
相机经过位姿转换,通过对同一个物体和同一组点观察得到两幅图像,同一组点在两幅图片中位置和顺序不同,但满足相机透视的 核面约束。
图3.1
核面约束:
上图中那个等于0的方程:p^T *F*p=0;
基本矩阵约束关系表现为:
这里的基本矩阵约束称为核线约束,如上图3.1,如果两帧之间的一个点坐标,外参矩阵已知,则空间点在另外一帧的坐标被约束在一条极线上,可以用来缩小图像匹配点的搜索范围。基本矩阵也可以用来计算内参矩阵。
求取位姿:根据一组匹配的点集和极线约束可以得到一个相对固定的位姿转换( R, t )。
本质矩阵:其中E矩阵为本质矩阵 Essential Matrix。E矩阵大小为3×3, 理论上旋转、平移共有6个自由度(3个旋转,3个平移),因尺度等价,E有5个自由度(z约束为1)。
E矩阵求解一般使用8点法,求取E矩阵之后,通过SVD分解,恢复出R,t。 当然也可以使用计算解析值的方法,使用五个点对,得到的结果有可能不太准确。
基本矩阵:其中F矩阵为基本矩阵 Fundamentl Matrix。 根据内参矩阵和本质矩阵,解析出基本矩阵。
4. 相机外参
在小型室内场景重建过程中,通常状态下,使用非退化状态下两帧得到的匹配点,可以通过
公式: p2^T *F *p1=0
根据匹配对p1、p2求解F,进而求出相机外参——位姿变换 R、t 。Rt即相机外参。
本质矩阵是相对相机位姿的简单函数:
E= S(t)R
相机运动一般很难测量,且相机有可能未被标定,不能直接用于计算本质矩阵。一般是使用八点法,在E矩阵的线性框架下求解。
5. 退化现象/斜面投影
对一个平面/一组平面上的点进行不同位姿观察,依然会得到两个投影面/两组投影点,这对应了三维稀疏场景重建/SLAM中的退化问题。
约束关系变化为:
其中H矩阵为单应矩阵--Homograph Matrix。
5. 基本矩阵Fundamental Matrix、本质矩阵Essential Matrix、单应矩阵 Homograph Matrix
5.1 Essential Matrix
E= t ^ R 为3*3的矩阵,奇异值为 [ u, u, 0] ^ T 的形式。为本质矩阵的内在性质。
性质:理论上综合旋转、平移共有6个自由度,因尺度等价,E有5个自由度。
求解:一般使用8点法,然后通过SVD分解E矩阵,恢复出R,t 。也可以使用解析法求解E矩阵。
5.2 Fundamental Matrix
基本矩阵F和E只差了一个相机内参 F = K^(-T) *E *K^(-1) ,如果需要,直接带入求解。
5.3 Homograph Matrix
单应矩阵的定义与R、t、平面参数相关,单应矩阵为3*3的矩阵,自由度为8,求解的思路和E、F相似。
求解:可用一组不共线的四个匹配点来计算矩阵H。
总结:
根据图像来估计位姿,一般称之为位姿追踪。非退化状态下可是根据匹配点求解Essential Matrix ,退化状态下课根据匹配点来求解 Homograph Matrix。
可用于实时计算位姿。
三维重建1-位姿追踪:单应矩阵、本质矩阵和基本矩阵相关推荐
- 单目初始化 单应矩阵 本质矩阵 恢复R t 三角变换求 3D点
单目初始化 单应矩阵 本质矩阵 恢复R t 三角变换求 3D点 博文末尾支持二维码赞赏哦 ^_^ /* * This file is part of ORB-SLAM2 * * 单目相机初始化 * 用 ...
- ORB-SLAM2 特征点法SLAM 单目 双目 rgbd相机SLAM 单应/本质矩阵恢复运动 小图大图地图优化
ORB-SLAM2 ORB特征点法SLAM 支持单目.双目.rgbd相机 安装测试 本文github链接 orbslam2 + imu ORB-SLAM是一个基于特征点的实时单目SLAM系统,在大规模 ...
- 极几何,本质矩阵,基础矩阵,单应矩阵,相机投影矩阵
什么是三角化? 三角化就是下图的红字部分:K和K'分别为两个相机的内参矩阵 什么是极几何? 极几何描述了同一场景或者物体在两个视点图像间的对应关系. 下图中的O1和O2分别是两个相机的光心,即摄像机坐 ...
- 基础矩阵,本质矩阵,单应性矩阵讲解
ORB-SLAM点云地图中相机的位姿初始化,无论算法工作在平面场景,还是非平面场景下,都能够完成初始化的工作.其中主要是使用了适用于平面场景的单应性矩阵H和适用于非平面场景的基础矩阵F,程序中通过一个 ...
- svo: semi-direct visual odometry 半直接视觉里程计 fast角点匹配 光流匹配 单应变换求位姿 直接法求解位姿 高斯均匀分布混合深度滤波
svo: semi-direct visual odometry 半直接视觉里程计 本博文github地址 svo代码注释 SVO代码分析 较细致 svo: semi-direct visual od ...
- 09_对极约束与单应矩阵
前言 根据上一节的介绍,我们已经有了匹配好的点对,然后我们就可以根据点对估计相机的运动.这里由于相机的原理不同,我们要分情况讨论: 如果是单目相机,此时我们仅知道2D的像素坐标,要根据两组2D点估计相 ...
- 多视图几何总结——从本质矩阵恢复摄像机矩阵
多视图几何总结--等距变换.相似变换.仿射变换和射影变换 多视图几何总结--从本质矩阵恢复摄像机矩阵 (1)本质矩阵性质 (2)从本质矩阵恢复摄像机矩阵 多视图几何总结--从本质矩阵恢复摄像机矩阵 本 ...
- 计算机视觉中本质矩阵的概念,【计算机视觉】Lecture 19:本质矩阵和基础矩阵...
对极几何 左边 极点:相机1所看到的相机2的位置. 右边 极点:相机2所看到的相机1的位置 对极几何 对应点位于共轭极线上 对极几何 给定一幅图像中的一个点,我们如何确定在第二幅图像中要搜索的对应极线 ...
- 从本质矩阵恢复相机矩阵
本质矩阵 本质矩阵(essential matrix )是基本矩阵在归一化图像坐标下的一种特殊形式. 考虑相机矩阵P=K[R∣t]P=K[R|\mathbf t]P=K[R∣t],点x=PX\math ...
最新文章
- Java 处理0x00特殊字符
- Java制作VCARD
- 计算机管理设置,win10系统打开计算机管理的设置步骤
- 如何将maven项目打包成可执行的jar
- mysql中engine是什么意思_mysql中engine=innodb和engine=myisam的区别
- 内存泄漏分析工具tMemoryMonitor(转载)
- 海康监控设备如何修改IP地址
- 华为网络设备查看设备温度状态检查命令方法
- 【MFC】CTabSheet类之再改造
- UE4 InputMode无法锁定编辑器视口鼠标解决方案
- java乘方运算符号_Java 4. 运算符号
- 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别
- php中seq是什么意思,seq-answer
- 飞飞影视系统php版怎么进,飞飞影视系统PHPVOD搬家图文教程
- Go语言 数据库编程
- QQ空间打不开,IE里无法运行脚本的解决方案 转自:spookfox.cublog.cn
- C#Url下载图片(jpg\pdf\png\jpeg...)
- html图片自动切换代码,急哦~!如何实现网页中的图片自动变换?
- 创建线程池的七种方式
- 算法唯手熟尔(PAT剩余清单 or leetcode)---希望可以日更