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算法等。主要看看各位读者大佬们的反馈啦,如果感兴趣请在评论下留言,我会在下一章前,花一定的篇幅来说明这两种方法,最后请多点赞收藏关注啦。

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

  1. 【计算机视觉-从入门到精通系列】 第一章 基础知识

    ​​​​​​1.1 齐次坐标 想要对一个三维向量进行旋转缩放应该怎么办?显然,左乘一个旋转缩放矩阵R就可以了,例如式(1.1) 那如果想要对这个向量进行平移呢?当然,可以在式(1.1)的基础上加上一个 ...

  2. 【ArcGIS遇上Python】从入门到精通系列之第一章:ArcGIS Python简介

    文章目录 1. Python简介 2. Python的特点 3. ArcGIS的脚本语言 4. ArcGIS中的Python脚本编辑器 1. Python简介 Python是一种跨平台的计算机程序设计 ...

  3. 《Visual C# 从入门到精通》第三章使用判断语句——读书笔记

    第3章 使用判断语句 3.1 使用布尔操作符 布尔操作符是求值为true或false的操作符. C#提供了几个非常有用的布尔操作符,其中最简单的是NOT(求反)操作符,它用感叹号(!)表示.!操作符求 ...

  4. 【ArcGIS遇上Python】从入门到精通系列之第二章:ArcGIS Python基本语法基础速递

    Python的语法和其它编程语言的语法有所不同,编写Python程序之前需要对语法有所了解,才能编写规范的Python程序.本篇介绍Python标识符的同时,也讨论了Python变量的声明和赋值.通过 ...

  5. ArcGIS10从入门到精通系列实验图文教程(附配套实验数据持续更新)

    文章目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 本教程<ArcGIS从入门到精通系列实验教程>内容包括:ArcGIS平台简介.ArcGIS应用基础.空间数据的采集 ...

  6. SpringBoot从入门到精通教程(三十一)- 爬虫框架集成

    需求背景 SpringBoot用法:爬虫框架集成 业务场景 以抓取"今日头条"新闻举例说明 技术点 1. 集成爬虫框架webmagic(更多了解webmagic,可以去官方地址) ...

  7. OpenShift从入门到精通系列之一:通过OpenShift实现数字化转型

    OpenShift从入门到精通系列之一:通过OpenShift实现数字化转型 一.企业数字化转型之PaaS 二.企业数字化转型之DevOps 三.企业数字化转型之微服务 四.微服务架构的主要类型 五. ...

  8. Oracle 从入门到精通系列 - 前言

    Oracle 从入门到精通系列 - 前言 前言 一.需要具备的知识和工具 1.必须的 2.非必须的(能有最好) 二.大家能学到什么以及能学到什么程度 1.计划 2.能学到什么 3.能学到什么程度 三. ...

  9. 图解AI数学基础:从入门到精通系列教程(要点速查清单·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/83 声明:版权所有,转载请联系平台与作者并注明出处 引言 本系列教程展开讲解AI所需 ...

最新文章

  1. HDU 4466 Triangle(计数)
  2. 处理器仿存带宽_linux服务器CPU内存硬盘读写带宽等性能测试方法
  3. Matplotlib-scatter-绘制散点图
  4. 程序员法律考试笔记(1)-民法基本规定与调整范围
  5. wordpress archive.php,哪个网址将导致wordpress使用archive.php?
  6. Leetcode--50. Pow(x,y)
  7. mybatis和spring整合版本对应表
  8. 阿里工程师是如何系统化地总结缓存相关知识的
  9. 域控服务器取消验证_Linux 开发笔记《使用CentOS 7进行初始服务器设置》
  10. mysql 常用函数和关键字
  11. L2-011 玩转二叉树(建树+BFS)
  12. 使用C语言进行面向对象的开发--GObject入门[4]
  13. 安卓和php开发融云聊天室,聊天室
  14. 基于android的个人记账系统,android平台的个人记账系统的设计与实现.docx
  15. 误差的基本性质与处理matlab实验,误差理论与数据处理实验报告
  16. IBM GPFS并行文件系统
  17. oracle 多表去重sql语句,去重语句
  18. 贪心算法解决雷达站建站问题
  19. MATLAB 基础知识 数据类型 分组数组 创建分类数组
  20. Longest Word

热门文章

  1. 2017乌鲁木齐ICPC: I. A Possible Tree(带权并查集)
  2. Wannafly交流赛1: C. 腰带图(瞎搞)
  3. 手动绘制方向梯度直方图(HOG)
  4. ----流程控制-条件控制/循环控制\错误控制/程序终止控制
  5. labelme批量json_to_dataset转换
  6. ValueError: setting an array element with a sequence.
  7. 使用TASM时报错extra characters on line的解决办法
  8. 贺利坚老师汇编课程66笔记:自定义除法中断学习如何编制中断程序
  9. Fiddler抓包工具版面认识(一)
  10. 第六届中国云计算大会详细日程