仿射对极几何

本章主要是在仿射摄像机的情况下重新考虑对极几何. 仿射摄像机的优点是他是线性的, 所以很多最优化算法可以用线性代数的知识解决. 如果是一般的投影摄像机, 很多算法就不是线性的了, 比如三角化.

14.1 仿射对极几何

仿射摄像机的特点是它的光心在无穷远, 所以从三维空间像二维平面投影时, 投影射线时互相平行的. 在这种情况下, 对极几何就可以得到简化.

极线 所有极线都是互相平行的. 因为不同点向图像投影的射线是平行的

极点 因为所有极线互相平行, 那么极点在无穷远处.

14.2 仿射基本矩阵

仿射基本矩阵FAF_A长这样

[00a00bcde]\left[ \begin{matrix} 0 & 0 & a \\ 0 & 0 & b \\ c & d & e \\ \end{matrix} \right]

因为a,b,c,d,ea,b,c,d,e都不为0, 那么FAF_A的秩就是3, 一般的FF秩是2

14.2.1 FAF_A的推导过程

从几何角度推导FAF_A的过程

  1. 考虑对应点之间的对应关系. 因为从图像1到空间平面,再到图像2的所有变换都是基于平面的仿射变换, 所以对应点之间的变换也是仿射变换, 也就是x=HAxx'=H_A x
  2. 构造极线. 极线是通过极点和xx'构造的. 所以l=e×HAx=FAxl'=e' \times H_A x =F_A x, 所以FA=[e]×HAF_A=[e']_{\times} H_A, 具体展开如下:

FA=[e]×HA=[00000][001]=[0000]F_A =[e']_{\times} H_A \\ = \left[ \begin{matrix} 0 & 0 & * \\ 0 & 0 & * \\ * & * & 0 \\ \end{matrix} \right] \left[ \begin{matrix} * & * & * \\ * & * & * \\ 0 & 0 & 1 \\ \end{matrix} \right] \\ = \left[ \begin{matrix} 0 & 0 & * \\ 0 & 0 & * \\ * & * & * \\ \end{matrix} \right]

从代数角度推导FAF_A的过程

F=[e]×PP+F=[e']_{\times}P'P^{+}, 把仿射摄像机的矩阵带入即可.

14.2.2 性质

FAF_A四个自由度, 两个极点,每个贡献一个自由度. 两个平面上的极线互相映射, 贡献两个自由度.

因为FAe=0F_A e = 0, 所以极点表示为(-d,c,0), 所以eell_{\infty}xx对应的极线l=FAx=(a,b,cx+dy+e)Tl'=F_A x=(a,b,cx+dy+e)^T, 此式表明所有的极线都是平行的, 因为(a,b)(a,b)(x,y)(x,y)互相独立

14.3 从对应点中计算FAF_A

因为FAF_A规定了点与点之间的对应关系, 所以给出足够过的点, 肯定是能把FAF_A计算出来的. 比如我们规定xi=(xi,yi,1),xi=(xi,yi,1)x_i=(x_i,y_i,1), x'_i=(x'_i,y'_i,1). 这样一对对应点可以构造一个线性方程

axi+byi+cxi+dyi+e=0ax'_i+by'_i+cx_i+dy_i+e=0

写成矩阵形式就是Af=0Af=0, AA是一个n×5n \times 5的矩阵, 最少需要4对点, 而不是5. FAF_A四个自由度, 剩下的一个变量可由其他四个来表示.

奇异性约束

我们知道一般情况的FF是奇异矩阵, 所以FAF_A也应该是一个奇异性矩阵. 而且FAF_A的形式就确定了它的rank不会大于2, 所以没有必要将奇异性约束像求普通FF那样加入求解的过程, 换言之, 不用考虑这恶个约束, 直接求解就可以了.

几何解释

求解两个图像上的对应点就是在四位空间中去拟合一个平面 (axi+byi+cxi+dyi+e=0ax'_i+by'_i+cx_i+dy_i+e=0 就是四维空间中的平面). 这样做有两个好处: 第一, 求FF就是一个平面拟合过程, 容易思考. 第二可以用sampson损失函数, 因为它是唯一的一个一阶近似方法.

黄金标准算法

知道了求解FF的几何解释, 我们就用这个几何解释来求解它. 求解的过程就是黄金标准算法. 我们考虑有噪声的情况, 理论点可以表示为xi^,xi^\hat{x_i},\hat{x_i}', 实际观测点是xi,xix_i,x'_i, 所谓的黄金标准算法就是优化以下函数:

minid(xi,xi^)2+d(xi,xi^)2min \sum_{i} d(x_i,\hat{x_i})^2 + d(x'_i,\hat{x_i}')^2

其中xi^,xi^\hat{x_i},\hat{x_i}'满足xi^FAxi^\hat{x_i} F_A \hat{x_i}', 如果我们考虑几何解释, 我们就可以考虑四维空间的一个点Xi=(xi,yi,xi,yi)X_i=(x'_i,y'_i,x_i,y_i),用这个点去拟合一个平面,其参数为(a,b,c,d,e)(a,b,c,d,e), 那么就是求点到平面的最小距离.

d=axi,byi+cxi+dyi+ea2+b2+c2+d2d_{\perp} = \frac{ax'_i,by'_i+cx_i+dy_i+e}{\sqrt{a^2+b^2+c^2+d^2}}

求解这个函数的过程如下: 先对ee求导数, 令其等于0, 可以得到

e=1n(NTXi)=NXˉe=-\frac{1}{n} \sum(N^T X_i) = -N \bar{X}

N=(a,b,c,d)N=(a,b,c,d)

Nˉ\bar{N}就是所有已知XX的均值, 也就是质心.

ee反带回dd_{\perp} 得到

d=1N2i(NTΔXi)d_{\perp} = \frac{1}{||N||^2} \sum_i(N^T \Delta X_i)

ΔXi=XiXˉ\Delta X_i = X_i - \bar{X}

ΔXi\Delta X_i的行构造一个矩阵, 然后直接SVD分解就可以了. 最后一个需要注意的点: 黄金标准算法需要多于4对对应点. 那么如果我们只知道4对对应点, 该怎那么办? 下面的算法来解决.

4对对应点求解FAF_A

步骤如下:

  1. 用前三对对应点计算一个仿射变换HAH_A, 也就是求解xi=HAxix'_i=H_A x_i
  2. HAH_A计算HAx4H_A x_4, 然后(HAx4×x4)(H_A x_4 \times x'_4) 得到极线ll' 那么极点就是e=(l2,l1,0)e'=(-l'_2,l'_1,0)
  3. 所以对任何一个点xx, 它对应的极线就是e×(HAx)=FAxe' \times (H_A x) = F_A x

14.4 三角化

现在假设我们知道一对对应点(x,y)(x,y)(x,y) \leftrightarrow (x',y') 和仿射基本矩阵FAF_A, 因为已知对应点是含噪声的, 我们想要确定不含噪声的点(x^,y^)(x^,y^)(\hat{x},\hat{y}) \leftrightarrow (\hat{x}',\hat{y}') 所以我们得到一个带约束的优化

(xx^)2+(yy^)2+(xx^)2+(yy^)2(x-\hat{x})^2 + (y-\hat{y})^2 + (x'-\hat{x}')^2 + (y-\hat{y}')^2

同时

(x^,y^,1)FA(x^,y^,1)=0(\hat{x},\hat{y},1) F_A (\hat{x}',\hat{y}',1) = 0

那么怎么样求解呢? 除了几何解释的求解法以外, 我们还可以用sampson损失函数

(x^y^x^y^)=(xyxy)ax+by+cx+dy+ea2+b2+c2+d2(abcd)\begin{pmatrix} \hat{x}' \\ \hat{y}' \\ \hat{x} \\ \hat{y} \\ \end{pmatrix} = \begin{pmatrix} x' \\ y' \\ x \\ y \\ \end{pmatrix} - \frac{ax'+by'+cx+dy+e}{a^2+b^2+c^2+d^2} \begin{pmatrix} a \\ b \\ c \\ d \\ \end{pmatrix}

14.5 仿射重建

假设我们有多于4对对应点xixix_i \leftrightarrow x'_i, 那么我们回一下, 如果摄像机是投影摄像机, 那么重建的结果就是投影重建. 现在如果摄像机是仿射摄像机, 那么重建结果就是仿射重建. 本节就来说明这个结果.

我们假设空间中有四个不共面的点XiX_i, 我们选择X0X_0作为原点. 然后我们构造三个坐标轴, 表示为Ei~=Xi~X0~\tilde{E_i} = \tilde{X_i} - \tilde{X_0}. 所以对于一个空间中的点X=(x,y,z)X=(x,y,z), 他的坐标就可以表示为

X~=X0+xE1~+yE2~+zE3~\tilde{X} = X_0 + x \tilde{E_1} + y \tilde{E_2} + z \tilde{E_3}

X0~=(000)X1~=(100)X2~=(010)X3~=(001)\tilde{X_0} = \begin{pmatrix} 0 \\ 0 \\ 0 \\ \end{pmatrix} \tilde{X_1} = \begin{pmatrix} 1 \\ 0 \\ 0 \\ \end{pmatrix} \tilde{X_2} = \begin{pmatrix} 0 \\ 1 \\ 0 \\ \end{pmatrix} \tilde{X_3} = \begin{pmatrix} 0 \\ 0 \\ 1 \\ \end{pmatrix}

有了这些公式以后, 我们来看看仿射摄像机的投影过程长什么样. 该过程可以被表达为

x~=M2×3X~+t~\tilde{x} = M_{2 \times 3} \tilde{X} + \tilde{t}

所以说上文的Ei~\tilde{E_i}可以被表示成ei~=M2×3Ei~\tilde{e_i}=M_{2 \times 3} \tilde{E_i}, 那么对于空间点X=(x,y,z)X=(x,y,z), 他在第一幅图像中就可以被表示成

xe1~+ye2~+ze3~x \tilde{e_1} + y \tilde{e_2} + z \tilde{e_3}

对于第二幅图象, e~=M2×3Ei~\tilde{e}'=M_{2 \times 3} \tilde{E_i}, 那么XX在第二幅图象中就可以表示成

xe1~+ye2~+ze3~x \tilde{e_1}' + y \tilde{e_2}' + z \tilde{e_3}'

14.6 Necker reversal and the bas-relief ambiguity(不知道咋翻译)

本章主要讲述在已标定摄像机的情况下, 只用两个图像会产生一系列的歧义. 主要是两种歧义:

  1. Necker reversal 其主要原因是物体旋转ρ\rho 和旋转ρ-\rho的镜像, 在affine摄像机下会产生同样的投影图像. 如果是透视投影, 那么每个点都会有不同的深度,所以这种歧义就没有了.

  2. The bas-relief ambiguity. 主要原因是摄像机进行一个旋转后,从光心出发的光线依旧相交于同一点. 这样导致深度和旋转角度是不确定的.参见p357, fig14.9(b), 看图容易理解一点.

14.7 计算摄像机运动

本节主要讲述如果从FAF_A中计算摄像机运动. 我们首先把摄像机的运动表示为R=RρRθR=R_{\rho}R_{\theta}

θ\theta是绕视线方向的旋转角度. ρ\rho是绕与图像平面平行的轴的旋转角度, ϕ\phi是图像x轴的旋转角度.具体参见p358 fig14.10, 图像之间除了旋转还有一个缩放因子ss

具体的推导过程我们省略, 在这里直接给出公式

tanϕ=batan(ϕθ)=dcs2=c2+d2a2+b2\tan \phi = \frac{b}{a} \\ \tan (\phi - \theta) = \frac{d}{c} \\ s^2 = \frac{c^2+d^2}{a^2+b^2}

a,b,c,da,b,c,d就是黄金标准算法里提到的四维空间的平面参数