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

news2024/11/18 12:41:48

现在进入本书的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.coloradmin.cn/o/1032503.html

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

相关文章

Java基于SpringBoot的校园博客系统

第一章:简介 本系统主要根据博主的需求做出分析,让博主更好的在线查看校园博客系统信息等,管理员后台管理系统数据等功能。从这个系统的操作来说,能够有效的进行信息的添加、修改、查询、删除一些校园博客系统信息,在…

【深度学习实验】前馈神经网络(七):批量加载数据(直接加载数据→定义类封装数据)

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 直接加载鸢尾花数据集 a. 加载数据集 b. 数据归一化 c. 洗牌操作 d. 打印数据 2. 定义类封装数据 a. __init__(构造函数:用于初始化数据集对象) b.…

基础课-排列组合

1.排列 2.组合 定义 从n个不同元素中&#xff0c;任意取出m(m<n)元素并为一组&#xff0c;叫做从n个不同元素中取出m个元素的一个组合 注意:1.不同元素 2.只取不排 3.相同组合:元素相同 3.把位置当成特殊元素 这个元素不一定入选的时候&#xff0c;把位置当特殊元素 4.插空…

【AI视野·今日Sound 声学论文速览 第九期】Thu, 21 Sep 2023

AI视野今日CS.Sound 声学论文速览 Thu, 21 Sep 2023 Totally 1 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;Auto-ACD,大规模文本-音频数据集自动生成方法。 基于现有的大模型和api构建了一套大规模高质量的音频文本数据收集方法&#xff0c…

HTTP参数类型中的Query和Body参数

在接口中常见到query参数和body参数&#xff0c;那么它对应的传参方式是&#xff1f; ★ query查询参数 ---> params ---> route.params.参数 ★ body请求体参数 ---> data ---> route.query.参数 总结&#xff1a; GET请求只能传Query参数&#xff0c; POST请…

无聊的一篇博客(如何通过路由器登陆页对固定机器进行网速干扰,如何帮熊孩子戒网瘾)

1. 路由器登陆页面&#xff0c;按钮解析&#xff0c;获取按钮。 2. JavaScript与上传的脚本。 // 获取要点击的按钮A和按钮B元素var isRunning true; // 初始状态为false// 定义一个函数来模拟点击按钮A和按钮B function clickButtons() {if (isRunning) {// 随机生成一个延时…

【AI视野·今日Robot 机器人论文速览 第三十五期】Mon, 18 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Mon, 18 Sep 2023 Totally 44 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;GelSplitter, 基于近红外与可见光融合实现高精度surfaceNormal重建的触觉传感器。(from 华中科技大学) 基于分光镜的紧凑型…

jupyterlab开发环境最佳构建方式

文章目录 背景jupyterlab环境构建运行虚拟环境构建以及kernel映射验证总结 背景 从jupyter notebook切换到了jupyter lab. 这里记录一下本地环境的最佳构建方式. jupyter lab 安装在jupyterlab-local的anaconda 虚拟环境中.建立多个其他虚拟环境安装各种python包实现环境隔离,…

【01】FISCOBCOS的系统环境安装

我们选择ubuntu系统 01 https://www.ubuntu.org.cn/global 02 03下载最新版 04等待下载 00提前准备好VM&#xff0c;点击创建新的虚拟机 01选择自定义安装 02一直下一步到 03 04 05其他的默认即可 06 07 08 09 10 11一直默认到下面 12 13等待安装 安装后重启即可…

华为OD机试 - 构成正方形的数量 - 数据结构map(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、Java算法源码五、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》。 …

【AI视野·今日Robot 机器人论文速览 第三十八期】Thu, 21 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Thu, 21 Sep 2023 Totally 39 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Model-free tracking control of complex dynamical trajectories with machine learning Authors Zheng Meng Zhai, Mohammad…

11:STM32---spl通信

目录 一:SPL通信 1:简历 2:硬件电路 3:移动数据图 4:SPI时序基本单元 A : 开/ 终条件 B:SPI时序基本单元 A:模式0 B:模式1 C:模式2 D:模式3 C:SPl时序 A:发送指令 B: 指定地址写 C:指定地址读 二: W25Q64 1:简历 2: 硬件电路 3:W25Q64框图 4: Flash操作注意…

VPN协议是如何工作的

VPN&#xff0c;全名 Virtual Private Network&#xff0c;虚拟专用网&#xff0c;就是利用开放的公众网络&#xff0c;建立专用数据传输通道&#xff0c;将远程的分支机构、移动办公人员等连接起来。 VPN 通过隧道技术在公众网络上仿真一条点到点的专线&#xff0c;是通过利用…

生成式模型和判别式模型区别

目录 1.概念 2.定义​ 3.举例​ &#xff08;1&#xff09;例子 A​ &#xff08;2&#xff09;例子 B​ 4.特点 5.优缺点 6.代表算法 1.概念 首先我们需要明确&#xff0c;两种不同的模型都用于监督学习任务中。监督学习的任务就是从数据中学习一个模型&#xff0c;并用…

Python教程(14)——Python函数的入门学习

函数是什么&#xff1f;在编程中&#xff0c;函数是一段可重用的代码块&#xff0c;用于完成特定任务或执行特定操作。它可以接输入参数并返回一个值或执行一系列操作。函数可以帮助程序员将代码模块化&#xff0c;提高代码的可读性和可维护性。 函数通常包括以下组成部分&…

SLAM从入门到精通(消息传递)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们只是编写了一个publisher节点&#xff0c;以及一个subscribe节点。有了这两个节点&#xff0c;它们之间就可以通信了。在实际生产中&#…

CNN(九):Inception v3算法实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 1 理论基础 Inception v3论文 Inception v3由谷歌研究员Christian Szegedy等人在2015年的论文《Rethinking the Inception Architecture f…

cmd运行jar包,txt文件中文乱码问题

首先&#xff0c;查看我们自己新建的txt文件的编码 我们可以看到&#xff1a;当前编码为UTF-8 然后&#xff0c;我们在cmd中输入命令&#xff1a; chcp 936对应的是默认的GBK编码&#xff0c;如果直接运行jar包&#xff0c;读取txt文件里的中文字符时&#xff0c;就会乱码 …

最新推荐的直链网盘榜单

随着数字化时代的到来&#xff0c;人们对于文件存储和共享的需求越来越大。直链网盘作为一种便捷的云存储解决方案&#xff0c;受到了许多用户的喜爱。本文结合了不同产品测评网站的意见&#xff0c;为您推荐以下几款优秀的直链网盘产品。 1、Zoho Workdrive&#xff1b;2、Goo…

康耐德机器视觉系统在锂电池封装外观缺陷检测发挥什么作用?

随着新能源大力发展&#xff0c;电池的需求越来越多&#xff0c;锂电池生产过程中需要保证质量&#xff0c;通过人工检测会出现错误&#xff0c;而且容易把电池包二次损坏。随着机器视觉技术的发展&#xff0c;很多锂电池生产厂家引入机器视觉来替代人工质检&#xff0c;实现产…