本章讲述如何用数值方法在已知若干对应点的情况下求解基本矩阵
基本矩阵定义如下 $$ x^{'T} F x = 0 $$
定义
解析解:$A$的rank如果是8,那么直接求方程组的特解就可以。但是一般情况下有噪声,所以$A$的rank有可能是9,那么就用SDV分解。可以表达成$A=UDV^{T}$,那么$f$ 就是$V$的最后一列.
求解$Af=0$,然后选基础解系中的两个特解$f_1,f_2$ (书中叫零空间,null space),然后构造一个方程$\alpha f_1 + (1-\alpha )f_2$, 再利用$F$是奇异矩阵的性质,得到$det(\alpha f_1 + (1-\alpha )f_2) = 0$. 解这个方程就可以得到$\alpha$
把8个点的质心平移到原点,把点看成一个向量,然后把向量模长归一化.
优化目标: 找到一个$F$, 使得$||Af||$最小,且满足
- 通过8点法找初始值$F_0$, 然后找到$F_0$的零向量$e_0$
- 记$e_0 = e_i$, 通过
$e_i$ 构造$E_i$ $$ E_0 = \left[ \begin{matrix} e_0 & 0 & 0 \ 0 & e_0 & 0 \ 0 & 0 & e_0 \ \end{matrix} \right] $$ - 设
$f_i=E_i m_i$ 用 595 页的算法求解优化目标 - 计算误差
$\epsilon_i = A f_i$ - 利用600页Levenberg–Marquardt算法改变$e_i$
- 重复1到5步直到算法收敛
本章主要介绍如何用几何损失函数来计算基本矩阵。
我们假设图像噪声服从高斯分布,那么我们优化下式: $$ \Sigma_i d(x_i,\hat{x})^2 + d(x_i^{'},\hat{x}^{'})^2 $$
优化步骤如下:
- 根据含有噪声的点$x_i,x^{'}_i$估计出一个初始的$\hat{F}$
- 根据$\hat{F}$求出$e^{'}$ (回忆基本矩阵定义 $F=[e']{\times}P^{'}P^{+}$),然后构造 $P=[I|0],P^{'}=[[e']{\times}\hat{F}|e^{'}]$
- 根据$x_i \leftrightarrow x^{'}_i$ 还有$\hat{F}$,用三角化求出空间点$\hat{X}$
- 根据$\hat{X}$有以下两式成立
$\hat{x_i} = P\hat{X}, \hat{x_i}^{'} = P^{'}\hat{X}$ - 把上两式带入优化目标
非线性优化要求把$F$参数化,下面介绍几种方法。
- Over-parametrization. 把$F$写成$F=[t]_{\times}M$ M是任意的$3 \times 3$ 矩阵
- Epipolar parametrization. 把$F$ 第三列写成前两列的线性组合
- Both epipoles as parameters,参见书p286 11.8式
Sampson distance以
Symmetric epipolar distance
以
本节选用3中不同的算法来进行对比:
- 正则化的8点法
- 最小化代数误差
- 最小化几何误差
我们直接上结论:
- 不要使用没有正则化的8点法,换句话说,用8点法必须要把点的坐标正则化
- 8点法式最快最方便的
- 如果追求准确,用最小化代数误差。
- 用Sampson distance也非常好。
其步骤如下:
-
先找出每幅图像中的特征点(SIFT, FAST, ORB)
-
计算特征点之间的对应
-
RANSAC采样:
- 任选7个点,用SVD解出一个$F$
- 用$F$和每一个点的坐标,计算一个距离$d_{\bot}$.
$d_{\bot}$ 可以选择重投影误差,或者Sampson。(多说一句,重投影误差就是指两次投影之间的差别,由于是同一个三维点的两次投影,这两次投影在理论上应该是一样的,所以误差应该为0.) - 找出满足$d_{\bot} < t$的点,其数量记为m,然后利用这些点重新计算$F$,重复第二步,直到m足够多。
-
利用m对点,再选一个损失函数(比如说重投影和sampson),用Levenberg–Marquardt algorithm来优化这个损失函数
纯旋转情况下
Planar motion意思是一个刚体沿着与某平面平行的方向(
如果相机已经标定了,那么我们可以在图像坐标系下计算本质矩阵$E$, 用$E$d代替$F$. 依旧是8点法。在E已知的情况下,把$E$分解成$UDV^T$, 其中$D = diag(a,b,c)$,然后把$D$换成$\hat{D} = diag((a+b)/2,(a+b/2),0)$, 于是答案就是$\hat{E} = U\hat{D}V$, 知道了$\hat{E}$和相机内参,就可以得出两个摄像机矩阵
上文讲述的是我们用点对应的方法求解$F$,本节我们介绍如何用其他对应方式来求解$F$.
线段对应。线段对应不会给基本矩阵$F$增加任何约束,因为线段重投影回去是平面,三维空间中平面一直会相交。
曲线对应。假设三维空间中有一条和极平面相切的曲线,该曲线投影在图像上的曲线一定和极线相切。这个性质就是一个约束:如果极线与图像中某曲线相切,则第二幅图像中对应的极线一定与某曲线相切。在这个结论里把曲线换成曲面也成立。
退化的情况是指若干对对应点无法唯一确定基本矩阵$F$. 其具体细节如下
定义
补充一点基础知识:零空间的维度就是自由度。比如说解方程组$Af=0$的时候,方程的解里有3个自由变量,那么零空间的维数就是3($f$本身是有9个变量)
- dim(N) = 1,这种情况是对应点$n>8$,基本矩阵有唯一解。
- dim(N) = 2,这种情况是对应点$n>7$,基本矩阵有1或3个解,主要会发生在对应点都落在某二次曲面上
- dim(N) = 3,这种情况是对应点$n>6$,基本矩阵有2个解系,主要会发生在两种情况:关于两个摄像机光心重合了,或者世界坐标中的点全部在一个平面上。
几何解释就是$x^{'}Fx = 0$定义了四维空间中关于点$(x,y,x^{'},y^{'})$的一个二次曲面
基本矩阵的一个重要作用就是已知第一幅图中的某一点$x$,找出第二幅图中该点对应的极线,那么第二幅途中$x$的对应点$x^{'}$肯定在极线上。如果我们考虑到噪声问题,那$x^{'}$应该落在极线的附近。所以本章讲述如何用基本矩阵的协方差矩阵来决定$x^{'}$的搜索区域.
我们直接上结论。$x$代表一个点,对于基本矩阵$F$, 记其协方差矩阵$\Sigma_F$,
本节主要验证一下上一节介绍方法的有效性。先找出一些对应点,当成ground truth. 然后给每个点加上高斯噪声,然后再计算一个$F$,通过$F$求出极线,并且用上一节方法计算ground truth落在$c$中的概率。
校正的意思是说把两个图像旋转到同一个平面,这样就是一对双目立体图像,可以做双目立体匹配。校正分为以下几个部分。
如果两幅图的极点都映射到了无穷远,那么他们的极线就平行了。极点本来是
如果考虑任意一点$x_0$,那么$G$应该变成$GRT$.
在上一节我们把一个图像已经转选转了某一个角度 (矩阵$H$做了这个事),使其极线平行与立体匹配的基线,接下来我们需要把另外一个图像也转一下 (矩阵$H^{'}$做这事),使其极线也平行与基线。我们不是对第二幅图像重复上一节,而是寻找$H$和$H^{'}$的关系。该关系描述如下:
如果$l$he$l^{'}$是两幅图像中对应的极线,那么有下式成立:$H^{-T}l=H'^{-T}l'$ (
同时,$H$和$H^{'}$应当满足如下关系: $$ H=(I+H^{'}E^{'}a^{T})H^{'}M $$
其证明参见p306
如果我们考虑一个特殊的$H^{'}$,它可以把$e^{'}$变换到无穷远点$(1,0,0)^T$,(上文提到的$H^{'}$没有这个性质),那么$H$和$H^{'}$ 应该有如下性质:在已知$F=[e^{'}]_{\times}M$的条件下,
接下来我们参数化,令
本节对算法本身做一个总体的描述:
- 找出至少7对对应点。
- 计算基本矩阵$F$和两个极点$e,e^{'}$
- 找出$H^{'}$,该矩阵把$e^{'}$映射到$(1,0,0)^T$
- 优化目标函数$\Sigma d(Hx_i,H^{'}x^{'})$
- 利用$H$和$H^{'}$分别将两幅图像转换
如果摄像机本身可以本仿射摄像机近似,那么就直接用仿射变换来校正,把上文的基本矩阵换成仿射相机的基本矩阵就可以。