双目视觉之立体标定

在本篇文章中,将告诉你如何利用对极几何求出本征矩阵E和基本矩阵F,从而得出相机的相对位置

  1. 三角测量
    1. 假设已有一套无畸变、对准、已测量好的完美标准立体实验台,如下图:

      两台摄像机的图像平面彼此完全共面,具有完全平行的光轴(光轴是从投影中心O出发,通过主点c的一条射线,又称为“主光线”),它们是已知距离,也就是相等的焦距,并且假设主点cxleft和cxright已经校准,在左右图像上有相同的像素坐标。
    2. 进一步假设两幅图像是行对准的,并且一台摄像机的像素与另一台完全对准,我们称摄像机前向平行排列,物理世界中的点P在左右图像上的成像点为pt和pr,相应的横坐标分别为xl和xr,通过相似三角形可以得到下式:
      在这里插入图片描述
      进行化简:
      在这里插入图片描述
      进而求出深度Z
      由上式可以看出深度与视差成反比关系,视差的简单定义为d = xl - xr,如下图:

      由上图可以看出,当视差接近0时,微小的视差变化会导致很大的深度变化,当视差较大时,微小的视差几乎不会引起深度大的改变。
    3. 再看一幅图片:

      在这个图中,立体视觉在opencv中使用到了二维坐标系统和三维坐标系统。他是一个右手坐标系,右手食指指向X方向,弯曲中指指向Y方向,拇指指向的就是主光线的方向。左右成像仪的像素原点都在图像的左上角,像素坐标分别记为(xl,yl)和(xr,yr)。投影中心为Ol和Or,主光线与图像平面相交于主点(cx,cy)。经过数学校正,摄像机时行对准的,且相距为T,相同的焦距为f。
    4. 但是上图的情况太过于理想化,下图描述了两个摄像机之间的真实情况和想要实现的数学对准,如下图:

      针对于上述情况,就需要找到观测一个场景的两台摄像机之间的更多的几何关系,这样就引出了对极几何。
  2. 对极几何
    立体成像的基本几何就是对极几何。从本质上来说,对极几何就是将两个针孔模型和一些新的被称为极点的感兴趣点结合起来。下面就要介绍对极几何相关的知识,如下图:

    每台摄像机各自都有一个独立的投影中心,分别为(Ol和Or)以及相应的投影平面,,物理世界中的点P在每个投影面上的投影点,记为pl和pr。新感兴趣的点叫极点,像平面上的上的一个极点er(或el)被定义成另一台摄像机Or(相应的Ol)的投影中心的成像点。由实际点P和两个极点el和er(或投影中心Or和Ol)确定的平面叫极面。线plel和prer(投影点与对应极点之间的连线)称为极线。
    当看到物理世界中的一个点投影到右(或左)图像平面上时,这个点会落在沿着由Or指向pr(或者由Ol指向pl)的这条射线的任何位置上,这是因为仅仅靠一个摄像机是无法知道与观测点的距离。准确地说,假设点P是从右图像上看到,因为这摄像机仅仅看到pr,实际的点P可以是在pr和Or所在直线的任何位置。直线POr投影到另一个平面上对应的直线为plel,也就是,在一个成像仪上看到的所有可能位置的点都是穿过另一台成像仪的极点和对应点的直线的图像。
    对立体摄像机的对极几何的一些事实进行总结:
    1. 摄像机视图内每个3维点都包含在极面内,极面与每幅图像相交的直线是极线。
    2. 给定一幅图像上的一个特征,它在另一幅图像上的匹配视图一定在对应的极线上。这就是“极线约束”。
    3. 对极约束意味着,一旦我们知道立体试验台的对极几何之后,对两幅图像间匹配特征的二维搜索就变成了沿着极线的一维搜索。这样不仅仅节省了大量的计算,还允许我们排除了许多导致虚假匹配的点。
    4. 次序是保留的。如果两个点A和B在两幅图像成像仪上都可见,按顺序水平出现在其中成像仪上,那么在另一个成像仪上也是水平出现。
  3. 本征矩阵和基础矩阵
    1. 本征矩阵E
      本征矩阵E包含在物理空间中两个摄像机相关的旋转和平移信息,他将左摄像机观测到的点P的物理坐标与右摄像机观测到的相同点的位置关联起来
      1. 本征矩阵的数学
        双目视觉之立体标定_第1张图片

      2. 总结:

        1. E是一个秩亏矩阵,即为一个秩为2的3*3矩阵,因此方程实际上由无穷多个解
        2. 本征矩阵中有5个参数—三个旋转参数、两个平移参数
        3. 两个约束:
          a) 行列式的值为0,因为是秩亏矩阵
          b) 两个非零奇异值相等(SVD分解),因为S是反对称矩阵,R是旋转矩阵
        4. E不包括摄像机的内参数,因此它联系的是点的物理坐标或者是摄像机坐标而不是像素坐标
    2. 基本矩阵F
      基本矩阵F不仅包含了E的信息外还包含了两个摄像机的内参数。由于F包含了这些内参数,因此它可以在像素坐标系将两台摄像机关联起来。他将一台摄像机的像平面上的点在图像坐标上的坐标和另一台摄像机的像平面上的点关联起来。
      1. 基础矩阵的数学
        双目视觉之立体标定_第2张图片
      2. 总结:
        1. 基础矩阵的秩也是2
        2. 基础矩阵F有7个参数,其中两个参数表示对极,三个参数表示两个像平面的单应矩阵

参考文献:Adrian Kaehler,Gary Bradski,Learning Opencv3[M],清华大学出版社,2018.7


下面的是笔者的微信公众号,欢迎关注,会持续更新c++、python、tensorflow、机器学习、深度学习、计算机视觉等系列文章,公众号中内含300+本pdf电子书籍,肯定有你需要的一本,关注公众号即可领取哦。
在这里插入图片描述
如果你对JAVA方面感兴趣,可以关注下面JAVAERS公众号,陪你一起学习,一起成长,一起分享JAVA路上的诗和远方。在公众号里面都是JAVA这个世界的朋友,公众号每天会有技术类文章,面经干货,也有进阶架构的电子书籍,如Spring实战、SpringBoot实战、高性能MySQL、深入理解JVM、RabbitMQ实战、Redis设计与实现等等一些高质量书籍,关注公众号即可领取哦。
在这里插入图片描述

你可能感兴趣的:(opencv学习实战)