【计算机视觉-从入门到精通系列】 第三章 立体匹配

 3.1 双目立体视觉

       先来做一个简单的实验,拿出两只笔,钢笔、铅笔、圆珠笔都可以,左右手各拿一支笔,然后将两支笔的笔尖慢慢地对上。怎么样?是不是很容易。然后闭上一只眼,再重复以上的实验,如何?比较难对上对不对。

       为什么会这样呢?要解释以上现象,需要先理解一个基本概念--视差(Disparity)视差就是从有一定距离的两个点上观察同一个目标所产生的差异。从图3-1可以看出同一物体在两个不同的观察下成像结果有所不同,这就是双目立体视觉。在左边的观察中,蜡烛顶端P点的成像位置在像中心左侧0.5cm处,而在右边的观察中,成像位置在像中心右侧0.5cm处。如果这两个观察的是一双眼睛,那么蜡烛在左右眼上的相对位置是明显不同的,这个差异就是视差。视差计算公式如式(3-1)。

       了解了视差,再回过头来解释开头提到的实验。两个笔尖是否可以对上,实际上是一个定位问题。那么视差和定位又有什么关系呢?还是看图3-1,图中是相似三角形,于是有式(3-2)

       将式(3-1)代入式(3-2),得式(3-3)

       通过公式,可以看出定位过程是这样的:对于确定的观察者(人眼或相机)而言焦距f、基线b均为已知常数,所以当视差确定时,深度z也确定下来了,即确定了物方与观测者的距离。如果推广到三维空间,当确定像方的xy两个方向的视差就可以确定被观察的物方点的三维坐标,完成定位。因此笔尖只有在双眼上形成视差时,才能准确的确定它的位置,将它们对上。

3.2 对极几何

       在上一节计算视差时,默认给定了两个像点但实际上,我们并不知道左影像上在右影像上对应的具体在哪里。因此计算视差之前,要确定左右影像上对应的像点,这个过程接下来要讲的立体匹配立体匹配(Stereo Matching)就是从不同视角拍摄的影像中找到匹配的对应点。这个对应点一般称为同名像点,也可以简称为同名点

       如果我们只是想要寻找某个物方点在像方上的像点,很简单对不对,只要查看一下这两张影像,人眼就可以找出来。但如果拍摄这个场景不只是两张影像,而是十张、一百张或是一千张,查找同名点是不是一个很繁重的工作呢?而在具体应用中,往往需要把场景里所有关键(成千上万)物方位置都精确定位出来,这时寻找同名点的工作量将会是一个天文数字。立体匹配要解决的就是两张影像同名点的配准问题,简而言之就是为左影像上的每一个像点在右影像找到同名点。当确定了左影像的待匹配像点,要找到右影像上的同名点,就需要搜索右影像上的所有像点,可想而知这个过程的计算量极大。为了减少计算量,一个可行的办法就是借助一些额外的信息,来减小搜索范围。

       下面我们将介绍一种减少搜索范围的重要方法,极线校正。那什么是极线校正?为什么极线校正能够减少立体匹配的搜索范围呢?要回答这两个问题,我们需要了解一个更基本的概念,对极几何(Epipolar Geometry),如图3-4。对极几何描述的是两幅影像之间的内在几何关系,与外部场景无关,只依赖于摄像机内参数和这两幅影像之间的相对姿态。图3-4为两个相机中心,P为空间中一点,P对应像平面上的投影分别为连线与像平面的交点称为极点(Epipoles)称为极线(Epipolar Lines)P三点组成的平面称为极平面(Epipolar Plane)。

 

       观察图3-4,对于P点,在这条射线上无论它移动到哪里,它在左影像上的像点都保持在处不变,但是它在右影像上的像点发生了改变,其移动轨迹恰好沿着极线。同样的,如果P点沿着射线移动,它在右影像上的像点为不变,在左影像上的像点运动轨迹恰好沿着左极线。这是不是一个很有意思的现象?我们换一个角度来看这个现象,对于左极线,在它上面的任意一个像点对应的物方点,在右影像上的像点一定是在右极线上。更进一步的观察不难发现,事实上左极线的像点,其在右影像上的同名点一定分布在右极线上,这就是对极约束。为什么会存在对极约束呢?道理其实很简单,原因就是P五点共面,这就是对极约束的本质。

       有了对极约束,在进行立体匹配的时候,左影像上的某一像点在右影像上寻找同名点时就不需要在整张右影像上搜索了,而只需要在右影像对应的极线上搜索即可,这无疑是大大缩小了搜索的范围。但是,不要高兴的太早,这里还是存在最后一个问题,那就是对于左影像每一个像点,都必须先算出它在右影像上对应的极线,这个计算量同样也是不小的。最好是一种方法,可以不用计算,直接确定右边的极线呢。这个方法就是极线校正

       因为存在对极约束,左极线上像点的同名点分布在右极线上,假如把两张影像看成是由若干对极线组成,并且事先就把这些极线上的像素点按照极线重新排布好,形成两张新的影像,这两张新的影像的每一行就是一条极线,且逐行对应,这样当需要进行立体匹配时,左影像上的同名点就可以在右影像上的同一行上查找了,匹配效率大大地得到提升,这就是影像的极线校正。极线校正是通过对两个相机进行旋转,并重新定义新的像平面,让极线对共线且平行于像平面的某条坐标轴(通常是水平轴),该操作同时建立了新的立体像对。

       在实际应用中,往往会先对匹配的像对进行极线纠正后才真正的进入立体匹配算法,因而极线校正是立体匹配中一个非常重要的前置步骤。具体如何进行极线校正呢?常用的方法有Fusiello法、Bouguet算法等。主要看看各位读者大佬们的反馈啦,如果感兴趣请在评论下留言,我会在下一章前,花一定的篇幅来说明这两种方法,最后请多点赞收藏关注啦。

 

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值