当前位置: 首页 > news >正文

从零开始学习SLAM(五):极几何与极约束

文章参考计算机视觉life

前备知识

概念

在这里插入图片描述

几何关系:

上图中:
极平面(Epipolar plane):点c0, c1, p三点确定的平面;
极点(Epipoles): c0 c1 连线与两个平面的交点
基线(Baseline):c0 c1的连线
极线(Epipolar line):极平面与两像平面的交线
旋转矩阵:R
平移矩阵:t
旋转平移矩阵:T
内参:焦距,归一化坐标
外参:旋转、平移矩阵

向量叉乘和点乘的概念:

叉乘只在三维空间中有定义,比如两个向量 a和b 的叉乘写作 a x b,它是与向量 a, b都垂直的向量,其方向通过右手定则决定。
在这里插入图片描述
点乘:
a * b = ||a||* ||b|| *cos(θ)
因此如果两个互相垂直的向量点乘,cos(θ) = 0,点乘结果也为0。
在这里插入图片描述

极约束推理

上图表示的是一个运动的相机在两个不同位置的成像,其中:

左右两个平行四边形分别是相机在不同位置的成像平面C0, C1分别是两个位置中相机的光心,也就是针孔相机模型中的针孔P是空间中的一个三维点,p0, p1分别是P点在不同成像平面上对应的像素点。

如果将点P沿着C0-P0所在的直线移动,你会发现P在左边相机的成像一直不变,都是P0,这时候P在右边相机的成像点p1是一直在变化的

现在我们把极平面中C0-C1-P0-P1单拎出来,看下面的图,由于C0-C1-P-P0-P1都是共面的,所以得到结论一:
结论1
也就是说 一个同时垂直于C0C1与C1P1的向量也垂直于C0P0
p0, p1都是图像上的二维点,不过,这里我们会把它变成三维的方向向量来考虑我们假设一个归一化的图像平面,该平面上焦距f =1 ,因此我们可以定义在以C0为原点的坐标系下
在这里插入图片描述
而在以C1为原点的坐标系下
在这里插入图片描述
事实上,你在C0-C1-p0-p1组成的极平面上,保证在这里插入图片描述的方向不变,在极平面上随便移动,结论1中等式都成立。同样的道理,在极平面上,保证
在这里插入图片描述

方向不变,在极平面上随便移动,结论1中等式仍然都成立。

p0在以C0为原点的参考坐标系,p1在以C1为原点的参考坐标系,所以我们还是需要转换坐标系。这里我们把所有点的坐标都转换到以C0为原点的坐标系。前面说过这些向量都是方向向量和向量起始位置无关,所以这里坐标系变换只考虑旋转就可以。我们记 R 为从C1坐标系到C0坐标系的旋转矩阵

小白:那么 RP1 就是P1在以C0为原点的C0坐标系了,所以在C0坐标系下结论一可以改写为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

已知:p0TEP1 = 0
根据上一节知识点:
从世界坐标系到相机坐标系的公式为:
在这里插入图片描述

那么z=1时从相机坐标系到图像坐标系的公式就为, p0 = k-1p0’, p1 = k-1p1

p0TEP1 = 0 ----> p0T k-TEk-1p1’ = p0T(k-TEk-1)p1’ = p0TFp1

这里的F即为基本矩阵 ,E即为本质矩阵,所以本质矩阵和基本矩阵的区别在于,本质矩阵是使用归一化相机坐标系下的点表示极线约束,基本矩阵是使用图像坐标系下的点表示极线约束的。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 消息系统类型
  • <数据集>航拍牧场牛羊识别数据集<目标检测>
  • Python 字符串转对象
  • 【C语言】static和extern的作用
  • Kubernetes 清理资源常用的 Kubernetes 清理命
  • SAP 预扣税配置步骤文档【Withholding Tax]
  • VMware虚拟机nat无法联通主机
  • 【爬虫】 使用AI编写B站爬虫代码
  • 汽车IVI中控OS Linux driver开发实操(二十五):GPIO设备驱动的上手编写
  • JavaScript语法基础之事件基础(鼠标、表单、页面事件等)
  • 3D场景标注标签信息,three.js CSS 2D渲染器CSS2DRenderer、CSS 3D渲染器CSS3DRenderer(结合react)
  • ESP32-C3在MQTT访问时出现“transport_base: Poll timeout or error”问题的分析(8)
  • TCP 如何保证可靠性?
  • 代码复现改进
  • VUE中出现Cannot find module ‘@/api/xxx.js‘ or its corresponding type declarations
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Docker入门(二) - Dockerfile
  • echarts花样作死的坑
  • FastReport在线报表设计器工作原理
  • Intervention/image 图片处理扩展包的安装和使用
  • IP路由与转发
  • Java方法详解
  • LeetCode29.两数相除 JavaScript
  • linux安装openssl、swoole等扩展的具体步骤
  • Mysql5.6主从复制
  • Redis的resp协议
  • RxJS: 简单入门
  • vue 配置sass、scss全局变量
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 那些年我们用过的显示性能指标
  • 扑朔迷离的属性和特性【彻底弄清】
  • 如何解决微信端直接跳WAP端
  • 1.Ext JS 建立web开发工程
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 阿里云服务器如何修改远程端口?
  • 数据库巡检项
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (1)常见O(n^2)排序算法解析
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (Oracle)SQL优化技巧(一):分页查询
  • (ZT)薛涌:谈贫说富
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)Docker基本介绍
  • (转)mysql使用Navicat 导出和导入数据库