《计算机视觉中的多视图几何》笔记(9)

现在进入本书的part 2了,标题是Two-View Geometry。第9-14章都隶属于part 2,这一部分涵盖了两个透视图的几何形状知识,这些视图可以像在立体设备中同时获取,或者例如通过相对于场景移动的相机顺序获取。这两种情况在几何上是等价的,这里不再区分。每个视图都有一个关联的相机矩阵 P P P P ′ P' P,其中 ′ ' 表示与第二个视图关联的实体,3D点 X X X在第一个视图中成像为 x = P X x = PX x=PX,在第二个视图中 x ′ = P ′ X x' = P'X x=PX。图像点 x x x x ′ x′ x对应,因为它们是同一3D点的图像。 我们将解决三个问题:

  1. 对应几何。 给定第一个视图中的图像点 x x x,如何约束第二个视图中对应点 x ′ x' x的位置?
  2. 相机几何形状(运动)。 给定一组对应的图像点 x i ↔ x i ′ , i = 1 , . . . , n {x_{i} ↔ x'_{i}},i = 1,...,n xixi,i=1,...,n,两个视图的摄像机 P P P P ′ P' P是多少?
  3. 场景几何(结构)。 给定对应的图像点 x ↔ x ′ x ↔ x′ xx和摄像机 P , P ′ P,P' P,P X X X在3D空间中的位置是什么?

第9章描述了两种视图的对极几何,并直接回答了第一个问题:一个视图中的点定义了另一个视图中对应点所在的对极线。 对极几何结构仅取决于相机——它们的相对位置和内部参数。 它完全不依赖于场景结构。

第10章描述了未校准多视图几何中最重要的结果之一——摄像机和场景结构的重建可以仅根据图像点对应关系来计算; 不需要其他信息。 这同时回答了第二个问题和第三个问题。 仅从点对应关系获得的重建就达到了3D空间的投影模糊度,并且可以通过提供有关摄像机或场景的明确定义的附加信息来解决该模糊度。 以这种方式,可以从未校准的图像计算仿射或度量重建。

接下来的两章将详细介绍计算这种重建的细节和数值算法。

第11章描述了从一组相应图像点 x i ↔ x ′ i {x_{i} ↔ x′_{i}} xixi计算 F F F的方法,即使这些点的结构未知且相机矩阵未知。 然后可以根据计算的 F F F确定相机 P P P P ′ P' P

第12章描述了在给定摄像机和相应图像点的情况下通过三角测量计算场景结构。

第13章介绍了平面的双视图几何。 它为第一个问题提供了另一种答案:如果场景点位于一个平面上,那么一旦计算出该平面的几何形状,一个图像中的点的图像 x x x就确定了另一图像中 x ′ x' x的位置。 这些点通过平面投影变换相关。 本章还描述了视图之间特别重要的射影变换——无限单应性,这是由无穷远平面产生的变换。

第14章描述了两个摄像机 P P P P ′ P' P仿射的特殊情况下的双视图几何。 这种情况比一般投影情况有许多简化,并且在许多实际情况下提供了非常好的近似。

9 Epipolar Geometry and the Fundamental Matrix

本章主要讲述对极几何、基本矩阵F和本质矩阵E。

文章目录

  • 9 Epipolar Geometry and the Fundamental Matrix
    • 9.1 Epipolar geometry
    • 9.2 The fundamental matrix F F F
      • 9.2.1 Geometric derivation
      • 9.2.2 Algebraic derivation
      • 9.2.3 Correspondence condition
      • 9.2.4 Properties of the fundamental matrix
    • 9.5 Retrieving the camera matrices
    • 9.6 The essential matrix

9.1 Epipolar geometry

对极几何是投影几何的内在性质,反应的是两幅图像的关系。

假设3D空间中的点 X X X在两个视图中成像,第一个视图中为 x x x,第二个视图中为 x ′ x′ x。 对应的图像点 x x x x ′ x′ x之间有什么关系? 如图 9.1a 所示,图像点 x x x x ′ x′ x、空间点 X X X和相机中心共面。将该平面表示为 π \pi π。 显然,从 x x x x ′ x′ x反投影的光线在 X X X处相交,并且光线共面,位于 π \pi π内。 后一个属性在寻找对应关系时最为重要。
在这里插入图片描述
假设现在我们只知道 x x x,我们可能会问对应点 x ′ x' x是如何约束的。平面 π \pi π由基线和 x x x定义的射线确定。 从上面我们知道,未知点 x ′ x' x对应的射线位于 π \pi π中,因此点 x ′ x' x位于 π \pi π与第二像平面的交线上 l ′ l' l。这条线 l ′ l' l是从 x x x反投影的射线的第二个视图中的图像。它是对应 x x x的极线。就立体匹配算法而言,好处是搜索与 x x x对应的点不需要覆盖整个图像平面,而是可以限制在直线 l ′ l' l内。

9.2 The fundamental matrix F F F

基本矩阵是对极几何的代数表示。 下面我们根据点与其极线之间的映射推导基本矩阵,然后指定矩阵的属性。

9.2.1 Geometric derivation

假设空间点 X X X在图像1的投影是 x x x,图像2的投影是 x ′ x' x,那么 x x x x ′ x' x有什么关系?

x , x ′ , X x,x',X x,x,X三个点构成了一个平面,叫极平面 π \pi π。如果我们把 x x x反投影,会形成一条 π \pi π上的射线 l ′ l' l l ′ l' l往图像2上投影, x ′ x' x一定会在 l ′ l' l上, l ′ l' l就叫极线。同时,连接图像1的相机中心和图像2的相机中心,这条线叫基线,基线会和两个图像有交点,叫极点。图像2的极点 e ′ e' e也在 l ′ l' l上,所以 x ′ x' x e ′ e' e构成了一条直线,可以表达为:
l ′ = e ′ × x ′ = [ e ′ ] × x ′ l' = e' \times x' = [e']_{\times} x' l=e×x=[e]×x
因为 x ′ = H π X x'=H_{\pi}X x=HπX所以 l ′ = [ e ′ ] × H π x = F x l'=[e']_{\times} H_{\pi}x=Fx l=[e]×Hπx=Fx

由此我们定义fundamental matrix F F F,这个矩阵的rank为2。它表示从2维到1维射影空间的映射,因此必须rank是2。

9.2.2 Algebraic derivation

现在我们假设有两个相机的投影矩阵 P P P P ′ P' P

我们再考虑一下 x ′ x' x怎么用 x x x表示? x ′ = P ′ P + x x'=P'P^{+}x x=PP+x,就是把 x x x P P P的逆反投影回去,再用 P ′ P' P投影一下。 e ′ e' e怎么用 e e e表示?很简单, P ′ C P'C PC。看到这里有个问题, C C C为啥不是 P ′ P + C P'P^{+}C PP+C?因为 C C C本身不用 P + P^{+} P+的逆去反投影,这是为什么呢?

因为如果我们把 x x x反投影,会形成一条射线,可以表示为:
X ( λ ) = P + x + λ C X(\lambda) = P^{+}x + \lambda C X(λ)=P+x+λC

λ → ∞ \lambda \rightarrow \infty λ的时候, X ( λ ) = C X(\lambda)=C X(λ)=C,所以我们看到 C C C其实和 P P P没啥关系的。

回到正题,我们把 x ′ e ′ x' e' xe的表达式带入 l ′ l' l就得到了:
l ′ = ( P ′ C ) × ( P ′ P + x ) = [ e ′ ] × ( P ′ P + ) x = F x l'=(P'C) \times (P'P^{+}x) \\ =[e'] _{\times} (P'P^{+})x \\ =Fx l=(PC)×(PP+x)=[e]×(PP+)x=Fx
就得到了基本矩阵 F F F的表达式。

9.2.3 Correspondence condition

然后, x ′ x' x l ′ l' l上,所以 x ′ T l ′ = 0 x'^T l' = 0 xTl=0,这样就得到了:
x ′ T F x = 0 x'^T F x=0 xTFx=0

这个永远正确,因为如果点 x x x x ′ x' x对应,则 x ′ x' x位于与点 x x x对应的对极线 l ′ = F x l' = Fx l=Fx上。 换句话说, 0 = x ′ T l ′ = x ′ T F x 0 = x'^{T}l' = x'^{T}Fx 0=xTl=xTFx

9.2.4 Properties of the fundamental matrix

下面我们总结一下 F F F的性质:

  1. F 是一个 3 × 3 3 \times 3 3×3的矩阵 rank=2,有7个自由度,所以 d e t F = 0 det F = 0 detF=0
  2. x , x ′ x, x' x,x是一对对应点,那么 x ′ T F x = 0 x'^T F x = 0 xTFx=0
  3. F x Fx Fx就是 x x x对应极线, F T x ′ F^{T}x' FTx x x x对应极线
  4. 极点满足 F e = 0 Fe=0 Fe=0 F T e ′ = 0 F^{T}e'=0 FTe=0,所以解方程 F x = 0 Fx=0 Fx=0就得到了极点

9.5 Retrieving the camera matrices

F F F的一个非常重要的用途就是恢复两个摄像机的矩阵。

我们先说明两个结论。
结论9.8 如果 H H H是一个 4 × 4 4 \times 4 4×4的投影变换矩阵,那么 P , P ′ P,P' P,P的基本矩阵 F F F,与 P H , P ′ H PH,P'H PH,PH的基本矩阵 F F F是一样的。

结论9.9 假设 P = [ I ∣ 0 ] , P ′ = [ M ∣ m ] P=[I|0],P'=[M|m] P=[I∣0],P=[Mm],那么 F F F就是 [ m ] × M [m]_{\times} M [m]×M

那么这么 M , m M,m M,m具体长什么样子?以下结论告诉我们。

结论9.14 F F F对应的两个相机矩阵可以写成 P = [ I ∣ 0 ] , P ′ = [ [ e ′ ] × F ∣ e ′ ] P=[I|0],P'=[[e']_{\times}F|e'] P=[I∣0],P=[[e]×Fe]

9.6 The essential matrix

本质矩阵就是对应点在图像坐标系下的对应关系。假设我们知道内参,那么 P = K [ R ∣ t ] P=K[R|t] P=K[Rt],所以 K − 1 P = [ R ∣ t ] K^{-1} P=[R|t] K1P=[Rt],其中 K − 1 P K^{-1} P K1P叫归一化的相机矩阵。那么点会怎么变化?

原来是 x = P X x=PX x=PX,现在 P P P变成了 K − 1 P K^{-1} P K1P,所以点就变成了 K − 1 P X = K − 1 x K^{-1}PX=K^{-1}x K1PX=K1x,我们把 K − 1 x K^{-1}x K1x记为 x ^ ′ \hat{x}' x^,所以 K x ^ ′ = x K \hat{x}'=x Kx^=x,然后带入基本矩阵的表达式,就得到了基本矩阵和本质矩阵的关系:
E = K ′ T F K E=K'^T F K E=KTFK

书上的思路是从 K − 1 P K^{-1} P K1P推导,可以把 K − 1 P K^{-1} P K1P记成 P ^ \hat{P} P^,用 P ^ \hat{P} P^把基本矩阵重新推一次,也可以得到上述关系。

E E E可以由旋转和平移得到,表示为 E = [ t ] × R E=[t]_{\times} R E=[t]×R

E E E有什么性质?它也是一个 3 × 3 3 \times 3 3×3的奇异矩阵,最后一行是0。

E E E有什么用途?我们可以从 E E E种恢复摄像机矩阵,假设 P = [ I ∣ 0 ] P=[I|0] P=[I∣0],而且我们知道 E E E,把 E E E做SVD分别 E = U d i a g ( 1 , 1 , 0 ) V T E=Udiag(1,1,0)V^T E=Udiag(1,1,0)VT,那么 P ′ P' P有四种不同结果,这个在三维重建的时候有用。

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

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

相关文章

【php经典算法】冒泡排序,冒泡排序原理,冒泡排序执行逻辑,执行过程,执行结果 代码

冒泡排序原理 每次比较两个相邻的元素,将较大的元素交换至右端 冒泡排序执行过程输出效果 冒泡排序实现思路 每次冒泡排序操作都会将相邻的两个元素进行比较,看是否满足大小关系要求,如果不满足,就交换这两个相邻元素的次序&…

携手走过四年,极智嘉(Geek+)赋能上海西门子开关智慧物流升级

日前,上海西门子开关有限公司迎来了工厂30周年庆典暨客户开放日活动,全球仓储机器人引领者极智嘉(Geek)荣幸作为优秀供应商代表受邀参会,见证其突破革新、数智飞跃的三十载辉煌历程。 客户开放日活动中,上海西门子开关有限公司开…

聊聊API安全的重要性及治理思路

在应用程序开发过程中,API是一个会被经常提及的东西,它的全称是Application Programming Interface(应用程序接口),一般指的是Web API,即:采用HTTP通信协议的API或者是Web应用程序对外提供的API…

2101. 引爆最多的炸弹;752. 打开转盘锁;1234. 替换子串得到平衡字符串

2101. 引爆最多的炸弹 核心思想:枚举BFS。枚举每个炸弹最多引爆多少个炸弹,对每个炸弹进行dfs,一个炸弹能否引爆另一个炸弹是两个炸弹的圆心距离在第一个炸弹的半径之内。 752. 打开转盘锁 核心思想:典型BFS,就像水源扩散一样&a…

打造本地紧密链接的开源社区——KCC@长沙开源读书会openKylin爱好者沙龙圆满举办...

2023年9月9日,由开源社联合 openKylin 社区举办的 KCC长沙开源读书会&openKylin 爱好者沙龙,在长沙圆满举办。这是 KCC长沙首次正式进入公众视野,开展开源交流活动,也是 openKylin 社区长沙首场线下沙龙。长沙地区及其周边的众…

阿里云大数据实战记录10:Hive 兼容模式的坑

文章目录 1、前言2、什么是 Hive 兼容模式?3、为什么要开启 Hive 模式?4、有什么副作用?5、如何开启 Hive 兼容模式?6、该场景下,能不能不开启 Hive 兼容模式?7、为什么不是DATE_FORMAT(datetime, string)&…

Mybatis SQL构建器

上一篇我们介绍了在Mybatis映射器中使用SelectProvider、InsertProvider、UpdateProvider、DeleteProvider进行对数据的增删改查操作;本篇我们介绍如何使用SQL构建器在Provider中优雅的构建SQL语句。 如果您对在Mybatis映射器中使用SelectProvider、InsertProvider…

八大排序(四)--------直接插入排序

本专栏内容为:八大排序汇总 通过本专栏的深入学习,你可以了解并掌握八大排序以及相关的排序算法。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:八大排序汇总 🚚代码仓库:小小unicorn的代码仓库…

Swift SwiftUI 修改 List 背景颜色

Preview: Code: .listRowBackground(Color(.yellow)).scrollContentBackground(.hidden) .background(.linearGradient(colors: [.white, .accentColor], startPoint: .top, endPoint: .bottom))喜欢或对你有帮助,点个赞吧,自己先点个嘿嘿。 有错误或者…

Gateway学习和源码解析

文章目录 什么是网关?搭建实验项目demo-servicegateway-service尝试简单上手 路由(Route)断言(Predicate)和断言工厂(Predicate Factory)gateway自带的断言工厂After(请求必须在某个…

【PyTorch 攻略】(6-7/7)

一、说明 本篇介绍模型模型的参数,模型推理和使用,保存加载。 二、训练参数和模型 在本单元中,我们将了解如何加载模型及其持久参数状态和推理模型预测。为了加载模型,我们将定义模型类,其中包含用于训练模型的神经网…

LeetCode 刷题记录——从零开始记录自己一些不会的(二)

20. 替换后的最长重复字符 题意 给你一个字符串 s 和一个整数 k 。你可以选择字符串中的任一字符,并将其更改为任何其他大写英文字符。该操作最多可执行 k 次。 在执行上述操作后,返回包含相同字母的最长子字符串的长度。 思路 代码 class Solution…

DOMBOM

DOM Document Object Model:文档对象模型 DOM树 文档:一个页面就是一个文档; 节点:网页中的所有内容,在文档树中都是节点,使用node表示; DOM操作节点实现网页特效的步骤: 获取ht…

软件需求文档、设计文档、开发文档、运维文档大全

在软件开发过程中,文档扮演着至关重要的角色。它不仅记录了项目的需求、设计和开发过程,还为项目的维护和管理提供了便利。本文将详细介绍软件开发文档的重要性和作用,以及需求分析、软件设计、开发过程、运维管理和项目管理等方面的文档要求…

DA5 网站用户没有补全的信息

目录 1.题目描述 2.输入描述 3.输出描述 4.题目分析 5.通过代码 1.题目描述 现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔): Nowcoder_ID:用户ID …

Vosviewer的安装与使用

Vosviewer的安装与使用 1 安装2 使用参考: 关于vosviewer我就不过多介绍了。 vosviewer与citespace有什么区别?在这里可以引用一下知乎的文章简要说明一下: 1.操作难易VOSviewer很简单,在官网下载的时候会附带一个英文手册,稍微…

Linux命令基础

一、linux目录结构。 Linux没有windows的盘的概念,是一个树形的结构。唯一的根目录为/,所有的文件都在他下面。 描述方式也与windows有所不同 二、命令基础格式。 command [-options] [parameter]([ ]表示可选的) command:必…

以太坊代币标准ERC20、ERC721

两个概念 ERC(Ethereum Request for Comment) 以太坊意见征集稿EIP(Ethereum Improvement Proposals)以太坊改进提案 ERC和EIP用于使得以太坊更加完善;在ERC中提出了很多标准,用的最多的标准就是它的Token标准; 有哪些标准详细见https://eips.ethereum…

【lesson7】yum的介绍及使用

文章目录 预备工作yum的基本过程yum的操作**yum源问题:****yum三板斧:**yum listyum searchyum list | grepyum installyum install -yyum removeyum remove -y 预备工作 首先有三个问题: 问题解答: 这里我们联想到了手机 问题…

论文阅读:AugGAN: Cross Domain Adaptation with GAN-based Data Augmentation

Abstract 基于GAN的图像转换方法存在两个缺陷:保留图像目标和保持图像转换前后的一致性,这导致不能用它生成大量不同域的训练数据。论文提出了一种结构感知(Structure-aware)的图像转换网络(image-to-image translation network)。 Proposed Framework…