SFM与三维场景重建的学习:基础矩阵

一、基础矩阵的基本概念

三维场景中的同一个三维点在不同视角下的像点存在着一种约束关系:对极约束,基础矩阵是这种约束关系的代数表示,并且这种约束关系独立与场景的结构,只依赖与相机的内参和外参(相对位姿)。这样可以通过通过匹配的像点对计算出两幅图像的基础矩阵,然后分解基础矩阵得到相机的相对位姿。基础矩阵适用于简化匹配以及去除错配特征。

二、基础矩阵的基本原理

基础矩阵表示的是图像中的像点p1到另一幅图像对极线l2的映射,有如下公式:
SFM与三维场景重建的学习:基础矩阵
而和像点P1匹配的另一个像点p2必定在对极线l2上,所以就有:
SFM与三维场景重建的学习:基础矩阵

这样仅通过匹配的点对,就可以计算出两视图的基础矩阵F。

转置: 如果 F 是表述点对 (p1, p2)之间的基础矩阵, 则 FT是表述点对 (p2,p1)之间的基础矩阵;

对极线: F 可以将点p 映射到对应像平面上一条线 l=Fp’,同理可得 l’=FTp;

对极点::对于所有对极线, 有 eTFp’=0, ∨p’ eTF=0, 同理有 Fe’=0。

8点法估算基础矩阵
基础矩阵F是一个3×3的矩阵,有9个未知元素。然而,上面的公式中使用的齐次坐标,齐次坐标在相差一个常数因子下是相等,F也就只有8个未知元素,也就是说,只需要8对匹配的点对就可以求解出两视图的基础矩阵F。
优点:线性求解,容易实现,运行速度快
缺点:对噪声敏感
对于一对匹配的像点p1=[u1,v1,1]T,p2=[u2,v2,1]T,带入式子中,有
SFM与三维场景重建的学习:基础矩阵
把基础矩阵F的各个元素当作一个向量处理,有f=[f1,f2,f3,f4,f5,f6,f7,f8,f9],即
[u1u2,u1v2,u1,v1u2,v1v2,v1,u2,v2,1]⋅f=0
对于其他的点对也使用同样的表示方法。这样将得到的所有方程放到一起,得到一个线性方程组(
(ui,vi)(ui,vi)表示第i个特征点),可得:
SFM与三维场景重建的学习:基础矩阵
求解以上方程即可得到结果。

三、实验图片及所计算出的基础矩阵

室内图:
图片一:
SFM与三维场景重建的学习:基础矩阵
所计算得出的基础矩阵为:
SFM与三维场景重建的学习:基础矩阵
图片二:
SFM与三维场景重建的学习:基础矩阵
所计算得出的基础矩阵为:
SFM与三维场景重建的学习:基础矩阵
所计算的投影矩阵:
SFM与三维场景重建的学习:基础矩阵
室外图:
图片一:
SFM与三维场景重建的学习:基础矩阵
所计算得到的基础矩阵:
SFM与三维场景重建的学习:基础矩阵
图片二:
SFM与三维场景重建的学习:基础矩阵
所计算得到的基础矩阵:
SFM与三维场景重建的学习:基础矩阵

所计算的投影矩阵:
SFM与三维场景重建的学习:基础矩阵
四、实验结果:
室内:
SFM与三维场景重建的学习:基础矩阵
SFM与三维场景重建的学习:基础矩阵
SFM与三维场景重建的学习:基础矩阵
室外:
SFM与三维场景重建的学习:基础矩阵
SFM与三维场景重建的学习:基础矩阵
SFM与三维场景重建的学习:基础矩阵
室内的匹配对于室外而言,光线变化不那么大,图像边缘像素落差较小,所以匹配出的特征点相比于室外较小。对于像素较低的图片,匹配出的特征点也会相较于像素高的少,因此需要将阈值设置大一些,才可以计算出基础矩阵及投影矩阵。然而阈值增大,基础矩阵的准确性会下降,匹配出的特征点容错率大。