本质矩阵8点法中的线代知识

2023-11-03 01:59

本文主要是介绍本质矩阵8点法中的线代知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在多视图几何的 2D 几何中,在利用八点法(Eight-point-algorithm)求解本质矩阵(Essential Matrix)的时候,出现一个将 类似二次型的形式:
x T E y \mathbf{x}^{T}E\mathbf{y} xTEy
将其表示成
B E l i n e a r BE_{linear} BElinear
的过程
其中, B B B的元素 仅与 x , y \mathbf{x},\mathbf{y} x,y有关。
下面首先简单地推导该过程,接着复习一下二次型相关内容

“线性化”二次型

我将这个过程称之为 “线性化”,主要是因为它将矩阵 E E E 处理成一个向量。
在这里,矩阵 E E E 是需要求解的未知数。
x , y \mathbf{x},\mathbf{y} x,y 则是在两个视图上的匹配特征点的坐标信息。
0 = [ x 1 x 2 x 3 ] [ e 11 e 12 e 13 e 21 e 22 e 23 e 31 e 32 e 33 ] [ y 1 y 2 y 3 ] 0=\begin{bmatrix} x_1&x_2&x_3 \end{bmatrix} \begin{bmatrix} e_{11} & e_{12} & e_{13} \\ e_{21} & e_{22} &e_{23} \\ e_{31} & e_{32} & e_{33} \end{bmatrix} \begin{bmatrix} y_1\\y_2\\y_3 \end{bmatrix} 0=[x1x2x3] e11e21e31e12e22e32e13e23e33 y1y2y3

= [ x 1 e 11 + x 2 e 21 + x 3 e 31 x 1 e 12 + x 2 e 22 + x 3 e 32 x 1 e 13 + x 2 e 23 + x 3 e 33 ] [ y 1 y 2 y 3 ] (1) =\begin{bmatrix} x_1e_{11} +x_2e_{21}+x_3e_{31}& x_1e_{12} +x_2e_{22}+x_3e_{32}& x_1e_{13} +x_2e_{23}+x_3e_{33} \end{bmatrix}\begin{bmatrix} y_1\\y_2\\y_3 \end{bmatrix} \tag{1} =[x1e11+x2e21+x3e31x1e12+x2e22+x3e32x1e13+x2e23+x3e33] y1y2y3 (1)

= [ x 1 y 1 e 11 + x 2 y 1 e 21 + x 3 y 1 e 31 + x 1 y 2 e 12 + x 2 y 2 e 22 + x 3 y 2 e 32 + x 1 y 3 e 13 + x 2 y 3 e 23 + x 3 y 3 e 33 ] (2) =\begin{bmatrix}x_1y_1e_{11} +x_2y_1e_{21}+x_3y_1e_{31}+x_1y_2e_{12} +x_2y_2e_{22}+x_3y_2e_{32}+ x_1y_3e_{13} +x_2y_3e_{23}+x_3y_3e_{33}\end{bmatrix} \tag{2} =[x1y1e11+x2y1e21+x3y1e31+x1y2e12+x2y2e22+x3y2e32+x1y3e13+x2y3e23+x3y3e33](2)

注意:式(2)是一个 1 × 1 1\times1 1×1 的矩阵。
观察式(3)的结构,将式(2)重写:
= [ x 1 y 1 x 1 y 2 x 1 y 3 x 2 y 1 x 2 y 2 x 2 y 3 x 3 y 1 x 3 y 2 x 3 y 3 ] [ e 11 e 12 e 13 e 21 e 22 e 23 e 31 e 32 e 33 ] (3) =\begin{bmatrix} x_1y_1 & x_1y_2 &x_1y_3&x_2y_1 & x_2y_2 &x_2y_3&x_3y_1 & x_3y_2 &x_3y_3 \end{bmatrix} \begin{bmatrix} e_{11} \\ e_{12}\\e_{13}\\e_{21} \\ e_{22}\\e_{23}\\e_{31} \\ e_{32}\\e_{33} \end{bmatrix} \tag{3} =[x1y1x1y2x1y3x2y1x2y2x2y3x3y1x3y2x3y3] e11e12e13e21e22e23e31e32e33 (3)

每增加一对特征点,都可以写出一个如式(3)所示的约束。

可以把它们都拼凑起来。得到一个齐次线性方程组。

在这里就不展示拼凑之后的方程组了

求解本质矩阵最少需要 8 对特征点

根据线性代数的基本知识(Rank-Nullity Theorem),
在齐次线性方程组
E m × 9 ∗ e = 0 ⃗ (4) E_{m\times 9}* \mathbf{e} =\vec{0}\tag{4} Em×9e=0 (4)

其中,
e = [ e 11 e 12 e 13 e 21 e 22 e 23 e 31 e 32 e 33 ] \mathbf{e} = \begin{bmatrix} e_{11} \\ e_{12}\\e_{13}\\e_{21} \\ e_{22}\\e_{23}\\e_{31} \\ e_{32}\\e_{33}\end{bmatrix} e= e11e12e13e21e22e23e31e32e33
齐次线性方程组基础解系的秩+矩阵 E E E 的秩 = 9。
向量 e \mathbf{e} e 位于矩阵 E E E 的零空间中。如果系数矩阵是满秩的(即秩为8),那么它的零空间维数为 1,也就是 e \mathbf{e} e 构成一条线。这与 e \mathbf{e} e尺度等价性是一致的。
所以我们想要矩阵 A 的秩为 8,那么矩阵 A 要有 8 个线性无关的行向量

那么 m m m 至少为8。

那么至少需要 8 对匹配的特征点。
所以 8 点法应运而生。

最小二乘与线性方程组求解

上述问题会转化为一个线性方程组的求解问题,我们需要求解下列线性方程组
A e = 0 ⃗ \mathbf{Ae}=\vec{0} Ae=0
其中 A \mathbf{A} A 是一个 m × 9 m\times 9 m×9 的矩阵

但是当 m >= 9 的时候,即匹配点为 9 个或者 9 个以上时,不一定存在 e \mathbf{e} e 使得上式成立。

因此此时通过最小化一个二次型来求
min ⁡ e ∥ A e ∥ 2 2 = min ⁡ e e T A T A e \min_{\mathbf{e}} \Vert \mathbf{Ae} \Vert ^2_2=\min_{\mathbf{e}} \mathbf{e}^{ T}\mathbf{A}^{T}\mathbf{Ae} eminAe22=emineTATAe
上式成立实际上是因为有下式成立
∥ y ⃗ ∥ 2 2 = y ⃗ T y ⃗ \Vert \vec{y} \Vert ^2_2= \vec{y}^{T}\vec{y} y 22=y Ty

二次型复习

上面推导过程涉及的不是二次型,只是类似二次型,因为二次型是
x T E x \mathbf{x}^TE\mathbf{x} xTEx
而上面的是
x T E y \mathbf{x}^TE\mathbf{y} xTEy
这两种形式的结果都是一个 1 × 1 1\times1 1×1 的矩阵。
在这里插入图片描述

So, two different matrices define the same quadratic form if and only if they have the same elements on the diagonal and the same values for the sums b + d c + g {b+d}{c+g} b+dc+g and f + h { f+h} f+h In particular, the quadratic form q A { q_{A}} qA is defined by a unique symmetric matrix
在这里插入图片描述

这篇关于本质矩阵8点法中的线代知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/334806

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

【Python知识宝库】上下文管理器与with语句:资源管理的优雅方式

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、什么是上下文管理器?二、上下文管理器的实现三、使用内置上下文管理器四、使用`contextlib`模块五、总结 前言 在Python编程中,资源管理是一个重要的主题,尤其是在处理文件、网络连接和数据库

dr 航迹推算 知识介绍

DR(Dead Reckoning)航迹推算是一种在航海、航空、车辆导航等领域中广泛使用的技术,用于估算物体的位置。DR航迹推算主要通过已知的初始位置和运动参数(如速度、方向)来预测物体的当前位置。以下是 DR 航迹推算的详细知识介绍: 1. 基本概念 Dead Reckoning(DR): 定义:通过利用已知的当前位置、速度、方向和时间间隔,计算物体在下一时刻的位置。应用:用于导航和定位,

【H2O2|全栈】Markdown | Md 笔记到底如何使用?【前端 · HTML前置知识】

Markdown的一些杂谈 目录 Markdown的一些杂谈 前言 准备工作 认识.Md文件 为什么使用Md? 怎么使用Md? ​编辑 怎么看别人给我的Md文件? Md文件命令 切换模式 粗体、倾斜、下划线、删除线和荧光标记 分级标题 水平线 引用 无序和有序列表 ​编辑 任务清单 插入链接和图片 内嵌代码和代码块 表格 公式 其他 源代码 预

线性代数|机器学习-P35距离矩阵和普鲁克问题

文章目录 1. 距离矩阵2. 正交普鲁克问题3. 实例说明 1. 距离矩阵 假设有三个点 x 1 , x 2 , x 3 x_1,x_2,x_3 x1​,x2​,x3​,三个点距离如下: ∣ ∣ x 1 − x 2 ∣ ∣ 2 = 1 , ∣ ∣ x 2 − x 3 ∣ ∣ 2 = 1 , ∣ ∣ x 1 − x 3 ∣ ∣ 2 = 6 \begin{equation} ||x

图神经网络(2)预备知识

1. 图的基本概念         对于接触过数据结构和算法的读者来说,图并不是一个陌生的概念。一个图由一些顶点也称为节点和连接这些顶点的边组成。给定一个图G=(V,E),  其 中V={V1,V2,…,Vn}  是一个具有 n 个顶点的集合。 1.1邻接矩阵         我们用邻接矩阵A∈Rn×n表示顶点之间的连接关系。 如果顶点 vi和vj之间有连接,就表示(vi,vj)  组成了