Scene planes and homographies
本章主要讲述两个摄像机和一个世界平面之间的射影几何关系.
其特殊之处主要在于三维空间中的点都处于同一个平面上.
我们假设空间有一平面π, 平面上的一点为xπ. xπ分别在两幅图像PP′上形成了x,x′.
那么我们可以从两个方面来讨论: 第一, 从对极几何的角度来说, x在P′上决定了一条直线, 也就是极线. 极线是由x出发的射线在P′上投影形成的. 第二, 从单应性(homography)角度来说, x可以在P′上唯一确定一个点, 因为从x出发的射线和空间平面π的交点可以求出来, 也就是xπ, 知道了xπ自然可以唯一确定x′.
13.1 单应性与平面之间的关系
本章主要讲述空间内任意的一个平面可以唯一确定单应性, 反之亦然. 需要注意的是空间内的平面不可以包括摄像机的光心, 如果包括了光心, 单应性就变成了退化的情况.
我们首先给出一个结论:
假设两个摄像机的投影矩阵分别是P=[I∣0],P′=[A∣a], 空间内的平面表示为πTX=0,π=(VT,1), 由该平面确定的单应性就是x′=Hx, 并且H=A−avT
13.1.1 单应性与对极几何的关系
假设我们从空间平面上随机选择4个点, 把他们投影到两幅图像, 就会形成4对对应点. 这四对对应点就确定了一个单硬性矩阵H. 而且这四对对应点是满足对极几何约束的, i.e. x′TFx=0. 这种情况叫对极几何与单应性是相容的.
假设我们从第一幅图像中随机选择四个点, 第二幅图像也随机选四个点, 可以利用他们计算出一个单应性矩阵, 他们不一定能满足对极几何的约束. 这种情况叫对极几何与单应性不相容.
现在我们考虑相容的情况. 那么对应点之间可以表示为x↔Hx, 带入对极几何的关系式, 我们就得到 (Hx)TFx=xTHTFx=0
根据此式我们可以得出一个结论:
单应性矩阵H与基本矩阵F相容当且仅当 HTF 是一个斜对称矩阵(skew-symmetric), 我们将其表达为: HTF+FTH=0 H的自由度是8-5=3
由于以上关系是一个隐性的约束, 我们接下来给出一个显式表达式.
结论 13.3
给出由两幅图像确定的基本矩阵F, 其对应的单应性矩阵H可以表示为H=A−e′VT F=[e′]×A
引理 13.4
一个变换H是两幅图像的单应矩阵当且仅当这两幅图像确定的F可以分解成[e′]×H, e′是第二幅图像的极点.
根据以上介绍, 我们知道单应性矩阵H是由空间内某一平面π确定的, 那么在已知H的情况下, 我们如何求出平面π? 求解方程组λH=A−avT就行.
13.2 从基本矩阵和图像对应点来计算单应性矩阵
在前文我们是利用空间中的平面来计算单应性矩阵. 在本节中我们直接从两幅图像中的对应元素来计算单应性矩阵. 这是因为三维空间的平面可以用三个不共线的点来计算, 或者用一条直线和一个点. 这些元素都可以直接从两幅图中的对应元素推导出来. 对应元素应该满足一些性质:
- 对应元素要满足对极几何的约束.
- 三维空间中的元素会出现退化的情况, 这是因为元素之间共面或者共线.
我们首先讨论从三个对应点来计算单应性矩阵的情况.
13.2.1 三点法
假设我们知道空间中的三个点Xi在两幅图像上形成的投影, 并且我们已知基本矩阵F, 我们可以这样计算单应矩阵H:
首先空间点Xi的坐标可以计算出来 (chapter12 三角化), 知道了三个点的位置, 那么他们所在的平面就可以被计算出来(3.3-p66), 已知平面就可以根据13.1节的方法来计算H, 这种方法叫显示法
其次, 我们也可以用四个点来计算H, 第四个点就是极点. 所以我们可以有这样的方程组: x′=Hx,e′=He, 这种方法叫隐式法
那么这两种方法有啥区别? 我们应该用哪一种? 答案是我们应该用显示法, 因为隐式法包含了退化的情况. 为什么呢? 因为如果有两个点和极点共线, 那么H就算不出来了(参见4.1.3, p91). 同时, 如果点和极点几乎共线, 那么隐式法会给出一个非常差的结果. 但是显式法没有这个问题, 他可以处理点和极点共线的情况.
我们下面来形式化的表示一下.
结论13.6 给定一个基本矩阵F和三对对应点xi↔xi′, 由这三对点所在平面构成的H可以表达为: H=A−e′(M−1b)T
A=[e′]×F b是一个三维向量,每一维可以表达成
bi=(xi′×(Axi))T(xi′×e′)/∣∣xi′×e′∣∣2
M是3×3的矩阵, 每一行是xiT
一致性条件 每一对对应点都会对H增加一个约束, 该约束可以表达为: e′×xi′=e′×Axi=Fxi, 这个等式左边e′×xi′的几何意义是通过xi′的极线, 右边Fxi就是xi在第二幅图像中的极线. 所以整个式子的意思就是xi′在xi对应的极线上
存在噪声的情况 一般情况下图像中都包含噪声, 那么我们就用迭代的方法来优化x,x′的位置(12.1节, p318页), 然后用12.6节的极大似然估计来求3D空间点的坐标和H
13.2.2 点和线来估计H
本节先将线对应关系, 再讲点对应关系.
线对应 两幅图像中的对应线确定了三维空间中的一条对应线. 三维空间中的线位于一族平面上 (不是一个平面). 这一族平面对应于一族H
结论 13.7 由一对对应直线l↔l′ 确定的一族平面对应了一族单应性矩阵H, 他可以表达为
H(μ)=[l′]×F+μe′lT
从这个式子我们可以看出, H只取决于μ这一个参数. 我们回忆一下13.1节, H同样有一个表达式, 该表达式是在已知两个摄像机矩阵P=K[I∣0],P′=K′[R∣t] 和空间平面 π=(nT,d)T的情况下给出的.
H=K′(R−tnT/d)K−1
这个式子由三个参数决定,因为nT是一个三维向量. 对比上文的两个式子, 我们可以看出由直线确定的H只需要一个参数, 由平面确定的H需要三个参数, 也就是说直线将参数的维度从3压缩到了1
线和点的对应 从上文我们知道线对应关系可以确定H(μ), 那么怎么确定μ的取值呢? 我们用点对应 x↔x′ 来确定
结论13.8 已知F和一对对应点x↔x′,一对对应线l↔l′, H可以表达为如下式子:
H=[l′]×F+∣∣x′×e′∣∣2(lTx)(x′×e′)T(x′×((Fx)×l′))e′lT
应用这个公式的前提是x,x′得满足对极几何约束, 那么在有噪声的情况下, 我们首先就得用算法12.1 (p318) 先优化一下.
H(μ)的几何解释
H(μ)首先满足 x=H(μ)x′. 我们将H(μ)的表达式带入, 可以得到
x′=H(μ)x=([l′]×F+μe′lT)x=[l′]×Fx
最后得到的结果跟μ没关系, 只和F有关系. 所以我们说对极几何为l↔l′上的每一点都确定了对应关系. 这个结论很显然. 因为F本来就是描述两幅图像上点对应关系的, 只不过现在的点都在l,l′上了.
退化的单应矩阵 如果说三维空间中的平面包括了摄像机的光心, 那么H就属于退化的情况. 在退化情况下H就不是满秩矩阵, 如果rank(H)=2, H投影结果就是一条直线. rank(H)=1, H投影结果就是一个点. 如果我们从H(μ)的情况考虑, 那么退化就可以表达成μ→inf或者μ→0
13.3 已知H的情况下求解F
前几章我们讲述的是已知F, 怎么求解H. 现在我们反过来, 求已知H的情况下, 如何求解F.
主要思路就是构造一个平面π, X不在π上. 那么x和π有一个交点xπ, 该交点向P′投影, 得到x~′. x~′肯定和x′不一样, 除非X在π上. 那么我们用x~′,x′ 做叉乘, 得到的线段肯定过极点e′, 再找另外一个x~′, 重复一遍, 就得到第二条过极点e′的极线, 两个极线交点就是极点e′, 知道了e′, 就可以用[e′]×H=F 求出F.
所以最简单的办法就是找出6对对应点, 其中有4对共面的. 用这4对点来计算H (求解方程组xi′=Hxi), 然后用x5,x6求出两条直线(Hx5)×x5′, (Hx6)×x6′, 两个直线做叉乘就是极点e′, 所以F=[e′]×H
投影点的深度
一个世界平面内的点X=(xT,ρ)T 投影在第一幅图像上形成了x, 第二幅图像上形成了x′=Hx+ρe′, 根据上一节的模型, 我们知道x′,e′Hx三点共线. ρ可以被看做偏离H相对程度的一个指标. 那么他就可以被认为是X与平面π之间的距离. ρ=0表明X在平面π上 ρ的符号就可以表明X位于平面的哪一边.
两个平面求F
假设我们知道两个平面π1,π2, 那么他们确定两个单应矩阵H1,H2. 这两个单应矩阵足以确定F, 其实他们是超定了. 我们可以构造一个矩阵H=H2H1, 这是第一幅图像到自己的映射. 那么极点e在H的映射下是不变的. 那么F=[e′]×Hi,i=1,2,e′=Hie, H的另外一个性质是他有两个相同的两个特征值. 因为H1,H2在空间中会相交,然后形成一条直线. 这个直线往第一幅图像中投影, 得到的投影直线在H的映射下是不变的. 所以这个H有一条固定的直线, 还有一个固定点(极点e).
13.4 无穷远处的单应矩阵
定义 13.10 H∞ 是由无穷远处平面π∞定义的单应矩阵.
我们回忆参数化的H表达式 H=K′(R−tnT/d)K−1 (由三个参数确定), 那么
H∞=d→∞limH=K′RK−1
由上式可以看出 H∞ 并不依赖于图像之间的平移, 只和旋转, 内参有关系.
如果我们考虑两幅图之间对应的点, 我们可以由下式:
x′=K′RK−1+K′t/Z=H∞x+K′t/Z
Z就是点相对于第一幅图像的深度. 从上式中我们可以看出无穷远处的点(z=∞)是由H∞映射到图像上的. 如果平移t是零, 那么我们就可以得到H∞, 这相当与摄像机绕自己光心进行旋转. 所以如果摄像机绕自己光心进行旋转, 那么H∞就是关于图像上任意深度点的一个单应矩阵.
如果我们考虑到e′=K′t 那么x′=H∞x+e′/z, 我们对比书中式13.9
x′=Hx+ρe′, 可以看出来1/z就相当于ρ, 所以说逆深度可以解释为点相对于无穷远平面$\pi_{\infty}的距离.
*消失点和消失线
无穷远处平面上的点是由H∞映射到图像上的, 这些点就是消失点. 所以H∞在两幅图像中的消失点v′,v之间建立了映射 v′=Hv, 所以H∞可以由三个不共线的消失点计算. 也可以由对应的消失线计算 (13.2.2节).
仿射重建和度量重建
回忆chapter 10, 知道了无穷远平面π∞可以把投影重建升级成度量重建. H∞会出现在重建过程中, 因为我们如果指定P=[I∣0],P′=[H∞∣λe′], 重建过程就是仿射重建.
假设我们规定π∞的坐标是(0,0,0,1), H∞可以直接从摄像机矩阵中来决定. 我们假设P=[M∣0],P′=[M′∣t], 那么无穷远平面上的一点X=(x∞T,0)T就会被映射到x=PX=Mx∞,x′=P′X=M′x∞, 所以x′=M′M−1, 那么Hinfty=M′M−1
H∞还可以被用来进行两个相机之间的标定. 假设π∞上的绝对圆Ω∞映射在两个图像上, 分别表示为ω,ω′, 他们之间存在如下关系:ω′=H∞−TωH∞−1, 那么我们如果知道ω, 就可以计算ω′, 然后分解它, 就知道了第二个相机的内参.
立体匹配
H∞还可以用来缩小立体匹配时极线搜索的范围. 因为x和无穷远平面由一个交点,记为X∞, 它往图像二上投影, 得到x∞′, 那么与x匹配的x′肯定位于e′与x∞′ 之间, 所以我们不用搜索整个极线.