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

主要内容

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

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

成像模型

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

{ s x = X s y = Y

用P矩阵标定可以得到如下关系,假设外参数为 R t
[ x y s ] = [ r 11 r 12 r 13 t 1 r 21 r 22 r 23 t 2 0 0 0 1 ] [ X Y Z 1 ]

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


这里写图片描述

本质矩阵

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

s 1 [ x 1 y 1 ] = [ X Y ]

s 2 [ x 2 y 2 ] = [ r 11 r 12 r 21 r 22 ] [ X Y ] + [ r 13 r 23 ] Z + [ t 1 t 2 ]

两式整合可以得到:

[ s x s y ] = [ r 11 r 12 r 21 r 22 ] s 1 [ x 1 y 1 ] + [ r 13 r 23 ] Z + [ t 1 t 2 ]

为消去 Z 的影像,两边同点乘 [ r 23 r 13 ] ,得到如下公式:
x r 23 y r 13 = x ( r 23 r 11 r 11 r 21 ) + y ( r 23 r 12 r 13 r 23 ) + r 23 t 1 r 13 t 2

又由于( r 3 = r 1 × r 2 ):
{ r 31 = r 12 r 23 r 22 r 13 r 32 = r 21 r 13 r 11 r 23

故上式变成(考虑到 s 1 s 2 不会对后续推导产生影响,后边直接舍去两个变量):
x r 23 y r 13 + x r 32 y r 31 = r 23 t 1 r 13 t 2

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


这里写图片描述

因此可以得到新的本质矩阵 E :
E = [ 0 0 a 0 0 b c d e ] = [ 0 r 32 0 r 31 r 23 r 13 r 13 t 2 r 23 t 1 ]

并且易得到 E 的一个约束:
a 2 + b 2 = c 2 + d 2

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

影像匹配

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

D = e + a x + b y + c x + d y

则针对3个点可以列出三个方程:
D 1 = e + a x 1 + b y 1 + c x 1 + d y 1 D 2 = e + a x 2 + b y 2 + c x 2 + d y 2 D 3 = e + a x 3 + b y 3 + c x 3 + d y 3

为计算方便,首先消掉 e ,即:
B 1 = D 2 D 1 = a x 21 + b y 21 + c x 21 + d y 21 B 2 = D 3 D 1 = a x 31 + b y 31 + c x 31 + d y 31

那么此时意味着,我们可以使用 c d 表示 a b ,为简化公式,可以表达成:
a = k 1 c + k 2 d + k 3 b = p 1 c + p 2 d + p 3

将上述式子带入 a 2 + b 2 = 1 ,可以得到一个关于 c d 的表达式,同时使用 c 2 + d 2 = 1 将其中的 c 的2次项消除,可以得到:
g 1 c d + g 2 d 2 + g 3 = 0

将上式两边同乘 c ,然后再用 c 2 + d 2 = 1 将其中的 c 的2次项消除,又可以得到:
h 1 c + h 2 c d + h 3 c d 2 + h 4 d 3 = 0

将上述式子整理一下,又可以得到:
B [ c 1 ] = [ g 1 d g 2 d 2 + g 3 h 1 + h 2 d + h 3 d 2 h 4 d 3 ] [ c 1 ] = [ 0 0 ]

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

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

参考论文

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

猜你喜欢

转载自blog.csdn.net/u012348774/article/details/79763258