基本矩阵的基本解法之8点算法

归一化8点算法

  基本矩阵是由下述方程定义:

xTFx=0x′TFx=0
,则在差一个尺度因子的情况下解是唯一的。可以直接用线性算法解得。

  如果由于点坐标存在噪声则矩阵AA最小的解。以上算法是解基本矩阵的基本方法,称为8点算法

  由于基本矩阵有一个重要的特点就是奇异性,FF,也就是最终的解。

  所以8点算法由下面两个步骤组成:

  1. 求线性解 由系数矩阵AA

  8点算法是计算基本矩阵的最简单的方法。为了提高解的稳定性和精度,往往会对输入点集的坐标先进行归一化处理。在MVG的估计一章中推荐各向同性归一化,OpenCV的8点算法也是使用了各向同性,也就是使得各个点做平移缩放之后到坐标原点的均方根距离等于22。非各向同性归一化和各向同性归一化在论文In Defense of the Eight-Point Algorithm中有讨论,ORB-SLAM2单目初始化F矩阵计算之前的归一化使用的是非各向同性归一化。对于归一化八点算法的总结如下:

给定n8n≥8

算法:

  1. 归一化:根据xi^=Txixi^=Txi对应的基本矩阵。

  我是用了SIFT对两个图像进行特征提取以及匹配,然后使用归一化8点算法进行基本矩阵的求解,并且把两个视图的对极线都画出。下图为SIFT匹配图以及对极线:

match1

epipolar_line1
  由于两幅图像在匹配的时候有不少错误的匹配,所以计算的基本矩阵有较大的误差。看第二幅图,左右视图中都可以发现很多的点在对极线附近但并没有完全落在对极线上。我们可以观察到左右视图的对极线都响应地汇聚到一点,那点就是极点。这一对匹配中极点都落在图像内,当然也有些情况对极线会落在图像外,比如下图

epipolar_line2

  具体的代码实现见Github

参考

转载自:https://blog.csdn.net/kokerf/article/details/72630863?locationNum=2&fps=1

猜你喜欢

转载自blog.csdn.net/baidu_38172402/article/details/83502492