图像极线矫正-基础矩阵-Python

图像极线矫正-基础矩阵-Python

基础矩阵

  基础矩阵 F 可以由两照相机的参数矩阵(相对旋转 R 和平移 t)表示,我们可以借助 F 来恢复出照相机参数,而 F 可以从对应的投影图像点计算出来,它体现了两视图几何(对极几何)的内在射影几何关系即基础矩阵描述了空间中的点在两个像平面中的坐标对应关系。

对极几何

在上一篇相机模型里我们知道x=PX。通过小孔相机模型,可知从相机的中心C向点x投影一条射线Cx,则该射线必定经过对应像点的三维空间点X,但显然仅仅通过一个像点无法确定X的具体位置。那么如果两个相匹配的像点呢?
设x′是三维点X的另一个像点,其对应相机的中心为C′,那么从相机的中心C′向点也投影一条射线C′x′,并且该射线也必定经过X,也就是说从一对相匹配的像点反投影两条射线,必定相交于空间三维点X。那么一对匹配的像点之间存在这某种约束关系,这种约束被称为两视图的对极约束。

 

测试:

 

 

F基础矩阵

 

根据基础矩阵计算求得的照相机矩阵

 

 根据求得的参数使用后方交汇法让第一张图与第三张图进行匹配

 

 得到第一张图片与第二张和第三张图片的照相机矩阵

 

总结

  • 照片的拍摄距离有些远,匹配的效果不是很好,有错误的匹配点较多,试着缩小拍摄距离会降低错误的匹配点,也可以提升图片的质量, 2-3M的图片匹配起来最好,但是相应的程序运行的时间成本就更大,优化后的特征点也更正确。
  • 有时候会因为匹配点附近太过相似而出现错误匹配,即使是经过优化后的结果仍存在错误的匹配点,图像拍摄的远近、明暗、质量都影响最终的结果

 

报错

E:\PyCharm 2018.2.5\helpers\pycharm\docrunner.py:1: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses import imp

这是因为imp 从 Python 3.4 之后弃用了,建议使用 importlib 代替

解决方法一:

打开 Pycharm安装目录\pycharm\docrunner.py 文件,做如下两步修改

  • 在第一行,注释掉 imp,导入 importlib

 

  •  在第 230 行的 loadSource 函数中,注释 imp.load_source,使用 importlib.machinery.SourceFileLoader 加载模块

 

解决方法二:

在导入包的位置,将imp改成importlib

 -->

 报错直接解除,不过我不知道对低版本的python有没有用,最好用方法一处理。

 

猜你喜欢

转载自www.cnblogs.com/bokeyuancj/p/12696931.html