【多视图几何】TUM 课程 第1章 数学基础:线性代数
在 YouTube 上找到了慕尼黑工业大学(Technische Universitaet München)计算机视觉组 Daniel Cremers 教授的 Multiple View Geometry 课程。容易理解,收获颇多,写下笔记以巩固所学。
课程的 YouTube 地址为:https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4 。视频评论区可以找到课程所使用课件与练习题的下载地址。第一个视频底部可以找到参考书名 An Invitation to 3-D Vision: From Images to Geometric Models 。
课程第1章介绍了线性代数的基础,MVG 课程前半部分以线性代数的形式对问题进行建模,将模型是否有解、有多少解转化为矩阵秩的问题。
1. 线性空间
1.1 线性空间定义
Vector Space 也叫 Linear Space,向量空间或线性空间。线性空间是一个集合加一个数域(一般为实数 $ \mathbb{R} $),这个集合需要满足加法与乘法封闭。封闭指集合中的元素经过运算后得到的元素依旧在这个集合中。
这两个封闭的性质用映射表示为:
$ V $ 中元素经过运算,依旧在 $ V $ 中。
1.2 子空间
线性空间存在子空间(Subspace),子空间也是一个线性空间,满足加法与乘法的封闭。子空间与母空间之间的关系是子空间中集合 \(W\) 是母空间集合 \(V\) 的真子集,即 $ W \subset V $,子空间的数域与母空间的数域完全相等。
由于 $ 0 \in \mathbb{R} $,所以线性空间一定包含0元(幺元)。
三维空间包含幺元,也就是原点 $ (0, 0, 0)^T $。三维空间的子空间是二维空间,二维空间(平面)也一定包含幺元,所以作为三维空间子空间的平面一定过原点。
1.3 线性无关与基底
一个向量的集合 \(S = \{v_1, \dots, v_k\} \subset V\) 张成的子空间指这些向量的线性组合:
集合 $ S $ 线性无关(linearly independent)指将这些向量线性组合成0元时所有向量的系数都为0,即:
线性组合(Linear Combination)指将所有元素乘以一个实数,然后求和。
如果这些系数中存在不为 0 的数,那么这个集合就叫做线性相关。
线性空间 $ V $ 的基底(Basis)是一集合 \(B = \{ v_1, \dots, v_n \}\),这个集合线性无关,并且其中的元素能够张成整个线性空间。
基底 $ S $ 是线性无关向量的最大集合,即在基底 $ S $ 中再增加一个向量,集合会变成线性相关。所以线性空间 $ V $ 中的任意一个向量都可以使用基底线性表示。
基底的三个性质:
假设 $ B $ 与 $ B' $ 是线性空间 $ V $ 的两个基底,
i. $ B $ 与 $ B' $ 中向量的个数相同,向量的个数 $ n $ 称作线性空间 $ V $ 的维度(Dimension)。
ii. 线性空间 $ V $ 中的任意一个向量都可以表示为基底 \(B = \{ v_1, \dots, v_n \}\) 的线性组合:
iii. 基底 $ B' $ 中的向量都可以表示为基底 $ B $ 中向量的线性组合:
用矩阵的形式表示这个基底变换(Basis Transform),$ B' = BA $,其中 \(B \equiv (b_1, \dots, b_n), B' \equiv (b'_1, \dots, b'_n)\) 将基底行的形式排列,$ A \equiv [\alpha_{ij}] $ 是一个方阵。
1.4 内积与克罗内克积
在线性空间中可以定义内积(Inner Product):
内积是一种二元运算,将两个向量映射到实数域内,并且运算满足三条性质:
- 线性(Linear):$ <u, \alpha v + \beta w> = \alpha <u, v> + \beta <u, w> $
- 对称(Symmetric):$ <u, v> = <v, u> $
- 正定(Positive Definite):$ <v, v> \ge 0 $,且 $ <v, v> = 0 \Leftrightarrow v = 0 $
由内积可以定义范数(Norm)
与度量(Metric)
度量可以用于描述长度或距离,定义了度量的线性空间称作是度量空间(Metric Space)。
规范内积(Canonical Inner Product)是内积的一种“实现方式”,也称作点积((Dot Product)[https://en.wikipedia.org/wiki/Dot_product]),线性空间 $ V = \mathbb{R}^n $ 中定义在规范基底 $ B = I_n $ 上的点积:
对应的范数就称作 $ L_2 $ 范数($ L_2 $-norm)或者欧几里德范数(Euclidean Norm):
如果不把点积定义在规范基底 $ I_n $ 上,而定义在基底 $ B' $ 上($ I_n = B'A^{-1} \(,\) A $ 是从标准基底 $ I_n $ 到 $ B' $ 的变换矩阵),在新坐标 $ (x', y') $ 下的点积与旧坐标 $ (x, y) $下的点积的关系:
$ <x', y'>_{A^TA} $ 被称作从矩阵 $ A $ 诱导出的内积。
最后,两个向量 $ v, w $ 当且仅当 $ <v, w> = 0 $ 时,它们是正交(Orthogonal)的。
两个矩阵 $ A \in \mathbb{R}^{m \times n}, B \in \mathbb{R}^{k \times l} $ 的克罗内克积(Kronecker Product)
形式上是将 $ A $ 中的每一个元素替换成该元素与 $ B $ 的数乘。
有了克罗内克积就可以定义矩阵的 stack,矩阵 $ A = [a_1, a_2 \dots a_n] \in \mathbb{R}^{m \times n} $ 是将 $ A $ 的所有列向量组合成一个列向量:
在 Matlab 中可以表示为
A_stack = kron(ones(size(A, 2), 1), A);
克罗内克积有一个非常常用的转换:
如果 \(u^TAv = 0\) ,使用这种转换就可以形成一个线性系统。
2. 线性变换与矩阵
2.1 线性变换
线性变换是指在两个线性空间之间的映射,$ L: V \rightarrow W $,这种映射满足两个条件:
这种映射可以认为是对线性空间 $ V $ 中的基底进行变换,在标准正交基底 $ {e_1, \dots, e_n} $ 的情况下:
所有 $ m \times n $ 矩阵组成的集合写作 $ \mathscr{M}(m, n) $,当 \(m = n\) 时,$ \mathscr{M}(m, n) \equiv \mathscr{M}(n) $,就形成了了数域 \(\mathbb{R}\) 中的一个环(Ring),所谓的环就是在这个矩阵集合对矩阵的加法、乘法封闭。
线性变换是线性空间之间满足特定条件的映射,这种映射一般使用矩阵描述。
2.2 群与矩阵
群指线性变换的集合加上一种运算,$ \circ: G \times G \rightarrow G $ ,并且满足四个条件:
- 封闭(Closure):$ g_1 \circ g_2 : G, \forall g_1, g_2 \in G $
- 结合(Associativity):$ (g_1 \circ g_2)\circ g_3 = g_1 \circ (g_2 \circ g_3), \forall g_1, g_2, g_3 \in G $
- 单位元(Identity Element):$ \exists e \in G : e \circ g = g \circ e = g, \forall g \in G $
- 逆元(Inverse Element):$ \exists g^{-1} \in G: g \circ g^{-1} = g^{-1} \circ g = e, \forall g \in G $
两个重要的群:一般线性群(General Linear Group)$ GL(n) $ 与 特殊线性群(Special Linear Group)$ SL(n) $。
$ GL(n) $ 定义在所有可逆的 $ n \times n $ 矩阵组成的集合 \(\mathscr{M}(n)\) 与矩阵乘法之上。
$ SL(n) $ 的集合是 $ GL(n) $ 集合的子集,$ SL(n) $ 要求集合元素 $ A $ 满足 $det(A) = 1 $, $ SL(n)$ 不仅对矩阵乘法封闭,也对矩阵逆封闭。
群 $ G $ 可以使用矩阵进行表示(Matrix Representation),以方便对群的性质进行研究(转化为对矩阵性质的研究)。群转换为矩阵的形式进行描述需要群中的元素(线性变换)能够在一般线性群中找到唯一的像,且群中不同元素的像不相同,这是一个单射映射(Injection):
这种映射还需要满足两个条件:
即幺元的像是单位阵,群内的运算对应矩阵的乘法。
2.3 MVG 中涉及的群
2.3.1 仿射群(Affine Group $ A(n) $)
仿射变换(Affine Transformation) $ L : \mathbb{R}^n \rightarrow \mathbb{R}^n $ 由一个矩阵 $ A \in GL(n)$ 和一个向量 $ v \in \mathbb{R}^n $ 定义:
所有的这种仿射变换组成的集合称作仿射群(Affine Group),用 $ A(n) $ 表示。
如果用齐次坐标表示向量,仿射群可以使用矩阵的形式表示:
2.3.2 正交群(Orthogonal Group $ O(n) $)
矩阵 $ R $ 正交(Orthogonal)指满足条件:
所有的 $ n \times n $ 的正交矩阵组成正交群(Orthogonal Group) $ O(n) $,由上式可得:
所以 $ R^TR = RR^T = I $,得到正交群的定义:
正交群有一子群叫做特殊正交群(Special Orthogonal Matrix)$ SO(n) $,特殊正交群中的元素 \(det(R) = +1\)。特殊正交群可以看做特殊线性群与正交群的交集,\(SO(n) = O(n) \cap SL(n)\)。
$ SO(3) $ 对应三维空间中所有的旋转矩阵。
2.3.3 欧几里德群(Euclidean Group $ E(n) $)
欧式变换(Euclidean Transformation)由一个正交矩阵 $ R \in O(n) $ 和一个向量 $ T \in \mathbb{R}^n $ 定义:
写作齐次坐标,得到欧几里德群的定义:
注意偶几里德群里面的矩阵 $ R $ 是正交阵,其行列式为 \(\pm 1\)。对 $ R $ 进行进一步的限制 $ R \in SO(n) $,就能得到特殊欧几里德群(Speical Euclidean Group)的定义:
$ SE(3) $ 对应三维空间的刚体变换(Rigid Transformation)。
2.3.4 小结
3. 矩阵的性质
矩阵的性质就是矩阵的秩、特征值、特征向量。
3.1 秩
矩阵 $ A \in \mathbb{R}^{m \times n}$ 表示从线性空间 $ \mathbb{R}^n $ 到线性空间 $ \mathbb{R}^m $ 的映射,它的值域(Range)$ rang(A) $ 表示 $ A $ 在 $ \mathbb{R}^m $ 中能映射到的范围:
矩阵 $ A $ 的核(Kernel || Nullspace)是在 $ \mathbb{R}^n $ 能被矩阵 $ A $ 映射到0的元素的集合:
矩阵的秩(Rank)是矩阵值域的维度:
秩的性质:
- $ rank(A) = n - dim(ker(A)) $;
- $ 0 \le rank(A) \le min{m, n} $;
- $ rank(A) $ 是 $ A $ 最大线性无关行(列)向量的个数;
- $ rank(A) $ 是 $ A $ 最高阶非零余子式的阶数;
- $B \in \mathbb{R}^{n \times k}, rank(A) + rank(B) - n \le rank(AB) \le min{ rank(A), rank(B) } $;
- 对于任意两个非奇异矩阵 \(C \in \mathbb{R}^{m \times m}, D \in \mathbb{R}^{n \times n}\),$ rank(A) = rank(CAD) $。
3.2 特征值与特征向量
特征值与特征向量(Eigenvalues and Eigenvectors)有左右之分,一般情况下默认为右特征值与右特征向量。
$ A \in \mathbb{C}^{m \times n} $ 的右特征值是一个非零的向量 $ v \in \mathbb{C}^n $:
$ A \in \mathbb{C}^{m \times n} $ 的左特征值是一个非零的向量 $ v \in \mathbb{C}^m $:
相对应的 \(\lambda\) 就称作 $ A $ 的特征值。
矩阵 $ A $ 所有特征值组成的集合叫做矩阵 $ A $ 的谱(Spectrum),记作 \(\sigma(A)\)。
\(A \in \mathbb{R}^{n \ times n}\),特征值与特征向量的性质:
- 左右特征值是一一对应的,对 $ Av = \lambda v, \lambda \in \mathbb{R}$,存在左特征值 \(\eta \in \mathbb{R}^n\) 使得 $ \eta ^TA = \lambda A $,左右转置可知 $ \sigma(A^T) = \sigma(A) $;
- 不同特征值的特征向量之间线性无关;
- $ \sigma(A) $ 是特征多项式 \(det(\lambda I - A) = 0\) 的根,所以 \(det(A)\) 等于所有特征值的乘积;
- 若 \(B = PAP^{-1}\),$ P $ 是可逆矩阵,那么 \(\sigma(B) = \sigma(A)\);
- 特征值与其共轭复数成对出现,即 \(\lambda \in \mathbb{C}\) 是 $ A $ 的一个特征值,$ \bar{\lambda} $ 也是 $ A $ 的一个特征值,有 \(\sigma(A) = \bar{\sigma(A)}\)。
3.3 对称阵与反对称阵
若方阵 $S \in \mathbb{R}^{n \times n} $ 满足 \(S^T = S\),则称 $ S $ 是对称阵(Symmetric Matrix)。若对称阵满足 $ x^TSx \ge 0, \forall x \in \mathbb{R}^n $ 则称其半正定的(Positive Semi-Definite),记作 $ S \ge 0 $。 若对称阵满足 $ x^TSx \gt 0 $ ,则称其正定的(Positive Definite)。
实对称阵 $ S \in \mathbb{R}^{n \times n} $ 具有以下性质:
- 所有的特征值都为实数,即 \(\sigma(S) \in \mathbb{R}\);
- 特征值互异的特征向量正交,即 $ S v_i = \lambda_i v_i, S v_j = \lambda_j v_j, \lambda_i \ne \lambda_j \Rightarrow v_i^Tv_j = 0 $;
- 有 \(n\) 个单位正交的特征向量,这些特征向量组成线性空间 \(\mathbb{R}^n\) 的一组基底,将特征向量组成矩阵 \(V = (v_1, \dots, v_n) \in O(n)\),特征值组成对角矩阵 \(\Lambda = diag\{ \lambda_1, \dots, \lambda_n \}\),$ S $ 可以用这两个矩阵分解 $ S = V \Lambda V^T $;
- $ S $ 所有的特征值为非负数,则 $ S $ 为半正定矩阵; $ S $ 所有的特征值为正数,则 $ S $ 为正定矩阵 。
矩阵范数(Matrix Norm)有2范数(2-norm)和F范数(Frobenius norm):
矩阵 $ A \in \mathbb{R}^{m \times n} $
矩阵 \(A^TA\) 是对称阵,且半正定,所以 $ A^TA $ 可分解为 \(A^TA = Vdiag\{ \sigma_1^2, \dots, \sigma_n^2\}V^T, \sigma_1^2 \ge \sigma_i^2 \ge 0\),可得
若方阵 $A \in \mathbb{R}^{n \times n} $ 满足 \(A^T = -A\),则称 $ A $ 是反对称阵(Skew-symmetric Matrix)。
反对称阵具有以下性质:
- 所有特征值都为0或者纯虚数;
- 可以分解为 $ A = V \Lambda V^T $,其中 \(\Lambda\) 是块对角矩阵 $$ \Lambda = diag{ A_1, \dots, A_m, 0, \dots, 0 },\ A_i = \begin{bmatrix} 0 \quad a_i \ -a_i \quad 0 \end{bmatrix} \in \mathbb{R}^{2\times2}, i = 1, \dots, m$$;
- 秩为偶数。
4. 奇异值分解
矩阵 \(A \in \mathbb{R}^{m \times n}, m \gt n, rank(A) = p\),则 $ A $ 能够分解为
其中
- $ U \in \mathbb{R}^{m \times p} $,列向量单位正交;
- $ V \in \mathbb{R}^{n \times p} $,列向量单位正交;
- $ \Sigma \in \mathbb{R}^{p \times p}, \Sigma = diag{\sigma_1, \dots, \sigma_p}, \sigma_1 \ge \dots \ge \sigma_n$。
奇异值分解的应用,广义逆(Moore–Penrose Pseudoinverse):
广义逆具有以下的性质:
广义逆可用于解线性系统 \(Ax = b, A \in \mathbb{R}^{m \times n}, rank(A) \le \min(m, n)\),\(x_{min} = A^\dagger b\) 是在所有最小化误差 $ | Ax-b |^2 $ 的解中,自身模 \(|x|\) 最小的那个。