提醒
本质/基础矩阵
本质矩阵和基础矩阵都是 3x3 的矩阵,用于“编码”两个视图的对极几何。
动机:给定一张图像中的一个点,乘以本质/基础矩阵将告诉我们在第二个视图中沿着哪个极线搜索。
本质/基础矩阵总结
Longuet-Higgins方程
极线:
极点:
本质矩阵 vs 基础矩阵:
本质矩阵E在成像坐标上作用(内参校准相机)
基础矩阵F在像素坐标上作用(未内参校准相机)
从匹配点计算基础矩阵F
假设有 m 组匹配点
每组匹配点满足:
F是一个 3×3 的矩阵(9个元素)
建立具有9个未知数的齐次线性系统
计算F
多少个点?
与单应性变换不同,在单应性变换中每组匹配点贡献两个约束(线性方程组中的行);但是在估计本质/基础矩阵时,每组匹配点只贡献一个约束(行)。[因为Longuet-Higgins/极线约束是一个标量方程。]
因此至少需要八组匹配点
所以称为八点法
解齐次系统
假设我们需要求解以下方程的非平凡解
其中,有 m 个方程和 n 个未知数,m >= n-1,rank(A) = n-1
由于 x 的范数是任意的,我们将寻找范数 | | x | | = 1 的解
最小二乘法
我们希望 Ax 尽可能接近0,并且 | | x | | = 1
有约束的优化问题
定义以下的代价函数:
这个代价称为拉格朗日代价LAGRANGIAN cost,而 λ 称为拉格朗日乘数LAGRANGIAN multiplier
拉格朗日通过引入额外变量将约束条件纳入代价函数中。
对 x 和 λ 分别求导:
第一个方程是特征向量问题
第二个方程是原始约束
x 是矩阵ATA的特征向量,关联特征值λ 的,表示为eλ
我们希望得到最小特征值所关联的特征向量
我们可以通过矩阵 A 的SVD分解得到 ATA 的特征向量和特征值
奇异值分解(SVD)
任何 m×n 的矩阵 A 可以被转换为三个矩阵的乘积:
其中:
-
U 是 m x m 矩阵,其列向量是正交向量
-
V 是 n x n 矩阵,其列向量是正交向量
-
D 是 m x n 对角矩阵,其对角线元素被称为A的奇异值(singular values),并且是这样的:
SVD性质
U 的列向量是矩阵 AAT 的特征向量
V 的列向量是矩阵 ATA 的特征向量
矩阵 D 的对角线元素的平方是矩阵 AAT 和矩阵 ATA 的特征值
计算基础矩阵F:八点法
rank(A) = 8
找到与矩阵 ATA 中最小特征值相关联的特征向量
八点法
输入由 m 组对应点构成,m>=8
-
构造 m×9 的矩阵 A
-
求解 A 的SVD分解:
-
基础矩阵 F 的元素是矩阵 V 中与最小奇异值相对应的列向量的元素。
八点法
基础矩阵 F 必须是奇异的(请记住,它的秩rank为2,因为对它来说,有一个左右的零空间(即极点)是很重要的)。加入rank为2的约束:
-
求解矩阵 F 的SVD分解:
-
将矩阵 F 中最小的奇异值设为0,从而构造
-
重新计算矩阵 F :
数值细节
对应点的坐标范围大导致数值不稳定。
最好先将它们归一化,这样它们的平均值为0,方差为1,最后将 F 逆归一化:
哈特利预处理算法(Lecture 16)