当前位置: 首页 > 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即为本质矩阵,所以本质矩阵和基本矩阵的区别在于,本质矩阵是使用归一化相机坐标系下的点表示极线约束,基本矩阵是使用图像坐标系下的点表示极线约束的。

相关文章:

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

文章参考计算机视觉life 前备知识 概念 几何关系: 上图中: 极平面(Epipolar plane):点c0, c1, p三点确定的平面; 极点(Epipoles): c0 c1 连线与两个平面的交点 基线&a…...

Freertos学习笔记

目录 1.单片机_RTOS_架构的概念 2.系统中的数据类型和编程命名规范 3.堆和栈的概念 4.rtos各个操作系统的优先级 5.1000HZ1ms;1000ms1s。 6.任务状态转换图 7.FreeRTOS任务管理中的Delay函数 8.任务调度算法 9.同步与互斥的概念 10.能实现同步、互斥的各类…...

线程(Thread)的使用方法和锁(同步代码块,lock锁)的问题

多线程: 进程: 正在运行的程序,是系统进行资源分配和调用的独立单位。 每一个进程都有它自己的内存空间和系统资源。 理解:一个正在运行的软件 线程: …...

Java 反射机制

Java 反射(Reflection)是 Java 语言提供的一种在运行时动态获取类信息、创建对象、调用方法、访问属性等功能的机制。它允许程序在运行时对类进行检查、修改和调用,而不需要在编译时就知道类的具体信息。 一、反射的主要类和方法 Class类&…...

详解MBR分区结构以及GPT分区结构

学习笔记: GUID(GPT)分区表详解_gpt分区表-CSDN博客 详解MBR分区结构以及GPT分区结构-CSDN博客 其中U盘作为移动存储设备,可不具备上述分区,也可识别...

jvm 调优篇

一 jvm调优篇 1.1 查看新生代和老年代的比例 输入命令: jinfo -flag NewRatio 17480 1.2 查看新生代,survivor和Eden区比例 1.3 查看jvm调优参数 二 调优参数 2.1 oom异常 通过visual vm查看 2.java dump 大对象 2.2 mat工具进行分析 栈的信息...

Spring AOP应用指南:概念、通知与表达式分析

目录 一.AOP的基础概念 二.Spring AOP的应用场景 三.Spring AOP的核心概念 ▐ 切点(Pointcut) ▐ 连接点(Join Point) ▐ 通知(Advice) ▐ 切面(Aspect) 通知类型 四.PointCut与Order 切面优先级 五.切点表达式 execution(...)表达式 annotation表达式 一.AOP的基…...

汽车的UDS诊断01

UDS(Unified Diagnostic Services):ISO14229中定义了汽车通用诊断协议;ISO15765规定了帧的格式; 1)UDS中的四种帧 UDS中的四种帧:单帧、首帧、流空帧、连续帧 图1 …...

MySQL——单表查询(二)按条件查询(6)DISTINCT 关键字作用于多个字段

DISTINCT 关键字可以作用于多个字段,其语法格式如下所示: SELECT DISTINCT 字段名 1,字段名 2,… FROM 表名; 在上面的语法格式中,只有 DISTINCT 关键字后指定的多个字段值都相同,才会裱认作是重复记录。 例如&#xff0…...

python从入门到精通:数据容器

数据容器介绍 一种可以容纳多份数据的数据类型,容纳的每一份数据称之为一个元素,可以是任意类型的数据,如字符串、数字、布尔等。 数据容器根据特点的不同,如: 是否支持重复元素 是否可以修改 是否有序&#xff0…...

Java 中都有哪些引用类型?

Java 中都有哪些引用类型? 强引用 在 Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的。因此强引…...

使用 Dify 和 AI 大模型理解视频内容:Qwen 2 VL 72B

接下来的几篇相关的文章,聊聊使用 Dify 和 AI 大模型理解视频内容。 本篇作为第一篇内容,以昨天出圈的“黑神话悟空制作人采访视频”为例,先来聊聊经常被国外厂商拿来对比的国产模型:千问系列,以及它的内测版。 写在…...

mybatisplus 通过xml 定义接口

在 MyBatis-Plus 中,虽然它极大地简化了 CRUD 操作,提供了许多注解方式(如 Select、Insert、Update、Delete)来直接在 Mapper 接口上定义 SQL 语句,但 MyBatis-Plus 仍然支持传统的 MyBatis 风格的 XML 配置方式来定义…...

上周稼先社区的活动

参天是什么? 最近”参天”很火,不仅MySQL社区,听说Monty最近也跟他们搞了很多活动。其实说起华为的数据库,只有从事数据库行业的人才知道高斯,其他很多人不知道。但是即使从事数据库相关的人,对另外一个产…...

day_45

115. 不同的子序列 class Solution:def numDistinct(self, s: str, t: str) -> int:dp [[0] * (len(t) 1) for _ in range(len(s) 1)]for i in range(len(s)):dp[i][0] 1for j in range(1, len(t)):dp[0][j] 0for i in range(1, len(s) 1):for j in range(1, len(t) …...

SQL 时间盲注 (injection 第十六关)

简介 SQL注入(SQL Injection)是一种常见的网络攻击方式,通过向SQL查询中插入恶意的SQL代码,攻击者可以操控数据库,SQL注入是一种代码注入攻击,其中攻击者将恶意的SQL代码插入到应用程序的输入字段中&#x…...

nginx核心配置示例

1.核心配置示例 基于不同的IP、不同的端口以及不用得域名实现不同的虚拟主机,依赖于核心模块 ngx_http_core_module实现。 1.新建一个 PC web 站点 # 访问测试 [rootnode100 ~]# curl www.root.org # 注意在访问主机中设解析 2.root 与 alias root :指…...

【面向对象】04面向对象三大特征之——继承

文章目录 一、super1.构造方法2.属性3.方法 二、规则三、继承权限 继承 继承是Java中实现代码重用的重要手段之一。使用继承,可以减少代码量,方便修改代码。Java中只支持单根继承,即一个类只能有一个直接父类。 继承使用关键字extends&#…...

计算机毕业设计Python+Flask弹幕情感分析 B站视频数据可视化 B站爬虫 机器学习 深度学习 人工智能 NLP文本分类 数据可视化 大数据毕业设计

### 开题报告:基于Python和Flask的弹幕情感分析系统 #### 一、研究背景 弹幕(Danmaku)是一种实时在视频播放过程中显示的评论或弹幕,起初源于日本,但在中国的二次元文化和直播平台中得到了广泛应用。弹幕作为一种独特…...

用基础项目来理解spring的作用

简介 spring官方的解释过于专业化,初学者可能比较难懂,接下来我将通过一个最基础的Java项目来尽可能的展示spring中的作用及spring的底层是如何来实现的。 项目结构 该项目是一个简单的JavaSE项目,没有maven或者tomcat等其他。只在控制台进…...

Json-复杂泛型解析工具类

为了处理复杂的 JSON 泛型解析任务,你可以创建一个通用的工具类来封装这些操作。这里分别 针对 Jackson 和 Fastjson 提供两个工具类的例子。 1. Jackson 的 JSON 泛型解析工具类 import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackso…...

CLIP-VIT-L + Qwen 多模态学习笔记 -3

多模态学习笔记 - 3 参考repo:WatchTower-Liu/VLM-learning; url: VLLM-BASE 吐槽 今天接着昨天的源码继续看,黑神话:悟空正好今天发售,希望广大coder能玩的开心~ 学习心得 前情提要 详情请看多模态学习笔记 - 2 上次我们讲到利用view(…...

如何将网站地图Sitemap提交至百度、谷歌及Bing搜索引擎

原文:如何将网站地图Sitemap提交至百度、谷歌及Bing搜索引擎 - 孔乙己大叔 (rebootvip.com) 在当今高度竞争的互联网环境中,搜索引擎优化(SEO)对于网站的可见性和成功至关重要。网站地图(Sitemap)&#xff…...

DC-DC FB分压电阻计算 (MP1584 SY8205为例)

【本文发布于https://blog.csdn.net/Stack_/article/details/141371702,未经许可不得转载,转载须注明出处】 获取文件 【MP1584 MP2451 SY8205 SY8201 FB分压电阻计算】 一般DC-DC芯片对输出电压的调节,是以FB引脚达到0.6V或者0.8V为止的&…...

ESLint详解及在WebStorm中的应用

ESLint是一个开源的JavaScript代码检查工具,用于识别和报告JavaScript代码中的模式问题。它可以帮助开发者遵循一定的编码规范和最佳实践,提高代码质量和可维护性。 ESLint的工作原理是通过插件和配置文件来定义一系列规则,对JavaScript代码…...

数据库系统 第20节 云数据库

云数据库是一种基于云计算技术的数据库服务,它允许用户通过互联网访问和操作数据库,而无需在本地服务器上安装和维护数据库软件。以下是云数据库的一些主要特点和优势: 弹性扩展:云数据库能够根据应用的需求动态调整计算和存储资源…...

用excel内容批量建立文件夹

建文件夹是电脑操作过程中比较常见的,但是用EXCEL内容批量建文件夹,这似乎不相关的两个操作,那么怎么实现这样的一个功能,我们需要用到专门的软件进行关联,推荐:可易文件夹批量生成器,这个软件有…...

SIRA-PCR: Sim-to-Real Adaptation for 3D Point Cloud Registration 论文解读

目录 一、导言 二、 相关工作 1、三维点云配准工作 2、无监督域适应 三、SIRA-PCR 1、FlyingShape数据集 2、Sim-to-real自适应方法 3、配准 4、损失函数 一、导言 该论文来自于ICCV2023,论文提出了一种新的方法SIRA-PCR,通过利用合成数据Flying…...

IDEA安装和使用(配图)

功能强大: 1、强大的整合能力,比如Git,Maven,Spring等 2、开箱即用(集成版本控制系统,多语言支持的框架随时可用) 3、符合人体工程学 1、高度智能 2、提示功能的快速,便捷,范围广 3、好用…...

leetcode67. 二进制求和,简单模拟

leetcode67. 二进制求和 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 示例 1: 输入:a “11”, b “1” 输出:“100” 示例 2: 输入:a “1010”, b “1011” 输出:“10101” …...