Epipolar Geometry(对极几何)介绍

news/2025/12/6 0:41:14/文章来源:https://www.cnblogs.com/DemoFX/p/19314155

Epipolar Geometry(对极几何)是三维重建的数学基础,用于描述三位场景投影到两张图片上的点之间存在的几何关系。

61

如图所示,O1,O2分别表示相机的中心点,P表示三维场景中的顶点,p和p'表示顶点P点投影到两个相机平面的像素点,e和e'则表示O1和O2连线与相机平面的交点。O1,O2,P三个点确定的平面叫Epipolar plane(极平面),O1,O2的连线叫Baseline(基线),Baseline与相机平面的交点叫做epipole(极点),在图中为e和e',pe和p'e'叫做Epipolar line(极线),这些术语经常在不同的paper里出现,应该熟悉。虽然我们不知道P点的具体位置,但是P点在两个相机平面的投影需要满足一定的约束条件,即与p点对应的p'点应该在p'e'这条直线上,这就减少了搜索的范围。

一.Homography matrix(单应性矩阵)

62

Homography matrix表示两个平面上的点之间的变换,下面举几个例子:

63
需要注意到这两个平面的坐标系的选择,是二维平面坐标系而不是三维坐标系统。

64这个一般用在camera calibratiion,在一个平面上放置棋盘样的平面投影到相机平面进行相机校准。

65
简单旋转相机得到的两幅图像之间的关系,

Homography matrix的用处:

66

在增强现实中,使用带标记点的共面的点来估算相机的位置进而进行虚实的混合。看图片应该是用的OGRE3D引擎。

67
透视投影效果的去除和矫正。

68
全景图片的缝合。

二.Essential matrix(本质矩阵)。

69
70

71

72

73

74

以上是Essential matrix的推导过程及性质,需要注意的是这里的p,p'为齐次坐标下的点,而不是像素坐标。Canonical camera指的是相机的intrinsic参数已知。

三.Fundamental matrix(基础矩阵).

75

76

77

78

以上是Fundamental matrix的推导过程及性质。

四.Fundamental matrix和Essential matrix的关系

79

80

需要说明的是,这里的世界坐标系的原点定义在右边相机的位置。

五.Eight-point Algorithm(八点算法).

81

82

83

84

85

八点算法用于估算Fundamental matrix,估算Fundamental matrix还有一个七点算法,感兴趣的可以在网上搜索一下,在此不再骜述。需要特别说明的是八点算法和七点算法都是用于non-calibrated camera,求解calibrated camera还有一个专门的五点算法,不过最近的研究发现,五个点也可以估算Fundamental matrix,具体请参阅CVPR2018的论文Five-point Fundamental Matrix Estimation for Uncalibrated Cameras

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/989394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

购物车服务(Basket.API)

前言 苦尽甘来终有时,一路向阳待花期 1.基础设施配置(AddBasicServiceDefaults) builder.AddBasicServiceDefaults()是一个 扩展方法,主要实现了:健康检查 (Health Checks) OpenTelemetry(日志/指标/追踪/数据导出…

eshop前端界面(WebApp)

前言 倘若南风知我意,莫将晚霞落黄昏 1.基础设置配置 AddServiceDefaults:1.健康检测 2.OpenTelemetry(可观测性框架:指标、链路追踪、日志、数据导出) 3.服务注册发现 4.HttpClient2.Blazor 注册 Razor 组件服务…

ECA 注意力机制在rol poling 的哪里

ECA 注意力机制并不内嵌在 RoI Pooling 运算内部,而是套在 RoI Pooling 之前或之后的卷积特征图上,常见位置有两处:Backbone 侧(RoI Pooling 之前)在 Faster R-CNN 的 VGG/ResNet backbone 里,每个卷积块或 con…

商品服务(Catalog.API)

前言 世界上没有白走的路,只有停下来的人 1.基础设施配置 builder.AddServiceDefaults()是一个 扩展方法,把一堆“常用的基础设施配置”统一封装起来。 这个方法主要实现了:健康检查 (Health Checks) OpenTelemetry…

实验5作业

任务1 task1.1#include <stdio.h> #define N 5void input (int x[],int n); void output(int x[],int n); void find_min_max(int x[],int n,int *pmin,int *pmax);int main() {int a[N];int min,max;printf(&qu…

7.订单流程服务(OrderProcessor)

前言 世界是公平的 拿你有的 换你要的 OrderProcessor 1.基础设施配置 OrderProcessor默认只启动了:AddDefaultHealthChecks:健康检测 ConfigureOpenTelemetry:配置OpenTelemetry。OpenTelemetry(简称 OTel)是一个…

嵌入式软件之分层设计

嵌入式软件分层设计思想 1. 设计目的 解决业务逻辑与硬件实现的强耦合问题,提高代码的可移植性、扩展性和可维护性,采用分层架构设计。核心思想是将“业务(做什么)”与“硬件操作(怎么做)”分离。 2. 架构总览 系…

第46天(中等题 数据结构)

打卡第四十六天 2道中等题题目:思路:前缀和+哈希表 代码: class Solution { public:vector<int> vowelStrings(vector<string>& words, vector<vector<int>>& queries) {int n = w…

量化操作

“把连续或大数值映射成离散或小数值” 的过程,在深度网络里主要有两条主线:特征量化(常见于检测/分割的 RoI 系列)把浮点坐标 四舍五入到整像素例:x=6.7 → 6,y=3.2 → 3目的:让特征图上的索引变成整数,方便直…

2、用例设计方法

2.1 边界值分析法 2.1.1 核心定义 针对 输入 / 输出的 “边界条件” 设计用例,因为软件在边界处(比如数值上限 / 下限、长度极值)最容易出现逻辑错误。 2.1.2 适用场景有明确范围的输入(如 “年龄 1-100 岁”“密码…

对每个子区域的采样点进行池化操作,池化操作是什么

池化(pooling)就是“把一个小邻域内的若干值压缩成一个值”的统计/聚合操作。 在 RoI Align 里,对应步骤是:把 RoI 平均分成 77(或 1414)个子区域(bin)。每个 bin 内再取 4 个采样点(浮点坐标)→ 用双线性插…

RoI Align / RoI Pool 里的采样点

目的:把一个任意大小的候选框(RoI)变成固定 77(或 1414)特征。做法:把 RoI 均分成 77 个 bin(格子)。每个 bin 内再选 4 个(或更多)亚像素坐标(浮点坐标),用双线性插值从特征图上计算这 4 点的值并平均,…

# Linus Torvalds vs. 模糊抽象:代码命名清晰性与认知负荷的工程思维

关联知识库:# Linus Torvalds vs. 模糊抽象:代码命名清晰性与认知负荷的工程思维Linus Torvalds vs. 模糊抽象:代码命名清晰性与认知负荷的工程思维 原文链接 Linus Torvalds vs. Ambiguous Abstractions(2025年1…

深度学习、机器学习与强化学习的关系:通俗解析(从基础到细分)

深度学习、机器学习与强化学习的关系:通俗解析(从基础到细分) 很多新手会混淆这三个概念:机器学习是“大范畴”,深度学习是机器学习的“子集”(靠神经网络实现),强化学习是机器学习的“另一独立子集”(靠交互…

构建设计模式字典

关联知识库:构建设计模式字典 设计模式字典 - 中文版 https://draveness.me/holy-grail-design-pattern/ https://www.cnblogs.com/wxdlut/p/17346906.html https://developer.aliyun.com/article/342530 https://www…

# Residuality Theory批判性分析:架构应该被训练而非设计

关联知识库:# Residuality Theory批判性分析:架构应该被训练而非设计Residuality Theory批判性分析:架构应该被训练而非设计来源: InfoQ - Producing a Better Software Architecture with Residuality Theory 演讲…

# Python 3.14去GIL革命:性能飞跃25%与Python之父的冷静警告

关联知识库:# Python 3.14去GIL革命:性能飞跃25%与Python之父的冷静警告没有。Yeah嗯。嗯# Python 3.14去GIL革命:性能飞跃25%与Python之父的冷静警告核心要点Python 3.14正式提供可选的无GIL(全局解释器锁)支持…

# MVP架构选型指南:停止过度设计,从简单开始

关联知识库:# MVP架构选型指南:停止过度设计,从简单开始MVP架构选型指南:停止过度设计,从简单开始核心观点:大多数 MVP 失败并不是因为无法扩展,而是因为没有人在乎。过度建构堆疊只会导致倦怠和无休止的延遲。…

UV Python包管理器:解释器与虚拟环境工程实践指南【from deepseek】

关联知识库:UV Python包管理器:解释器与虚拟环境工程实践指南【from deepseek】UV Python包管理器:解释器与虚拟环境工程实践指南 1. 核心概念解析 UV的设计哲学 UV采用一体化设计,将包管理、虚拟环境管理和Python…

# 软件危机与复杂性:工程思维的诞生背景

关联知识库:# 软件危机与复杂性:工程思维的诞生背景软件危机与复杂性:工程思维的诞生背景 核心要点速查 ⚡ 软件危机的核心故事线 两次软件危机 → 工程思维诞生 → 解决日益增长的需求和复杂性 第一次软件危机(1…