openMVG:正射投影影像的影像匹配

主要内容

本文是阅读论文[1]的一些笔记。

中心投影是目前最为常见的一种成像模式,然而也存在另外一种成像模式正射投影。正射投影并不是一种很常见的投影方式,但是研究正射投影依然非常有价值。在当中心投影拍摄过程中,如果焦距较大或拍摄目标都处于同一个平面,可以将其近似等同于正射投影(此处就不证明了,大概意思就是当Z值近似为0时就可以认为其实正射投影)。

成像模型

首先给出正射投影的成像关系:

{sx=Xsy=Y

用P矩阵标定可以得到如下关系,假设外参数为Rt
[xys]=[r11r12r13t1r21r22r23t20001][XYZ1]

可以发现正射投影的影像与中心投影的差别较大,下图是Wiki上的一个示意图:


openMVG:正射投影影像的影像匹配

本质矩阵

中心投影影像具有自己的核线成像关系,正射投影影像也具有核线成像关系。下边对其进行推导。
首先假设I1的外方位元素(R1=I,t1=0),I2的外方位元素为(R2=R,t2=t)。(X,Y,Z)为物方一点,(x1,y1)(x2,y2)分别为对应两张照片上的像点。
则有以下关系:

s1[x1y1]=[XY]

s2[x2y2]=[r11r12r21r22][XY]+[r13r23]Z+[t1t2]

两式整合可以得到:

[sxsy]=[r11r12r21r22]s1[x1y1]+[r13r23]Z+[t1t2]

为消去Z的影像,两边同点乘[r23r13],得到如下公式:
xr23yr13=x(r23r11r11r21)+y(r23r12r13r23)+r23t1r13t2

又由于(r3=r1×r2):
{r31=r12r23r22r13r32=r21r13r11r23

故上式变成(考虑到s1s2不会对后续推导产生影响,后边直接舍去两个变量):
xr23yr13+xr32yr31=r23t1r13t2

该公式又可进一步整理成矩阵形式


openMVG:正射投影影像的影像匹配

因此可以得到新的本质矩阵E:
E=[00a00bcde]=[0r320r31r23r13r13t2r23t1]

并且易得到E的一个约束:
a2+b2=c2+d2

同时考虑到对E乘以一个系数λ并不会破坏上述的等式关系,因此我们可以选择合适的系数,使得:
a2+b2=c2+d2=1

影像匹配

影像匹配的主要目的是将两幅图像上的同名点进行匹配,通常而言都分为特征点匹配和几何误差滤除两步。特征点匹配主要是根据特征点的描述子之间的距离来选择距离最近的匹配点;当然第一步中通常都会存在大量的误匹配,因此需要根据一些几何约束对齐进行错误匹配的剔除,其中最常用的方法之一就是本质矩阵。参考第二节的描述,本质矩阵的主要内容就是核线关系。
在正摄投影影像中,由于E只具有3个自由度,因此理论上只需要3个点即可求解出本质矩阵。接下来我们主要讨论如何使用3个点来求解出本质矩阵。
首先记匹配点误差为:

D=e+ax+by+cx+dy

则针对3个点可以列出三个方程:
D1=e+ax1+by1+cx1+dy1D2=e+ax2+by2+cx2+dy2D3=e+ax3+by3+cx3+dy3

为计算方便,首先消掉e,即:
B1=D2D1=ax21+by21+cx21+dy21B2=D3D1=ax31+by31+cx31+dy31

那么此时意味着,我们可以使用cd表示ab,为简化公式,可以表达成:
a=k1c+k2d+k3b=p1c+p2d+p3

将上述式子带入a2+b2=1,可以得到一个关于cd的表达式,同时使用c2+d2=1将其中的c的2次项消除,可以得到:
g1cd+g2d2+g3=0

将上式两边同乘c,然后再用c2+d2=1将其中的c的2次项消除,又可以得到:
h1c+h2cd+h3cd2+h4d3=0

将上述式子整理一下,又可以得到:
B[c1]=[g1dg2d2+g3h1+h2d+h3d2h4d3][c1]=[00]

由于上述方程一定有解,因此det(B)=0,那么我们就得到了一个关于d的一元四次方程,根据公式可以求出d的解,从而解算出E

现在我们已经清楚如何用三个点解算E,那么接下来只需要参考Ransac的思路即可对匹配点进一步进行处理,得到没有匹配误差的点。

参考论文

[1] Two-View Orthographic Epipolar Geometry: Minimal and
Optimal Solvers
[2] Motion Estimation under Orthographic Projection