仿射对极几何
本章主要是在仿射摄像机的情况下重新考虑对极几何.
仿射摄像机的优点是他是线性的, 所以很多最优化算法可以用线性代数的知识解决. 如果是一般的投影摄像机, 很多算法就不是线性的了, 比如三角化.
14.1 仿射对极几何
仿射摄像机的特点是它的光心在无穷远, 所以从三维空间像二维平面投影时, 投影射线时互相平行的. 在这种情况下, 对极几何就可以得到简化.
极线 所有极线都是互相平行的. 因为不同点向图像投影的射线是平行的
极点 因为所有极线互相平行, 那么极点在无穷远处.
14.2 仿射基本矩阵
仿射基本矩阵FA长这样
⎣⎡00c00dabe⎦⎤
因为a,b,c,d,e都不为0, 那么FA的秩就是3, 一般的F秩是2
14.2.1 FA的推导过程
从几何角度推导FA的过程
- 考虑对应点之间的对应关系. 因为从图像1到空间平面,再到图像2的所有变换都是基于平面的仿射变换, 所以对应点之间的变换也是仿射变换, 也就是x′=HAx
- 构造极线. 极线是通过极点和x′构造的. 所以l′=e′×HAx=FAx, 所以FA=[e′]×HA, 具体展开如下:
FA=[e′]×HA=⎣⎡00∗00∗∗∗0⎦⎤⎣⎡∗∗0∗∗0∗∗1⎦⎤=⎣⎡00∗00∗∗∗∗⎦⎤
从代数角度推导FA的过程
F=[e′]×P′P+, 把仿射摄像机的矩阵带入即可.
14.2.2 性质
FA四个自由度, 两个极点,每个贡献一个自由度. 两个平面上的极线互相映射, 贡献两个自由度.
因为FAe=0, 所以极点表示为(-d,c,0), 所以e在l∞
点x对应的极线l′=FAx=(a,b,cx+dy+e)T, 此式表明所有的极线都是平行的, 因为(a,b)与(x,y)互相独立
14.3 从对应点中计算FA
因为FA规定了点与点之间的对应关系, 所以给出足够过的点, 肯定是能把FA计算出来的. 比如我们规定xi=(xi,yi,1),xi′=(xi′,yi′,1). 这样一对对应点可以构造一个线性方程
axi′+byi′+cxi+dyi+e=0
写成矩阵形式就是Af=0, A是一个n×5的矩阵, 最少需要4对点, 而不是5. FA四个自由度, 剩下的一个变量可由其他四个来表示.
奇异性约束
我们知道一般情况的F是奇异矩阵, 所以FA也应该是一个奇异性矩阵. 而且FA的形式就确定了它的rank不会大于2, 所以没有必要将奇异性约束像求普通F那样加入求解的过程, 换言之, 不用考虑这恶个约束, 直接求解就可以了.
几何解释
求解两个图像上的对应点就是在四位空间中去拟合一个平面 (axi′+byi′+cxi+dyi+e=0 就是四维空间中的平面). 这样做有两个好处: 第一, 求F就是一个平面拟合过程, 容易思考. 第二可以用sampson损失函数, 因为它是唯一的一个一阶近似方法.
黄金标准算法
知道了求解F的几何解释, 我们就用这个几何解释来求解它. 求解的过程就是黄金标准算法. 我们考虑有噪声的情况, 理论点可以表示为xi^,xi^′, 实际观测点是xi,xi′, 所谓的黄金标准算法就是优化以下函数:
mini∑d(xi,xi^)2+d(xi′,xi^′)2
其中xi^,xi^′满足xi^FAxi^′, 如果我们考虑几何解释, 我们就可以考虑四维空间的一个点Xi=(xi′,yi′,xi,yi),用这个点去拟合一个平面,其参数为(a,b,c,d,e), 那么就是求点到平面的最小距离.
d⊥=a2+b2+c2+d2axi′,byi′+cxi+dyi+e
求解这个函数的过程如下:
先对e求导数, 令其等于0, 可以得到
e=−n1∑(NTXi)=−NXˉ
N=(a,b,c,d)
Nˉ就是所有已知X的均值, 也就是质心.
把e反带回d⊥ 得到
d⊥=∣∣N∣∣21i∑(NTΔXi)
ΔXi=Xi−Xˉ
用ΔXi的行构造一个矩阵, 然后直接SVD分解就可以了.
最后一个需要注意的点: 黄金标准算法需要多于4对对应点. 那么如果我们只知道4对对应点, 该怎那么办? 下面的算法来解决.
4对对应点求解FA
步骤如下:
- 用前三对对应点计算一个仿射变换HA, 也就是求解xi′=HAxi
- 用HA计算HAx4, 然后(HAx4×x4′) 得到极线l′
那么极点就是e′=(−l2′,l1′,0)
- 所以对任何一个点x, 它对应的极线就是e′×(HAx)=FAx
14.4 三角化
现在假设我们知道一对对应点(x,y)↔(x′,y′) 和仿射基本矩阵FA, 因为已知对应点是含噪声的, 我们想要确定不含噪声的点(x^,y^)↔(x^′,y^′) 所以我们得到一个带约束的优化
(x−x^)2+(y−y^)2+(x′−x^′)2+(y−y^′)2
同时
(x^,y^,1)FA(x^′,y^′,1)=0
那么怎么样求解呢? 除了几何解释的求解法以外, 我们还可以用sampson损失函数
⎝⎛x^′y^′x^y^⎠⎞=⎝⎛x′y′xy⎠⎞−a2+b2+c2+d2ax′+by′+cx+dy+e⎝⎛abcd⎠⎞
14.5 仿射重建
假设我们有多于4对对应点xi↔xi′, 那么我们回一下, 如果摄像机是投影摄像机, 那么重建的结果就是投影重建. 现在如果摄像机是仿射摄像机, 那么重建结果就是仿射重建. 本节就来说明这个结果.
我们假设空间中有四个不共面的点Xi, 我们选择X0作为原点. 然后我们构造三个坐标轴, 表示为Ei~=Xi~−X0~. 所以对于一个空间中的点X=(x,y,z), 他的坐标就可以表示为
X~=X0+xE1~+yE2~+zE3~
X0~=⎝⎛000⎠⎞X1~=⎝⎛100⎠⎞X2~=⎝⎛010⎠⎞X3~=⎝⎛001⎠⎞
有了这些公式以后, 我们来看看仿射摄像机的投影过程长什么样. 该过程可以被表达为
x~=M2×3X~+t~
所以说上文的Ei~可以被表示成ei~=M2×3Ei~, 那么对于空间点X=(x,y,z), 他在第一幅图像中就可以被表示成
xe1~+ye2~+ze3~
对于第二幅图象, e~′=M2×3Ei~, 那么X在第二幅图象中就可以表示成
xe1~′+ye2~′+ze3~′
14.6 Necker reversal and the bas-relief ambiguity(不知道咋翻译)
本章主要讲述在已标定摄像机的情况下, 只用两个图像会产生一系列的歧义.
主要是两种歧义:
-
Necker reversal
其主要原因是物体旋转ρ 和旋转−ρ的镜像, 在affine摄像机下会产生同样的投影图像. 如果是透视投影, 那么每个点都会有不同的深度,所以这种歧义就没有了.
-
The bas-relief ambiguity. 主要原因是摄像机进行一个旋转后,从光心出发的光线依旧相交于同一点. 这样导致深度和旋转角度是不确定的.参见p357, fig14.9(b), 看图容易理解一点.
14.7 计算摄像机运动
本节主要讲述如果从FA中计算摄像机运动.
我们首先把摄像机的运动表示为R=RρRθ
θ是绕视线方向的旋转角度. ρ是绕与图像平面平行的轴的旋转角度, ϕ是图像x轴的旋转角度.具体参见p358 fig14.10, 图像之间除了旋转还有一个缩放因子s
具体的推导过程我们省略, 在这里直接给出公式
tanϕ=abtan(ϕ−θ)=cds2=a2+b2c2+d2
a,b,c,d就是黄金标准算法里提到的四维空间的平面参数