本章讲述如何在已知基本矩阵$F$和两幅图像中若干对对应点$x \leftrightarrow x^{'}$的情况下计算三维空间点$X$的位置。
我们假设已知摄像机矩阵$P,P^{'}$,基本矩阵$F$和两幅图像中若干对对应点$x \leftrightarrow x^{'}$,因为有噪声的存在,图像中的点反投影回去的两条射线不一定相交,$xFx^{'}$也不一定等于0,所以简单三角化不一定可行。
我们先回忆一下第10章三维重建的知识。我们介绍了好几种不同种类的三维重建(取决于我们到底对摄像机矩阵了解多少)。那么结合本章的三角化,我们希望三角化在不同种类的重建之间能给出同样的结果。所以我们首先用$\tau$来代表三角化的过程,我们说如果$\tau$能满足下式,那么我们就说三角化在变换$H$下是不变的: $$ \tau(x,x^{'},P,P^{'}) = H^{-1}\tau(x,x^{'},P H^{-1},P^{'} H^{-1}) $$
为什么需要讨论这个?这是因为我们首先需要确定三维重建的种类,才能决定优化目标长什么样。如果我们只知道摄像机矩阵是一个projective matrix,那么我们就不能在三维空间优化目标函数。因为这样的优化函数在投影变换中不能给出唯一的结果。所以本章给出的三角化方法优化的是二维图像上的距离,所以本章的方法是在投影变换(projective transformation)中是不变的。
对于两幅图像,我们分别有$x=PX,x^{'}=PX^{'}$,我们可以将第一个方程改成$x \times PX=0$,第二幅图也一样。 我们继续改写就可以有$AX=0$。
Homogeneous method 找出$A$最小特征值对应的特征向量
Inhomogeneous method 参见4.1.2节,原书P90
讨论 Inhomogeneous method假设点不在无穷远处,不适合projective reconstruction. 其实这两个方法都不适合。
Inhomogeneous method适合affine reconstruction Homogeneous method不适合affine reconstruction
由于图像中有噪声的存在,$x \leftrightarrow x^{'}$ 其实不能满足基本矩阵的性质,我们用$\bar{x},\bar{x'}$表示没有噪声的点。那么我们可以构建以下优化函数
我们定义$X$与$\hat{X}$之间的插差为$\delta_X$
其中
所以我们可以看出该差值其实是基本矩阵方程关于$x$的导数 那么$X$和$\hat{X}$之间的关系可以写成
我们只需要把$\delta_X$算出来,然后对计算出的理论点$X$按照上式进行一个纠正就可以了。
本节我们介绍一种可以找到全局最优解的优化函数,并且是非迭代的. 我们同时假设噪声服从高斯分布.
我们知道第一幅图的极点一定在极线上。第二幅图的极点也满足这个性质。反过来,在极线上的点也满足基本矩阵的约束。那么我能就让观测到的点尽可能的靠近极线,也就是找观测点到极线的距离,并使其最小。
所以我们就可以构建出以下损失函数 $$ d(x,l)^2 + d(x'+l')^2 $$
我们的策略如下:
- 将极线方程参数化,所以第一幅图像中的极线方程就可以写为l(t)
- 利用基本矩阵$F$,和$l(t)$来计算第二幅图像中的极线l'(t)
- 将损失函数写成d(x,l(t))^2 + d(x'+l'(t))^2
- 求解最优的$t$
首先, 两幅图中对应点都不能与极点重合 第二, 我们可以对两幅图都做一个刚体变换,那么$x,x'$就可以被放置在原点$(0,0,1)$, 那么两幅图的极点分别是$(1,0,f),(1,0,f')$. 我们知道极点也是要满足$F$的,所以我们有$F(1,0,f)^T = (1,0,f')F = 0$, 如此以来我们就可以把基本矩阵表示为一种特殊形式 $$ F = \left[ \begin{matrix} ff'd & -f'c & -f'd \ -fb & a & b\ -fd & c & d \ \end{matrix} \right] $$
同时我们也知道极线会通过极点$(1,0,f)$,我们再找一个特殊点, 那就是极线与$y$轴的交点
紧接着我们找下一个极线:
该极线到原点的距离
于是我们把
一些讨论
下面我们把整个算法流程重复一遍, 对应于p318 算法12.1
算法输入: 观测到的对应点$x \leftrightarrow x'$, 基本矩阵$F$
算法输出:寻找一对$\hat{x} \leftrightarrow \hat{x}'$可以使几何损失函数最小. 同时这一对点满足
算法步骤:
-
定义一对转换矩阵,可以把$x=(x,y,1)^{T},x'=(x',y',t)^{T}$转换到原点 $$ T=\left[ \begin{matrix} 1 & & -x \ &1 & -y \ & & 1\ \end{matrix} \right] $$
T'的形式与T是类似的
-
将基本矩阵$F$变成$T'^{-T}FT^{-1}$
-
计算左极点$e=(e_1,e_2,e_3)$和右极点$e'=(e'_1,e'_2,e'_3)$, 并且归一化,使得$e_1+e_2=1$
-
构造两个旋转矩阵, 这两个矩阵可以把$e$旋转到$(1,0,e_3)$
$(1,0,e'_3)$ . $$ R=\left[ \begin{matrix} e_1 &e_2 & \ -e_2 &e_1 & \ & & 1\ \end{matrix} \right] $$$R'$ 与$R$类似 -
把$F$改成$R'FR^{T}$
-
设置以下等式$f=e_3,f'=e_3,a=F_{22},b=F_{23},c=F_{32},d=F_{33}$
-
将第6步中的等式带入$s(t)$中, 求解t
-
对求得的解进行验证,同时检查$t \rightarrow \infty$ 的情况
-
将$t$带入极线方程,找到$\hat{x},\hat{x}'$, (极线知道了, 观测点$x,x'$也知道,求直线上某个点,它要满足到已知点距离最近, 由于我们把$x,x'$转到了原点, 那么问题就转变成了直线上求某一点, 它到原点距离最近. 书中给出了一个公式,对于一个一般的直线
$(\lambda, \mu, \nu)$ , 直线上到原点最近的点是$(-\lambda \nu, -\mu \nu, \lambda^2+\mu^2)$ -
知道$\hat{x},\hat{x}^{'}$后,再把他们旋转到原坐标,
$\hat{x} = T^{-1} R^{T} \hat{x}$ $\hat{x}^{'} = T^{-1} R^{T} \hat{x}^{'}$ -
可以顺便利用$\hat{x},\hat{x}^{'}$计算出三维空间点$\hat{X}$.(三角化, 12.2章)
本节大概展示了一些实验结果,在p320
通过两幅图像估计出来的三维空间点应该是满足一定概率分布的. 其准确与否主要取决于从摄像机出发的,两条射线之间的角度. 本节就对这个问题进行建模. 书中为了简化这个问题, 只考虑空间某平面上的点$X=(x,y)^T$, 其图像上的点分别表示为$x=f(X), x'=f'(X)$,
我们线考虑第一幅图像上的点$x$, 并且我们假设噪声服从均值为0, 方差为$\sigma^2$的高斯分布, 那么在已知$X$的条件下,$x$的概率分布可以表示为$p(x|X)$, 对第二幅图上的点$x'$有相同的结论$p(x'|X)$. 那么当$x,x'$已知的时候, 我们可以用贝叶斯公式反推$X$的概率分布
再加上$x,x'$独立的假设, 上式就可以化成
我们现在要重建空间中的一个线段. 它在两幅图像上分别表示为$l, l'$. 我们可以把$l,l'$反投影回去, 那么他们在空间中就是两个平面$\pi,, \pi'$, 这两个平面的交点就是所求直线. 我们可以形式化的表示为$\pi = P^Tl, \pi' = P'^T l'$, 那么三维空间中的线就可以用这两个平面来表示 (
空间中的点$X$在$L$上, 所以$LX=0$
退化的情况
如果这个直线在极平面上, 那么上一节的方法就失效了, 而且这样直线会和基线相交. 在实际情况下, 几乎要和基线相交的线也不能用以上方法来重建.
多平面相交的重建
假设有$n$个平面, 那么我们就他们像前文$L$一样放在一起,形成一个$n \times 4$的矩阵$A$. 对$A$做SDV分解